PctGL SERIES  
http://pctgl.cnblogs.com


[又转来一篇好文章,专门讨论 Win32 的 4GB 物理内存的应用问题]


win2003 winxp win2k 4GB内存的访问问题


  启用物理地址扩展 (PAE) X86
  1.打开 Windows 资源管理器。
  2.在“工具”菜单上,单击“文件夹选项”。
  3.在“查看”选项卡上,单击“显示所有文件和文件夹”,清除“隐藏受保护的操作系统文件”复选框,
    然后单击“确定”。如果显示警告对话框,单击“是”以继续。
  4.在根文件夹(如 C:)下查找 Boot.ini 文件并删除它的只读属性。
  5. 打开 Boot.ini 文件,然后将 /PAE 参数添加到 ARC 路径中,如以下
     Windows Server 2003 Datacenter Edition 示例所示:
        multi(0)disk(0)rdisk(0)partition(2)\%systemroot%=
                             ”Windows Server 2003, Datacenter Edition” /PAE
  6.在“文件”菜单上,单击“保存”。
  7.还原 Boot.ini 文件的只读属性。
  8.为使更改生效,请重新启动计算机。
 
注意

要执行该过程,您必须是本地计算机上 Administrators 组的成员,或者您必须被委派了适当的权限。
如果计算机已加入某个域, 则 Domain Admins 组的成员可能会执行该过程。
作为安全性最佳操作,请考虑使用“运行方式”执行此过程。
详细信息,请参阅默认本地组、默认 组以及使用“运行方式”。

64位系统出来以后,不会再出现这样的情况了,
32位的里面也有一些版本是直接可以识别的,例如数据中心版,高级服务器版好象也可以


在windows2003企业版下打开PAE开关使用4G内存会花屏?

4G内存是32BIT物理内存寻址的极限!在你的32bit系统的2003上很容易出现问题!
而PAE的打开只有在64BIT系统上才能完全发挥其作用! 
该问题的出现,除去显卡本来质量的原因,问题出在系统和驱动上!
建议使用64BIT的操作系统,或更新最新的显卡驱动来解决!也可以降低显卡的物理加速,来解决!

 


准备升级4G内存容量的朋友们,来看看



对于准备升级3GB以上容量内存的用户,我们总结以下几点供大家参考。

第一,Intel包括945、965、975都需要在BIOS中打开Memory Remap
Feature 选项
    (设置为Enable),才可支持4GB或以上容量的内存。
     而在默认的Disable下是无法识别3000M以上容量的。

第二,NVIDIA nForce5和nForce6系列,在搭配包括Intel CPU,和AMD Sempron(Manila核心)
     Athlon64X2(Brisbane、Windsor核心)时,均可以正常支持4GB容量内存。

第三,WindowsXP SP2 32bit、WindowsVista 32bit 均无法使用3GB以上的容量。
     Windows2003Server,可以正确识别4GB容量。

第四,CPU-Z在已上各种情况下,均可以正确识别4GB甚至已上的内存容量;
     Windows 系统信息中的Total Memory中也始终可以正确识别4GB及以上容量。
     但我们需要观察的是Available Memory Size,这才是系统真正可用的内存。



    最 后,我们可以看到4GB或以上内存,对于目前主流平台来说遇到的问题在于软件操作系统上。
在Windows XP SP2 32bit和 Windows Vista 32bit下,4GB内存都无法被完全使用,
而让普通用户去安装Windows2003 Server 32bit甚至 64bit操作系统,可能还不够方便。





4GB的系统地址空间中,PCI内存范围占用了大量的地址范围——接近750MB,
导致最后系统内存只有3.25GB的罪魁祸首就是这部分空间.


BIOS、 PCI/PCIE等设备,系统和这些设备都是使用内存地址空间来通信的(以往也使用I/O Port
来进行通信,然而其速度不够理想),我们称这部分空间为MMIO(Memory Mapped Input/Output
内存映射输入输出)空间,由于这些地址空间被设备所占用,实际上插在内存插槽上 对应的空间就闲置、
浪费了,因此我们花了4GB内存的钱,实际却只能得到3.25GB的可用空间






 Windows 可管理的最大内存和Windows程序(进程)可寻址的最大空间是两个不同的概念。



32位的程序最大只能寻址4GB,其中用户模式占2GB,内核占 2GB。
这里的内存是Windows的虚拟内存空间,其实包括了物理内存和页面文件。
因为系统内存有限,而每个进程都假设自己获得4GB的空间,所以每个进程的真实内存空间一部分在物
理内存中,一部分在被交换到页面文件中。 那个boot.ini里面的/3GB参数,实际上修改的是4GB的
内存分配模式,3GB给了用户模式,1GB给了内核,让应用程序能用到跟大的空间。



Windows所能管理的空间,是另一个概念。
同样是32位的系 统,Windows 2003 Std可管理4GB,而Enterprose就可以管理32GB。
这并不奇怪,系统在自动调配内存自由,通过的其实就是 PAE,就如当年DOS下通过EMS,XMS突破
1M的访问空间。PAE也是在内存中开了一个窗口,把超出4GB的内存,映射到4GB的范围中,而应用
程序的使用则是透明的。对于能管理大于4GB的操作系统,PAE是自动打开的。 系统及应用程序都能
利用这些‘多’出的内存。对于XP,2000 pro这些最多只能管理4GB的操作系统,大内存其实并没有
浪费,应用程序可以调用AWE(通过PAE)来使用这些内存,自己作映射了。



微软承认在某些情况下,4GB只被认出3GB。原因是由于XP或2003在某些主板的行为所致。微软的建议是升级到XP SP2或2003 SP1。
这有的时候并不成功。原因是系统硬件具有内存冗余(redundant memory)或内存镜像(memory mirroring)的功能。
只能参考主板的手册,在BIOS中关闭对于的选项。 


所以,这可能是主板和OS兼容的问题,打补丁,升级BIOS,调整BIOS中的内存设置,甚至换内存都可能是解决之道。 或者换2003的企业版。

另外,确定在BIOS中的advanced选项中,内存不是mirror,要想用到8GB,应该设成Advanced ECC 


主要原因是3.2GB到4GB之间的内存地址被保留了,这些地址主要被915G和925G芯片组来使用。
为了拒绝操作系统使用上述地址空间,这些地址被标注为不可用。


在Intel 915G芯片组技术手册上ftp://download.intel.com/design/motherbd/ag/C6860001.pdf

解释了这些地址空间是被芯片组的一些功能占用了,这些功能包括:

*BIOS/firmware hub (2 MB) 
*Local APIC (19 MB) 
*Digital Media Interface (40 MB) 
*Front side bus interrupts (17 MB) 
*PCIe configuration space (256 MB)

*MCH base address registers, internal graphics ranges, PCIe ports (up to 512 MB) .
 This must be allocated in uninterrupted 256MB blocks.


*Memory-mapped I/O that is dynamically allocated for PCI Conventional and PCIe add-in cards
 (Typically this is around 200MB or more)
posted on 2009-08-06 16:59  PctGL  阅读(495)  评论(0编辑  收藏  举报