Windows XP PAE 物理地址扩展模式

  | 转载时请务必以超链接形式标明文章原文链接和作者信息及本版权声明。
原文链接:http://www.liaojl.com/archives/2008/11/windows-pae.html

笔记本上安装了两根2G内存,在系统属性中只显示3.48G,这个问题以前在安装RedHat Linux Server 5时碰到过,后来安装PAE内核模块解决。

PAE允许软件使用地址窗口扩展(AWE) API集并在具有Intel Pentium Pro或更高版本处理器的计算机上运行,而4 GB以上物理内存允许将更多物理内存映射为应用程序的虚拟地址空间。

那么Windows XP是否也能支持PAE模式呢?答案是肯定的。在系统启动文件boot.ini中添加参数,可以让Windows系统支持更多的内存空间。

开始 -> 运行,输入命令:

notepad c:\boot.ini

添加PAE启动参数:

[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="..." /noexecute=optin /fastdetect /pae

随着硬件越来越便宜,桌面系统很快就会超过4G以上内存,看来很快64位操作系统就会普及开了。

4 Comments

只想问你一句,你真的试了吗?

如果是转载,请注明转载二字,这样即使文章错了,也不会把账算在你的头上。
但像这类误导人的文章,存在于网上,还不知道要接下去给多少人带来麻烦!

WinXP的PAE参数确实存在,但不能断章取义的猜测它的功能。
它是用于打开PAE方式的内存访问,给驱动程序调试人员服务的,
但在WinXP中即使打开了PAE,由于兼容性限制,系统仍然只能访问最大4G的空间,这其中还要减去显卡等设备的映射区域,真正能够访问的内存仍然是你原来的3G多。

不相信的话你可以一试便知。

还是那句话,转载没有错,但要注明转载二字,如果不注明的话,大家会觉得这是你的真实经验,认为你真的已经是成功了。
同时这也是对原作者的尊敬。

另外BS那个冒充专家的原作者。

很感谢你写了这么多,我日志里面的所有日志,如果内容是转载的,我都会写上转载并标注原帖地址。

诚然我不是Windows的专家,文章开头我也提到Linux上面我是这样解决的,而且后来我系统就换成Win7,所以我对PAE没有深入研究,写这篇日志只是为了方便以后查询。

不过既然有人提出了异议,那么肯定要搞清楚来龙去脉,这个评论就当做日志的补充吧。

首先,参考微软的文档:

http://www.microsoft.com/whdc/system/platform/server/pae/paemem.mspx

文章开头提到:

Operating systems based on Microsoft Windows NT technologies have always provided applications with a flat 32-bit virtual address space that describes 4 gigabytes (GB) of virtual memory. The address space is usually split so that 2 GB of address space is directly accessible to the application and the other 2 GB is only accessible to the Windows executive software.

这里我想起来之前在安装Oracle到Linux上面时,需要改动内核参数的情形。如果系统没开启PAE模式,应用程序只能访问前面2GB的地址空间,剩余的2GB空间只能给Windows executive software使用。

如果你能好好的读下前面提到的微软文档,就会明白地址扩展是什么意思,不要被国内某论坛的某个碰到问题还要请教MVP的小孩误导,更加不是给驱动程序调试人员服务的。

中午无聊和朋友讨论了一下,又有一些收获。

XP/Vista也能够支持超过4GB的内存,据说是因为Mircosoft License的限制,网上还有破解方法,Mark一下这篇文档,以后有机会试试。不过是否会带来稳定性问题就不知道了,支持大内存最好还是64bit系统比较保险。

http://www.geoffchappell.com/viewer.htm?doc=notes/windows/license/memory.htm

64位系统中,运行32位程序同样也会有无法寻址超过2GB内存的问题,下面这个工具可以帮助应用程序解决寻址问题:

http://www.ntcore.com/exsuite.php

博主,首先你要弄清楚一个问题,你给出的那片微软的文章中所说的"memory"是什么意思.
这个memory并非指的你插在机器上的内存大小,而是指的系统(xp,win7,*nix or what ever)的寻址范围.
32位系统在不启用PAE支持的情况下最大进行4GB范围内的寻址,这是没问题的.
但是,系统能进行4gb寻址并不代表系统能够完全利用插在机器上的4gb内存.
why?因为这4gb寻址范围内还有另外一个东西:接口寻址范围.
接口寻址范围大概占了740m到750m.
4GB寻址能力-750m接口寻址范围=3.25GB.
这就是32位xp中3.25gb限制的来源.(有时也是3.24gb,看人品哦)

当你仅仅使用3gb,2gb或者更少的内存条时,这个问题不会显现,
因为内存条的大小+接口寻址范围

说到这里,博主你可能会说,既然32位系统不能完整识别4gb内存"条",那我开启/PAE参数不就行了?
不过很可惜,32位xp是不支持/PAE参数的,这个参数仅仅在windows server 2003中的某些版本中有效.在xp的启动参数加上/PAE也是无用功.

Leave a comment

Archives

Creative Commons License
This blog is licensed under a Creative Commons License.