可能重复:
为什么我的 RAM 有 4GB+,但 Windows 只显示 3.5GB 左右?
32 位操作系统机器能用完所有 8GB RAM + 20GB 页面文件吗?
正如你所看到的这张桌子,所有 x86 Win 7 版本的最大容量均为 4Gb。
这其中是否存在技术原因,还是仅仅是一种营销策略,目的是让人们购买更昂贵的操作系统?
答案1
业界似乎对通常所说的 Windows“4GB 内存限制”存在很多困惑。在谈论性能调优和服务器规模时,人们很快就会提到 32 位 Windows 系统上的应用程序只能访问 4GB 内存。但这到底意味着什么呢?
根据定义,32 位处理器使用 32 位来引用内存中每个字节的位置。2^32 = 42 亿,这意味着 32 位长的内存地址只能引用 42 亿个唯一位置(即 4 GB)。
在 32 位 Windows 世界中,每个应用程序都有自己的“虚拟” 4GB 内存空间。(这意味着每个应用程序的运行都如同拥有固定的 4GB 内存一样,并且系统的内存管理器会跟踪内存映射、哪些应用程序正在使用哪些内存、页面文件管理等。)
这 4GB 空间被平均分成两部分,2GB 专供内核使用,2GB 留给应用程序使用。每个应用程序都有自己的 2GB,但所有应用程序必须共享相同的 2GB 内核空间。
[编辑回复:PAE]
x86 处理器硬件架构增加了用于选择额外内存的额外地址线,因此物理地址大小从 32 位增加到 36 位。理论上,这可将最大物理内存大小从 4 GB 增加到 64 GB。虚拟地址的 32 位大小不会改变,因此常规应用程序软件继续使用具有 32 位地址的指令,并且(在平面内存模型中)虚拟地址空间限制为 4 GB。操作系统使用页表将这个 4 GB 地址空间映射到 64 GB 物理内存中。映射通常针对每个进程以不同的方式应用。这样,即使没有单个常规应用程序可以同时访问所有内存,额外的内存也是有用的。
答案2
是也不是。
本质上,32 位处理器只能处理4 GiB
RAM,因为只有2 ^ 32 = 4,294,967,296
不同的数字才能用 32 位来表示。
每当您在内存中存储某些内容时,您都需要保存地址以便能够读取或操作它。通常,CPU 仅使用一个寄存器(大小为 32 位)来存储此地址。由于只有2 ^ 32
不同的地址,因此超出标记的任何内容4 GiB
都未使用。
然而,有一些像物理地址扩展 (PAE) 这样的技术可以让 32 位操作系统寻址超过4 GiB
RAM 的地址。
操作系统将进程大大简化,将每个进程映射到内存的某个部分(称为页表)。每个进程仍然限制为4 GiB
,但这允许操作系统处理比 更多的内存4 GiB
。
32 位版本的Windows Server 2003 数据中心版例如,最多支持64 GiB
RAM。