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

时间: 2009-09-27 / 分类: 硬件数码 / 浏览次数: 14,481 / 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 : ,

历史上的今天

2016年:2016年5月·山大软件学院(26条评论)

2015年:快乐星期天381期:娱乐圈(28)(31条评论)

2013年:终于,《凡人修仙传》大结局(61条评论)

2011年:在AVD上安装体验Android应用(APK)(41条评论)

2008年:我宣布:十一假期开始了(0条评论)

47个评论

  1. lovee
    2009/09/27 18:34:48

    已经正式换上64位系统了(虽然内核偶使用的是32位模式),于是不管这个问题了XD

  2. mimzyx
    2009/09/27 19:34:36

    闭着眼镜路过。。

  3. 起衣
    2009/09/27 19:38:17

    恩呐,早进入64bit阵地叻,office 2010 都上64bit叻,越来越好的~~

  4. Hobo
    2009/09/27 19:56:53

    一看,立刻明白了

  5. phenix
    2009/09/27 20:06:29

    太深奥了

  6. engic
    2009/09/27 20:13:17

    这个问题以前模模糊糊的大概了解,没想这么清楚,我家电脑本身就是32位……太老了,看了以后明白了为什么服务器支持大内存了。

  7. XJP
    2009/09/27 20:20:39

    反正就是理论上不超过4G,普通用户或者游戏玩家应用64位操作系统的另外一个重要障碍来自于应用程序的兼容性问题,大多数软件可以在64位环境下运作良好,但是仍然有相当数量的游戏和应用程序存在兼容性问题,如果要迎来64位时代,应用程序必须第一个做好准备。

    • Louis Han
      2009/09/27 20:33:19

      @XJP, 是啊,我现在用64位系统,但大部分软件还是32位兼容的

  8. A.shun
    2009/09/27 20:45:21

    研究得挺透彻嘛
    不过就目前的程序来说3G和4G其实差距不大
    可以用剩下的1G来做虚拟盘
    放cache,可以稍微加快读取速度和保护硬盘

  9. SunQ
    2009/09/27 21:00:17

    学术!
    我的电脑不需要支持大内存,因为我的内存才1.5G……

  10. 唯美国度
    2009/09/27 21:09:27

    见过关于这个的文章,感觉吧,这个内存对电脑的影响不是那么明显,把虚拟内存调一点,应付一般的东西没问题的

  11. wayne
    2009/09/27 21:09:44

    好像这个和芯片组也有关系的,fsb 667mhz只能支持到3g

    • Louis Han
      2009/09/27 21:35:23

      @wayne, ⊙﹏⊙b汗,第一次听说这种观点,好像不符合科学。。。

  12. 无疆
    2009/09/27 21:13:47

    我的电脑好像最大支持4G内存,现在是2G

  13. zwwooooo
    2009/09/27 21:19:59

    老问题了,32位就别上4G内存,应该也不是这样定义,应该是win2003下的32位操作系统就别上4G内存,上了也没用

  14. SunQ
    2009/09/27 21:46:07

    据说最近内存涨钱……
    而且,我也没钱了

  15. kevinsnow
    2009/09/27 22:06:23

    我覺得現在2G內存足夠了
    曾經裝過64位的WIN7 沒特別研究過

  16. mfkof
    2009/09/27 22:38:25

    32位认不了的部分就虚拟成磁盘用了吧···

  17. SunQ
    2009/09/27 22:50:06

    百十块钱对于我来说,也是一笔很浩大的数额呀

  18. SunQ
    2009/09/27 22:52:49

    呃……不是学生,最近在装修房子……

  19. nicidoggy
    2009/09/27 22:58:57

    技术流。。。。。。。

  20. derek
    2009/09/27 23:34:40

    没用过64位的系统,首先硬件就不支持了

  21. SunQ
    2009/09/28 22:00:30

    差不多了,就差入住了

  22. 风也飘泊
    2009/09/30 17:16:09

    要是我平时使用的这些软件儿,都宣布支持64位了的话,那我就用64位去了

    现在想用也用不了

  23. beyonndme37
    2011/09/08 09:46:10

    昨天加内存来着,本来想买个4G的,加上原来的2G,应该够用了。后来才发现32位的只能识别4G……

发表评论

您的昵称 *

您的邮箱 *

您的网站