这对我来说是个新闻。我一直认为 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?这是真的?
谢谢邓肯
一些 32 位处理器上的 MMU 实际上可以支持超过 4GB 的物理 RAM,尽管单个进程在其虚拟地址空间中一次只能看到 4GB。这种 CPU 可以配备超过 4GB 的 RAM,并且可以支持使用总共超过 4GB 的 RAM 的多个进程。但是,单个进程在任何给定时间只能使用 4GB 的 RAM(减去操作系统的一些开销)。
在 Xeon 上,此功能称为物理地址扩展(PAE),一些操作系统具有 API,允许进程操纵 MMU 以将物理内存换入和换出进程的虚拟地址空间。在 Windows 上,此 API 称为地址窗口扩展(AWE),但并非在所有版本的 Windows 上都可用。Linux 和其他种类的 Unix 支持类似的机制。
为了使用这个工具,程序必须明确地设计来支持它——AWE 不会自动扩展进程的虚拟地址空间。例如,某些版本的 SQL Server 支持它,尽管我不知道 IIS 这样做。
编辑:我们开始吧。找到了。 Stackoverflow 上的这篇文章链接到有关 PAE 机制的更多详细信息。
编辑 2:如果可以相信这个论坛的帖子,那么 IIS 不支持 AWE。
使用PAE可以在 32 位上寻址超过 4GB 。对于进程内存限制,您可以阅读Bruce Sanderson 的 General Windows Information;RAM、虚拟内存、页面文件和所有这些东西
对于每个进程的内存,请阅读上面常规 Windows 信息链接中的第 1.2 节(“地址空间和进程”)和第 2.5 节(“应用程序内存调整 - /3GB 开关”)。
只是在此记录一下,Windows 2003(企业和数据中心)的高端版本确实可以使用 >4GB。我有一台配备 14GB RAM 的 HP DL380,而 W2K3 EE 看到了全部 14GB。VMWare 服务器能够使用超过 4GB。我们用 ESXi 3.5 U3 替换了 W2K3,它能够使用全部 14GB。
根据我的阅读,微软尝试在其他版本的 Windows(如 XP)上启用它,发现许多驱动程序在内存大于 4GB 时出现问题。至少部分问题是 DMA(硬件的内存地址将被截断为 32 位并开始破坏内存)。因此,有一个 SP 为大多数旧版本的 Windows 摆脱了 PAE,以防止出现稳定性问题。