无论机器中安装了多少内存,Windows 32 位最多可以寻址 3 GB 的 RAM。因此,尽管 32 位应用程序理论上可以寻址多达 4 GB 的内存,但操作系统将它们限制在 3 GB(即使如此,某些内存页面仍被保留,并且其他程序同时运行,因此可能永远无法达到这个最大值)。
然而,当运行 64 位版本的 Windows 时,操作系统的上限就被打破了。这是否意味着通过 WoW64 运行的 32 位应用程序现在理论上可以访问其整个 4 GB 地址空间?
答案1
更准确地说,Win32 总共可以寻址高达 64GB。
然而,程序默认限制为2GB(另外2GB为系统保留),或者3GB(其中1GB为系统保留),这是一种特殊情况,需要通过操作系统配置启用并由程序(特定编译器)支持。
但是是的,如此大的地址感知程序不仅可以访问 3GB,还可以访问 WOW64 中的整个 4GB 空间。
答案2
我认为人们在这里提到的是误导性的事情,所以我想我应该澄清一下:
32 位模式(无论是在 32 位操作系统上还是在 WOW64 上)都可以仅有的 地址最多 4 GiB 内存。在 Windows 中,用户模式数据的最大内存为 2 GiB 或 3 GiB。
但是,内存寻址和物理内存是不同的主题。
这并不意味着他们不能店铺RAM 中的更多信息。由于虚拟内存,地址使用 32 位,但它们可以使用以下方式映射和取消映射物理内存的不同视图异戊烯醇,允许它们使用比虚拟内存更多的物理内存。不过,这与寻址问题无关——任何时候仍然只有 4 GiB 的虚拟寻址,程序可以仅有的使用更多身体的记忆,如果它是具体写成来做到这一点(大多数程序都做不到)。
至于 PAE,它不会影响任何单个程序——它唯一的用处是它允许多种的程序占用超过 4 GiB 的 RAM全部的,尽管每个仍然受到 4-GiB 障碍的限制。