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

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

我已经安装了一个32位 RHEL操作系统在一个64位系统。

从维基页面PAE:

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

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

2.6.32-431.17.1.el6.i686

问题1

内核版本是否意味着如果我添加另一个24GB RAM 到我已有的8GB RAM,整个32GB物理内存将变得可用吗?

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

问题2

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

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

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

这是否意味着,在任何时间点,只能有最大的3主存GB?

我想自从我有了32GB内存随时可用32GB 数据可以驻留在主存储器中。特别是,我试图理解来自的答案这里:

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

答案1

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

我对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 个额外停车位),您的汽车是否会变得更快?

答案2

拉梅什的回答是完全错误的。一个进程不能拥有比地址空间更多的内存,仅仅是因为它无法寻址!要使用超过 4GB 的内存,进程需要通过地址来访问它,就像在 C/C++ 中使用 ponters 一样。例如,如果您可以拥有 10GB RAM,那么如果您的 32 位指针最多可以达到 4GB,那么您如何告诉进程访问位于 5GB 的数据呢?不可能。他的所有解释都与操作系统有关。它最多可以从 64GB 池中激活某些 4GB 的块。因此总有 4GB 最大并发数,并且任何进程最多可以访问 4GB。然后,对于不同的进程,SO 可以从池中激活不同的 4GB 块,但该进程将再次被限制为 4GB。实际上,尽管 32 位指针最多可以寻址 4GB,但 32 位进程的限制是 3GB。

相关内容