4G内存终于彻彻底底、完完全全的用上了

网上盛传一种打开PAE的方法来让系统识别4G内存。注意,这仅仅是识别,并不是使用。我们可以在任务管理器当中看到实际能够使用的内存总量;还有种方法是利用RAMDISK这款软件将不能使用的内存虚拟成为一块硬盘,但经过我的实际测试,内存硬盘所占用的内存空间依旧是在系统能够识别的3.3G中,也就是说依照网上的方法,剩下的内存是无论如何都无法利用的。 那么为什么同样是32bit的server系统就能够识别并使用4G甚至于更多的内存呢?[separator]
前两天在网上闲逛,发现一篇文章
[url]http://www.geoffchappell.com/viewer.htm?doc=notes/windows/license/memory.htm[/url]
发现造成这个限制的实际上是 Vista 的许可证限制!简单来说,vista/2008 内核在启动初期会调用 MxMemoryLicense 未公开 API 函数来确定系统“许可(licensed)”使用的最大内存数量;而 MxMemoryLicense 则会查询 tokens.dat 和 pkeyconfig.xrm-ms 两个文件确定系统的许可证(桌面系统还是服务器系统),接下来再根据许可证类型确定支持内存的最大值。如果系统内存大于根据许可证确定的值,则在内核启动时多余的内存就会被完全忽略掉。这也就是造成 32 位 Vista 不能使用 4G 或以上内存的根本原因。 这里Geoff Chappell给出了两种解决方法
一种是替换授权,将 Vista 中的 C:\ Windows\ ServiceProfiles\ NetworkService\ AppData\ Roaming\ Microsoft\ SoftwareLicensing\ tokens.dat 文件和 C:\ Windows\ System32\ licensing\ pkeyconfig\ pkeyconfig.xrm-ms 文件分别用 Server 2008 中的同名文件替换。之后再启动系统时内核就会误认为启动的是 Server 2008 系统,而消除 Vista 许可证对内存的限制。但是这样一来很多系统服务和系统组件也会按照 2008 的方式来运行,造成很多不兼容性。 另外一种是Patch Vista的kernal。这种方法难度较大,但是处理过后不兼容性倒小很多。有兴趣的话可以参考一下Geoff Chappell的文章。我测试后发现系统确实能够识别并使用到我的全部4G内存,但发现貌似Patch Kernal后与我的Deamon Tools 4.10有冲突,加载不了虚拟盘符。且一旦当我卸载Deamon Tools 4.10时系统即会蓝屏。随即启动到未Patch kernal的系统下卸掉4.10,转而在Patch过的系统下重新安装新版本4.30.4,问题完美解决。美中不足的就是这样一来实际上已经侵犯了微软的授权许可,也就是说我现在的操作系统实际上是盗版。。。而且桌面会出现测试模式的字样。。。 [img][attach]1[/attach][/img] 管他呢,能完全利用到我的所有内存,为什么不用呢? ]]>