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

时间:2013-02-11 09:42:30

标签: c windows winapi memory-management virtual-memory

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

3 个答案:

答案 0 :(得分: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手册中找到它。

答案 1 :(得分:5)

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

  

虚拟内存大小。在英特尔安腾处理器上,WOW64补充道   如果两个或多个相同32位的实例,则会产生很大的开销   应用程序正在并发运行。这是由于原生的8 KB   英特尔安腾上的页面,这使得仿真变得复杂   x86架构上的原生4 KB页面(更多页面标记为   可写;所有可写页面都是该过程的私有页面)。这个可以   对某些终端服务的可扩展性产生不利影响   处理器。对于x64处理器,情况并非如此。

详细了解WOW64 here

答案 2 :(得分:2)

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

Itanium使用8KB页面。

X86-32和x86-64适当使用4KB,2MB和1GB页面[请注意,对于2MB和1GB页面,内存需要是2MB / 1GB的倍数,并且对齐为2MB / 1GB分别]。

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

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