4

我知道在 32 位 Windows 上运行的 32 位进程的默认页面大小是 4K,而在 64 位 Windows 上运行的 64 位进程的默认页面大小是 8K。但是,在 64 位 Windows(即 WOW64)上运行的 32 位进程的实际页面大小是多少?4K?8K?

4

3 回答 3

7

理想情况下,您应该调用GetSystemInfo()并检查SYSTEM_INFO.dwPageSize.

顺便说一句,我怀疑您在 64 位 Windows 中有 8KB 页面。x86/64 CPU 支持以下大小的页面:4KB(所有模式)、4MB(32 位非 PAE)、2MB(32/64 位 PAE)、1GB(64 位,始终 PAE)。您可以在 Intel(或 AMD)的 CPU 手册中找到它。

于 2013-02-11T10:14:44.630 回答
5

页面大小仍为 4K - 1M 页面,最大可寻址 RAM 为 4GB

虚拟内存大小。在 Intel Itanium 处理器上,如果同一 32 位应用程序的两个或多个实例同时运行,WOW64 会增加大量开销。这是由于 Intel Itanium 上的原生 8 KB 页面,这使 x86 架构上的原生 4 KB 页面的模拟变得复杂(更多页面被标记为可写;所有可写页面都是进程私有的)。这会对某些处理器上终端服务的可扩展性产生不利影响。x64 处理器不是这种情况。

在此处阅读有关 WOW64的更多信息

于 2013-02-11T09:46:04.243 回答
2

这个问题的正确答案是“这取决于哪个处理器”。

Itanium 使用 8KB 页面。

X86-32 和 x86-64 分别使用 4KB、2MB 和 1GB 页面[注意,要使 2MB 和 1GB 页面工作,内存大小需要是 2MB/1GB 的倍数,并分别与 2MB/1GB 对齐]。

其他处理器,例如 ARM(目前只有 32 位操作系统),通常使用 4KB 页面,但也可以使用 64KB 页面。

如果你能找到一个旧的 DEC Alpha 处理器和与之匹配的操作系统,那也将使用 8KB 页面。

于 2013-02-11T16:50:57.353 回答