32 位 Windows Server 地址 > 4GB RAM - 如何操作?

32 位 Windows Server 地址 > 4GB RAM - 如何操作?

这对我来说是个新鲜事。我一直以为 32 位操作系统只能处理 2^32 即 4GB 的 RAM。就是这样。

但这是什么——http://www.crucial.com/uk/kb/answer.aspx?qid=3743&click=true

这怎么可能?这是否仍然意味着每个进程 > 4GB?也就是说,如果我有 IIS,是否可以为 ASP.NET 分配超过 4GB 的空间?

编辑:感谢您的回复。具体来说,这是用于 Web 开发的。所以看起来 w3wp.exe(ASP.NET 工作进程)仍将限制为 4GB?这是真的吗?

谢谢邓肯

答案1

某些 32 位处理器上的 MMU 实际上可以支持超过 4GB 的物理 RAM,尽管单个进程在其虚拟地址空间中一次只能看到 4GB。这种 CPU 可以配备超过 4GB 的 RAM,并且可以支持总共使用超过 4GB RAM 的多个进程。但是,单个进程在任何给定时间只能使用 4GB 的 RAM(减去操作系统的一些开销)。

在 Xeon 上,这个功能称为物理地址扩展(PAE) 和一些操作系统具有允许进程操纵 MMU 以将物理内存交换进出进程的虚拟地址空间的 API。在 Windows 上,此 API 称为地址窗口扩展(AWE)但并非所有 Windows 版本都支持该机制。Linux 和其他种类的 Unix 都支持类似的机制。

为了使用此功能,程序必须明确设计为支持它 - AWE 不会自动扩展进程的虚拟地址空间。例如,某些版本的 SQL Server 支持它,尽管我不知道 IIS 是否支持它。

编辑:到了,找到了。 Stackoverflow 上的这篇文章链接到关于 PAE 机制的更多详细信息。

编辑2:如果此论坛帖子可以相信,IIS 不支持 AWE。

答案2

在 32 位上可以寻址超过 4GB聚丙烯酰胺凝胶电泳. 有关进程内存限制,您可以阅读Bruce Sanderson 的 Windows 常规信息;RAM、虚拟内存、PageFile 以及所有这些东西

对于每个进程的内存,请阅读上面的常规 Windows 信息链接中的 1.2 节(“地址空间和进程”)和 2.5 节(“应用程序内存调整 - /3GB 开关”)。

答案3

需要在此记录的是,Windows 2003(企业版和数据中心版)的高端版本确实可以使用 4GB 以上的内存。我有一台配备 14GB RAM 的 HP DL380,而 W2K3 EE 只使用了 14GB。VMWare Server 可以使用超过 4GB 的内存。我们用 ESXi 3.5 U3 替换了 W2K3,它可以使用全部 14GB 的内存。

据我所知,微软曾尝试在其他版本的 Windows(如 XP)上启用它,并发现当内存大于 4GB 时,许多驱动程序都会出现问题。至少部分问题是 DMA(硬件的内存地址将被截断为 32 位并开始损坏内存)。因此,有一个 SP 可以消除大多数旧版 Windows 的 PAE,以防止出现稳定性问题。

相关内容