WOW64下的性能和内存消耗

WOW64下的性能和内存消耗由以下因素决定:

  • 处理器硬件。在芯片上执行指令仿真。在x64处理器上,指令由微架构本机执行。因此,x64下WOW64下的执行速度与32位Windows下的速度相似。在Intel Itanium处理器上,更多的软件涉及到仿真,因此性能受损。
  • API thunk开销 与NT内核调用本身相比,这个开销很小。NT内核函数打算不频繁地被调用。
  • 虚拟内存大小。在Intel Itanium处理器上,如果同一32位应用程序的两个或多个实例同时运行,则WOW64会增加显着的开销。这是由于Intel Itanium上的本机8 KB页面,这使得x86架构上的本机4 KB页面的仿真复杂化(更多页面被标记为可写;所有可写页面对进程都是私有的)。这可能不利地影响终端服务在某些处理器上的可扩展性。x64处理器不是这样。
  • 工作集。WOW64增加了应用程序工作集的大小。

WOW64使32位应用程序能够利用64位内核。因此,32位应用程序可以使用大量的内核句柄和窗口句柄。但是,32位应用程序可能无法在WOW64下创建尽可能多的线程,因为它们可以在基于x86的系统上本机运行,因为WOW64为每个线程分配一个额外的64位堆栈(通常为512 KB)。另外,一些地址空间被保留给WOW64本身和它使用的数据结构。保留的数量取决于处理器; 更多的是在Intel Itanium上保留,而不是在x64处理器上。

如果应用程序在图像头中设置了 IMAGE_FILE_LARGE_ADDRESS_AWARE标志,则每个32位应用程序在WOW64环境中接收到4 GB的虚拟地址空间。如果 未设置IMAGE_FILE_LARGE_ADDRESS_AWARE标志,则每个32位应用程序将在WOW64环境中接收2 GB的虚拟地址空间。


猜你喜欢

转载自blog.csdn.net/justin_bkdrong/article/details/77045750