为何Windows Vista不支持4GB内存

来源:岁月联盟 编辑:zhuzhu 时间:2010-02-08
为何Windows Vista不支持4GB内存, 32位操作系统最多支持4G内存,若用4G,那么在32位XP下,最多只能认出并使用3G多,自Vista SP1后虽然能认出4G,但是实际使用的还是3G多。对于32位机器,4G是标准支持,也就是32位的最大寻址,PAE标准扩展支持可以到64G,其实   32位操作系统最多支持4G内存,若用4G,那么在32位XP下,最多只能认出并使用3G多,自Vista SP1后虽然能认出4G,但是实际使用的还是3G多。对于32位机器,4G是标准支持,也就是32位的最大寻址,PAE标准扩展支持可以到64G,其实就是把高四位拿来做索引。PAE(AWE)物理地址扩展,这个不是专门对某一系统的,32位的Windows、Unix、Linux都可用,它的扩展需要存储适配器支持,操作系统支持,另外应用程序也必须支持才可以使用超过4G的内存。

  PAE 提高了 IA32 处理器处理大于 4 GB 的物理内存的能力。微软下列操作系统可以通过 PAE 来利用大于 4 GB 的物理内存,也许你能明白为何32位的服务器系统可以支持超过4GB的内存:

  Microsoft Windows 2000 Advanced Server

  Microsoft Windows 2000 Datacenter Server

  Microsoft Windows Server 2003 Enterprise Edition

  Microsoft Windows Server 2003 Datacenter Edition

  若要启用 PAE,需要在 Boot.ini 文件中使用 /PAE 参数。

  注意:在 Windows Server 2003 中,仅当服务器使用热插拔内存设备时,才会自动启用 PAE。在这种情况下,不需要在配置为使用热插拔内存设备的系统上使用 /PAE 开关。在其他情况下,必须在 Boot.ini 文件中使用 /PAE 开关来利用大于 4GB 的内存。

  典型情况是,在 Windows 2000 或 Windows Server 2003 下运行的进程最多可以访问 2 GB 的内存地址空间(假设未使用 /3GB 参数),其中一些内存是物理内存,另一些是虚拟内存。运行的程序越多(因而进程也越多),占用的内存地址空间也就越接近 2 GB 这一最大值。

  当出现这种情况时,分页进程将显著增加并且会对性能产生负面影响。Windows 2000 和 Windows Server 2003 内存管理器使用 PAE 向程序提供更多的物理内存。这会降低对交换页面文件内存的需要,从而提高了性能。程序本身并不知道实际的内存大小。所有的内存管理和 PAE 内存分配都由内存管理器处理,与运行的程序无关。

  当使用 /3GB 参数时,上述信息对于运行的程序有效。要求 3 GB 内存的程序更有可能让其所需的内存有更多部分在物理内存中,而不是在分页的虚拟内存中。这将增强那些能够使用 /3GB 参数的程序的性能。但例外情况是当 /3GB 参数与 /PAE 参数一起使用时。在这种情况下,操作系统将不使用任何超过 16 GB 的内存。此行为是由内核虚拟内存空间考虑导致的。因此,如果系统使用 Boot.ini 文件中的 /3GB 项重新启动,并且系统的物理内存超过 16 GB,则操作系统不使用额外的物理随机存取内存 (RAM)。重新启动计算机时如果不使用 /3GB 开关,将能够使用所有的物理内存。

  AWE 是内存管理器功能的一套应用程序编程接口 (API),它使程序能够寻址更多内存 — 超过标准 32 位寻址的 4 GB 内存空间。AWE 使程序能够将物理内存保留为非分页内存,然后将非分页内存部分动态映射到程序的内存工作集。此过程使内存密集型程序(如大型数据库系统)能够为数据保留大量的物理内存,而不必交换分页文件以供使用。相反,数据在工作集中进行交换,并且保留的内存超过 4 GB 范围。此外,超出 4 GB 的内存范围对内存管理器是公开的,并且 AWE 通过 PAE 发挥作用。没有 PAE,AWE 就无法保留超出 4 GB 的内存。

  以下是一个 Boot.ini 文件的示例,其中已添加了 PAE 开关:

  [boot loader]

  timeout=30

  default=multi(0)disk(0)rdisk(0)partition(2)/WINDOWS

  [operating systems]

  multi(0)disk(0)rdisk(0)partition(2)/WINDOWS="Windows Server 2003, Enterprise" /fastdetect /PAE

  警告:Boot.ini 文件的内容根据您的配置而异。

  总之,PAE 是 Windows 2000 和 Windows Server 2003 内存管理器的一项功能,它为请求内存的程序提供了更多物理内存。程序并不知道它正使用的内存中有些在大于 4 GB 的范围内,正如程序不知道它请求的内存实际上是在页面文件中一样。

  AWE 是一个 API 集,它使程序能够保留大内存块。保留的内存是非分页的,并且只可以由该程序来使用。如果向系统添加更多内存,BIOS 可能会认出安装在服务器中的全部物理 RAM,而 Windows 将只能认出部分 RAM。如果服务器具有启用的冗余内存功能或内存镜像功能,则全部剩余内存可能对 Windows 都不可见。冗余内存在某个内存块故障时为系统提供一个故障转移的内存块。内存镜像将内存块拆分为一个镜像集。两种功能都在 BIOS 中启用或禁用,而无法通过 Windows 访问。要修改这些功能的设置,您可能必须参考系统用户手册或 OEM 网站。另外,您可能必须联系硬件供应商。

  例如,如果正在运行的系统安装了 4GB 的 RAM,随后又添加了另外 4GB 的 RAM,Windows 可能只识别出 4GB 或 6GB 的物理内存,而不是全部的 8GB。冗余内存功能或内存镜像功能可能在您未知的情况下就在新内存块上启用。这些症状类似于未将 /PAE 开关添加到 Boot.ini 文件时的症状。

图片内容