首页 IT技术 热点问题 查看内容

32位Windows支持128GB内存的原因

热点问题 4230 0 2010-11-29 13:09

话说4GB普及已经不是什么新鲜事,更大12GB以及16GB内存在网吧服务器上应用也不是什么新闻。而出于兼容性的考虑,目前大多数网吧客户机以及服务器都是采用的32位操作系统。而同样是32位操作系统,为什么服务器版本的W ...

话说4GB普及已经不是什么新鲜事,更大12GB以及16GB内存在网吧服务器上应用也不是什么新闻。而出于兼容性的考虑,目前大多数网吧客户机以及服务器都是采用的32位操作系统。而同样是32位操作系统,为什么服务器版本的Windows Server 2003就能支持大内存,而Windows XP最多只能支持4GB内存,但Windows往往会保留一部分内存地址,所以32位的Windows XP往往最多只能使用3.25GB或者3.5GB内存。但是Windows Server 2003却能完美支持大内存,这是为什么呢?在具体说明原因之前,我们来看看微软官方给出的各版本Windows最大内存支持情况:

操作系统

最大内存

Windows 2000 Advanced Server

8 GB of physical RAM

Windows 2000 Datacenter Server

32 GB of physical RAM

Windows XP (all versions)

4 GB of physical RAM*

Windows Server 2003 (and SP1), Standard Edition

4 GB of physical RAM*

Windows Server 2003, Enterprise Edition

32 GB of physical RAM

Windows Server 2003, Datacenter Edition

64 GB of physical RAM

Windows Server 2003 SP1, Enterprise Edition

64 GB of physical RAM

Windows Server 2003 SP1, Datacenter Edition

128 GB of physical RAM

从这个列表看出,Windows Server 2003最高端的版本Datacenter Edition最高可以支持到128GB内存。而家用版的Windows XP只能支持到4GB。同出于NT 5.0内核的操作系统,既然Datacenter能支持到128GB说明32位系统最大的4GB寻址能力显然不是制约系统使用物理内存的瓶颈,而Windows是如何实现这一点的呢?

首先我们来看Windows是如何使用物理内存的。我们知道,Windows使用内存不是直接根据程序请求去直接为程序分配物理内存,而是采用虚拟地址映射的方式为应用程序分配内存。应用程序提出使用内存的请求,是通过访问一个32位虚拟地址实现的。每一个“页面”是Windows管理内存的基本单位,每个页面的大小为4KB,这意味着每个页面需要12位二进制码去表示页面内每个字节的地址。32位地址空间中,还剩下20位地址,它们又被分为了10位页面索引以及10位页目录索引(“索引”就是指的序号)。所有索引对应的页面物理地址以及其他标示信息的集合称为“页表”,独立存放在内存中。而每个目录索引对应一个页表所在的物理地址。所有页表的物理地址及其相应信息构成了“页目录”。Windows使用内存,就是先通过目录号查找页表,再在页表中找到页号对应的物理内存页面地址,最后通过业内地址读取内存中一个字节的数据。

当然从中我们不难看出,此时Windows还是只能寻址4GB空间的。

以上的情形是Windows没有开启PAE(物理地址扩展)的情况。如果Windows开启了物理地址扩展,情况就有变化了。虽然还是使用了32位虚拟地址,而除了将虚拟地址分为上述的三个部分外,又多出了一个页目录指针占两位,页目录号变为9位,这就变成了四级结构,当然了,有了这些还不足以让Windows支持超大内存。真正的原因是,在没有开启PAE的情况下,页面中Windows标示每个内存页面的物理地址是用20位二进制地址,而在PAE模式下,每个页面会用25位二进制码标示页面的物理地址,于是最多可以支持32M个页面,而每个页面的大小是4KB,于是,Windows就获得了128GB的内存地址寻址能力。这也就是为什么即使是32位的Windows,也可以支持超过4GB内存的原因。

1

路过

雷人

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

  • 路过

    匿名

相关文章