32位系统支持大内存诸多问题

时间: 2009-09-27 / 分类: 硬件数码 / 浏览次数: 16,415 / 47个评论 发表评论

大内存时代这两天与似水无痕同学探讨了一个纯学术性的问题,就是32位系统到底能够支持多少的内存。刚开始我俩各执一词,都觉得自己掌握了真理,后来查找了一下资料,发现我们只是分别揭开了真理的半边面纱而已。

如今计算机发展已进入了大内存时代,不过32位系统已经从根本上制约了内存的增加,因为32位的系统,其寻址空间只能限制在2^32位=4GB之内,除掉系统占用的那些地址,能够寻址的内存空间大约只有3.25-3.75GB之间。这也正是我前几天毅然放弃32位安装了64位系统的原因,虽然32位系统可以识别4GB内存,不过却不能让它们完全派上用场。可惜的是我发现大部分常用程序还是运行在32位兼容模式下的,只有部分的软件提供了64位版本。不过这也足以让我欣慰了,毕竟所有内存空间终于派上用场了。

讨论

其实微软早就在 Windows 2003 时候,在服务器和数据仓库版本的系统中,通过一种叫做AWE(Address Windowing Extensions)的技术,通过动态映射的方式,将能够直接寻址的内存空间之内的地址,映射到32位系统能够直接寻址的3.X内存之内,间接的实现了32位系统对大内存的支持。

下面是网络上查到的资料

1、理论上32位系统理论上只能支持最高4G内存吗?
答:看起来是这样没错,但微软已经告诉我们事实并非如此–企业版、数据中心版的Windows分别支持最大32G和64G内存。

2、我的计算机有4G内存,可为什么系统告诉我内存只有3.x G?
答:由于部分主板芯片组将其他硬件的物理地址映射在4G内存地址内进行管理,使得这些计算机通常能识别并使用最大内存容量在3.25-3.75G之间。如果要让系统识别出完整的4G内存,你的主板必须支持一种叫做”PAE(物理地址扩展)”的技术。

3、我的主板支持PAE,为什么还是无法使用全部的4G内存?
答:这是因为操作系统的限制,目前32位的Windows里,只有服务器版本(2003/2008)支持4G或以上的内存(Windows Server 2003 Web版只支持2G内存),并且需要在系统的启动项末尾添加/PAE选项(在boot.ini中编辑)。

4、32位系统下,单个进程能够访问的内存最大是多少?
答:32位Windows操作系统下单个进程用户模式内存访问的限制是2G,如果在boot.ini中设置了/3G开关,则最大为3G,超过3G将无法访问。

5、如何让单个进程访问大于2G/3G的内存?
答:32位操作系统下只有通过 AWE的方式来扩展内存。AWE (Address Windowing Extensions)是 Windows 的内存管理功能的一组扩展,它使应用程序能够使用的内存量超过通过标准 32 位寻址可使用的 2-3 GB 内存。AWE 允许应用程序获取物理内存,然后将非分页内存的视图动态映射到 32 位地址空间。虽然 32 位地址空间限制为 4 GB,但是非分页内存却可以远远大于 4 GB。这使需要大量内存的应用程序(如大型数据库系统)能使用的内存量远远大于 32 位地址空间所支持的内存量。
(下图所示AWE 实际上就是将用户模式下的32位内存地址映射到用户需要访问的物理内存上去。不同操作系统运行被映射的物理内存大小是不一样的。)

AWE

Powered by Zoundry Raven

Del.icio.us : ,
Technorati : ,

47个评论

发表评论

您的昵称 *

您的邮箱 *

您的网站