我知道在 32 位 Windows 上运行的 32 位进程的默认页面大小是 4K,而在 64 位 Windows 上运行的 64 位进程的默认页面大小是 8K。但是,在 64 位 Windows(即 WOW64)上运行的 32 位进程的实际页面大小是多少?4K?8K?
3 回答
理想情况下,您应该调用GetSystemInfo()
并检查SYSTEM_INFO.dwPageSize
.
顺便说一句,我怀疑您在 64 位 Windows 中有 8KB 页面。x86/64 CPU 支持以下大小的页面:4KB(所有模式)、4MB(32 位非 PAE)、2MB(32/64 位 PAE)、1GB(64 位,始终 PAE)。您可以在 Intel(或 AMD)的 CPU 手册中找到它。
页面大小仍为 4K - 1M 页面,最大可寻址 RAM 为 4GB
虚拟内存大小。在 Intel Itanium 处理器上,如果同一 32 位应用程序的两个或多个实例同时运行,WOW64 会增加大量开销。这是由于 Intel Itanium 上的原生 8 KB 页面,这使 x86 架构上的原生 4 KB 页面的模拟变得复杂(更多页面被标记为可写;所有可写页面都是进程私有的)。这会对某些处理器上终端服务的可扩展性产生不利影响。x64 处理器不是这种情况。
在此处阅读有关 WOW64的更多信息
这个问题的正确答案是“这取决于哪个处理器”。
Itanium 使用 8KB 页面。
X86-32 和 x86-64 分别使用 4KB、2MB 和 1GB 页面[注意,要使 2MB 和 1GB 页面工作,内存大小需要是 2MB/1GB 的倍数,并分别与 2MB/1GB 对齐]。
其他处理器,例如 ARM(目前只有 32 位操作系统),通常使用 4KB 页面,但也可以使用 64KB 页面。
如果你能找到一个旧的 DEC Alpha 处理器和与之匹配的操作系统,那也将使用 8KB 页面。