为什么我们的 centOS i686 服务器显示有 14 GB 可用 RAM

为什么我们的 centOS i686 服务器显示有 14 GB 可用 RAM

我们在刀片服务器上安装了 CentOS 服务器 6 i686(由以前的员工安装),该服务器具有 32GB RAM(4GB x 8 个插槽)。
可用 RAM 为 14GB。

我的问题是为什么它显示 14GB 而不是 4GB,而 4GB 是 32 位操作系统的最大容量。
我可以从 4 个插槽中移除 RAM,这样总共有 16GB RAM,那么可用的 RAM 是多少?

答案1

而不是 4GB(32 位操作系统的最大容量)。

Linux(以及大多数操作系统)上的程序不直接处理物理内存——它们使用虚拟地址,这些虚拟地址由硬件根据操作系统配置的映射进行转换。

因此,尽管 32 位系统使用 32 位指针并且程序无法看到超过 4 GB 的虚拟内存一次,页表(虚拟到物理内存映射)实际上可以表示比这更长的物理地址。相应的 x86 功能称为物理地址扩展) 并允许这些映射解析为 36 位物理地址。

这意味着您可以同时将多个进程映射到物理空间(最多 64 GB)中的不同虚拟 4 GB 区域。(如果您在 64 位操作系统上运行 32 位进程,也会发生同样的情况。)


类似地,16 位系统可以通过诸如分段(在 8086 上允许有效的 20 位物理地址)或存储体切换(允许将相同的内存地址重新映射到不同的物理区域,例如 C64 或 MS-DOS XMS/EMS)等技巧使用超过 64 kB 的物理内存。

相关内容