首先,32位代表物理地址寻址能力,就是2的32次方,刚好4G Byte,所以32位的操作系统不能访问4G以上的物理地址空间。这里没有说内存地址,因为系统不只与内存打交道,还有很多其他软件硬件设备,要与这些设备交换数据,也需要占用物理地址空间。每个设备需要多少物理地址空间,是由设备本身和驱动程序决定的。
再说CPU,从Pentium Pro处理器开始,CPU的地址总线已经升级到36位,寻址能力达到64GB,这个36位功能特性被称为物理地址扩展(PAE),个人版的32位操作系统不支持CPU的PAE功能,所以,WindowsXP(Vista)32位版就被限定了可访问的物理地址空间总量不能超过4G。但Windows2000Server系列,Windows2003系列的32位版本提供了对PAE的支持,所以允许访问到高达32G的内存(不同服务器版本还有不同的限制)。
英特尔主板在BIOS打开pae开关开启物理地址扩展,同时您的主板要支持内存地址重映射功能并在bios开启后,就完全可以用大内存了。
对于因特尔平台,如果主板内存控制器不支持内存地址重映射,无论您使用何种32位的操作系统(包括Server2003/2008),都无法支持大内存,情况和xp一样的。除非您用64位的系统。而对于AMD平台,因为AMD 64位处理器就集成了内存控制器(连那种低端的贱价的闪龙64都支持),并且支持地址重映射,因此在amd64平台比较好解决问题,不必依赖芯片组支持。
物理地址扩展 (PAE) X86 允许软件使用地址窗口扩展 (AWE) API 集并在具有 Intel Pentium Pro 或更高版本处理器的计算机上运行,而 4 GB 以上物理内存允许将更多物理内存映射为应用程序的虚拟地址空间。
在采用支持非执行页面保护功能的处理器的计算机上启用 DEP 时,在运行装有 Service Pack 1 的 Windows Server 2003 和装有 Service Pack 2 的 Windows XP 的计算机上将自动启用 PAE。
另外需要补充一句,32位的应用程序在开发的时候程序运行在用户模式下。内存访问地址就会被限制在低位(具体是高位还是低位我忘记了)2GB内(按照4GB理论计算另外2GB供内核模式下的程序使用),所以即便你的内存超过了4GB,也是白白浪费,因为程序根本不会去使用。
本帖最后由 z00w00 于 2011-12-7 19:48 编辑