4G纯属浪费,有钱也别烧!32位Vista只支持3G内存 - 剑情浪子 - cpubbs论坛免费虚拟仪器博客 labview虚拟仪器讨论区 - cpubbs论坛 虚拟仪器论坛|labview论坛|labwindows论坛|vi|cvi|数据采集卡|入门教程|初学|软件下载|虚拟仪器免费博客|虚拟仪器电子商务|虚拟仪器商城|虚拟仪器人才中心|图形化单片机编程cpuview|虚拟仪器在线商城 - Powered by X-Space
方寸间,历数世上沧海桑田;时空里,细问人间暑往寒来;是朋友,星移斗转情不改;是知音,天涯海角记心怀。

4G纯属浪费,有钱也别烧!32位Vista只支持3G内存

上一篇 / 下一篇  2007-09-10 10:33:08 / 个人分类:转贴

首先申明一点,我这里只讨论vista 32bit,原因不说了:很多多媒体硬件恐怕连64bit驱动都找不到.

因为自己常用VMWare虚拟机做开发测试,所以对内存的需求一直比较大,在WinXP下2G内存勉强够了,毕竟内核什么的占用也不多,剩下1G用于跑VM也是可以的。最近因为把U折腾到3G双核,想想不上Vista实在可惜,所以就升级到Vista旗舰版(已激活),但是Vista下跑VMWare,2G内存实在捉襟见肘,内核基本就霸占1G(刚开机800M,但跑一会随便就到1G了),剩下几百MB实在不够用,所以就打算升级到4G内存,因为之前也听说32位操作系统对4G支持不完全,所以这段时间花了很多时间翻阅了很多资料,终于把事情搞清楚了……

1.所有32位Windows中,只有Win2003 SP2 (必须SP2)可以支持4G内存,但不是完美的,为啥呢?因为它是通过PAE模式实现的,这种模式实现可以利用到更大的内存,但利用效率比64位windows要低!

2.很多网上流传的说法是可以通过添加启动参数:bcdedit  /set pae ForceEnable 来实现访问4G内存,但是实际呢?实际上无论是理论还是实践都不支持这个说法,很多人试过之后丝毫没有作用,仍然是显示3G~3.5G(由系统安装的PCI硬件数量不同而改变,设备越多显示的值越少),为什呢? 下面引用MSDN的原文:(http://msdn2.microsoft.com/en-us/library/aa906211.aspx)

Windows automatically enables PAE when the computer is configured for hot-add memory devices in memory ranges beyond the 4 GB region, as defined by the Static Resource Affinity Table (SRAT). Hot-add memory supports memory devices that you can add without rebooting or turning off the computer. In this case, because PAE must be enabled when the system starts, it is enabled automatically so that the system can immediately address extended memory that is added between restarts. Hot-add memory is supported only on Windows Server 2008, Enterprise Edition, Windows Server 2003, Enterprise Edition and Windows Server 2003, Datacenter Edition, and only on computers with an ACPI BIOS, an x86-based processor, and specialized hardware. 

也就是说,PAE是可以实现32位windows利用4G内存,但前提是拥有服务器版本的OS+特殊的硬件(我们可以理解为服务器级别的)支持才可以做到而不适用于我们的PC,而/set pae ForceEnable又是什么用呢?下面引用MSDN的原文:(http://msdn2.microsoft.com/en-us/library/aa906211.aspx)

On a computer that supports hardware-enabled Data Execution Prevention (DEP) and is running a 32-bit version of the Windows operating system that supports DEP, PAE is automatically enabled when DEP is enabled and, on all 32-bit versions of the Windows operating system, except Windows Server 2003 with SP1, PAE is disabled when you disable DEP. To enable PAE when DEP is disabled, you must enable PAE explicitly, by using /set nx AlwaysOff and /set pae ForceEnable.

意思是说,由于DEP(数据执行保护)关闭后PAE会自动关闭,但是如果用户需要在关闭DEP同时仍然需要打开PAE,才需要使用/set pae ForceEnable !! 而不是很多人理解的只要用这个参数就可以支持4G内存!

至于我们关心的,Vista 32位版本在我们的PC机上能支持多大的内存呢? 答案是3,120 MB,也就是3.05G!原因很简单,因为考虑到PCI设备(例如显卡,声卡,网卡等等)占用的寻址范围,Vista32保留了接近1G的内存地址空间来保证这些设备的兼容性(虽然你的机器可能很多地址未被使用),也就是说,无论你看到系统属性里是3G还是3.5G,实际可以使用的内存都是3G ! 而且微软给家庭用户给出的建议是要使用4G或以上的内存,必须使用Windows2003或者XP和Vista的64位版本。(MSDN原文见http://support.microsoft.com/?kbid&id=929605)

另外需要注意一点的是,安装3G内存后不表示就可以使用这么多,因为32位windows默认应用程序只能使用2G内存,剩下的都保留给系统内核了,因此还需要添加启动参数:"bcdedit  /set increaseuserva 3072" 来使得windows把2G以上的内存也分配给应用程序!


OK,说了这么多,大家应该很清楚了,不要因为内存便宜或钱多就上4G,因为总会浪费1G的(当然要不在乎这点钱我也没办法),像我就加了1G,一共3G,一点也不浪费多好啊 呵呵 (唯一缺点是3G的DDR2无法实现双通道)

TAG:

风定云远 引用 删除 wdyjz   /   2007-09-10 22:21:57
原来还有这个道理,学了一招
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar