32 位 RHEL 6 系统可用的最大内存

Ram*_*esh 6 linux process rhel memory pae

我在64 位系统上安装了32 位 RHEL 操作系统

PAE的维基页面:

Linux 内核从 2.3.23 版开始包括完整的 PAE 模式支持,Linus Torvalds 提到 PAE 在 1.3.15 中的 4 MB 页面支持,[18] 允许在 32 位机器上访问高达 64 GB 的内存。

其中一台服务器的当前内核版本是:

2.6.32-431.17.1.el6.i686
Run Code Online (Sandbox Code Playgroud)

问题 1

内核版本是否意味着如果我在现有的8 GB RAM 上再添加24 GB RAM,整个32 GB 物理内存将变得可用?

目前系统显示有8 GB RAM 可用(我使用free命令来检查它)。

问题2

我仍然对虚拟内存概念感到困惑。

32位系统将如何使用虚拟内存?

我读到32 位RHEL 将使用3 GB的内存块。

这是否意味着,在任何时候,主内存中最多只能有3 GB?

我想,因为我有32 GB 的内存,所以32 GB 的数据可以驻留在主内存中。特别是,我试图从这里了解答案:

每个进程都在自己的地址空间中运行,并且 32 位将每个进程的地址空间限制为大约 3GB。32 位应用程序使用的内存总和完全无关。没有什么可以解决的。

Ram*_*esh 2

好吧,我不希望得到比这里提供的更简洁的答案。

我对32位操作系统的理解是,地址以32位表示,因此操作系统最多可以使用2^32 = 4GB内存空间

该进程最多可以寻址4GB。您可能会将内存地址空间混淆。 进程可以拥有比地址空间更多的内存。这是完全合法的,并且在视频处理和其他内存密集型应用程序中很常见。 一个进程可以分配几十GB的内存,并随意将其换入或换出地址空间。一次 只能进入用户地址空间 2 GB。

如果您家里有一个可停放四辆车的车库,您仍然可以拥有五十辆车。你只是不能把它们全部放在你的车库里。你必须在其他地方有辅助存储来存储至少 46 个;您将哪些汽车停在车库中以及将哪些汽车停在街边的停车场中,这一切都取决于您。

这是否意味着任何32位操作系统,无论是Windows还是Unix,如果机器的RAM +硬盘上的页面文件超过4GB,例如8GB RAM和20GB页面文件,永远不会“内存用完”?

绝对不是这个意思。单个进程可能使用比这更多的内存!同样,进程使用的内存量几乎与进程使用的虚拟地址空间量完全无关。就像你车库里的汽车数量与你拥有的汽车数量完全无关一样。

而且,两个进程可以共享非私有内存页。如果二十个进程都加载相同的 DLL,则这些进程都共享该代码的内存页。它们不共享虚拟内存地址空间,而是共享内存

我的观点是,如果不清楚的话,您应该停止将内存和地址空间视为同一件事,因为它们根本不是同一件事。

如果此 32 位操作系统计算机具有 2GB RAM 和 2GB 页面文件,则增加页面文件大小不会对性能有所帮助。这是真的?

您有 50 辆汽车和一个可容纳 4 辆车的车库,街边还有一个可容纳 100 辆车的停车场。您将停车场的大小增加到 200 个停车位。由于您现在拥有 150 个额外停车位(而不是 50 个额外停车位),您的汽车是否会变得更快?