Windows对于物理记忆体的支持,要受到诸如硬体限制、许可、作业系统数据结构,以及驱动程式的兼容性等方面的综合影响。MSDN网站的Memory Limits for Windows Releases文章对不同Windows版本、以及同一个版本的不同SKU的限制进行介绍。
我们可以查看所有Windows版本的不同SKU的物理记忆体支持许可。例如,32位Windows Server 2008标準版仅支持4GB,而32位Windows Server 2008数据中心版支持64GB。类似的,64位Windows Server 2008标準版支持32GB,而64位Windows Server 2008数据中心版支持2TB。记忆体,不过Windows Server性能产品组知道有两台伺服器拥有那幺多的记忆体,其中一台位于某地的实验室。该伺服器的任务管理器如下图所示:32位的最大限制是128GB,Windows Server 2003数据中心版可以支持,这是因为在大记忆体的系统上,记忆体管理器用来追蹤物理记忆体的结构,需要消耗更多系统虚拟地址空间。记忆体管理器把每个记忆体页的追蹤数据保存在叫做PFN资料库的数组中,而且考虑到性能因素,会把整个PFN资料库映射到虚拟记忆体中。因为它用28位元组的数据结构来代表每个记忆体页,128GB系统的PFN资料库需要将近930MB的空间。32位Windows拥有4GB的虚拟地址空间,由硬体所定义,默认划分为两半,其中一半供用户模式进程(例如Notepad)所使用,另一半供系统所使用。因此980MB的容量就要占据将近一半的系统虚拟地址空间(共2GB),只剩下约1GB空间可以用来映射核心、驱动程式、系统快取和其他系统数据结构:微软工程师
记忆体限制
64位Windows客户端,不同SKU的记忆体支持也有所不同,Windows XP Starter版的记忆体支持最低,仅512MB,而Windows Vista旗舰版的记忆体支持最高,可达128GB。但是所有版本的32位Windows客户端SKU,包括Windows Vista、Windows XP和Windows 2000 Professional,最大支持4GB物理记忆体。标準的X86记忆体管理模式,最大可以支持4GB的物理地址访问。在早期,并不需要考虑在客户端提供超过4GB的支持,因为当时很少有计算机配备那幺高的记忆体,哪怕是伺服器。
但是在Windows XP SP2开发的过程中,已经可以预见客户端计算机将会配备超过4GB的记忆体,所以Windows产品组对超过4GB的Windows XP计算机进行大量的测试。Windows XP SP2还支持物理地址扩展(PAE)功能,该功能本来是为了在硬体上实现非执行(NX)保护,因为这是数据执行保护(DEP)的必要条件,但是该功能还可以支持超过4GB的记忆体。