在 WOW64 上运行的 32 位进程的实际页面大小是多少?

问题描述 投票:0回答:3

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

c windows winapi memory-management virtual-memory
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 手册中找到它。


5
投票

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

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

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


2
投票

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

Itanium 使用 8KB 页面。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.