Windows桌面应用程序(1-3-3-1st) WOW64下的性能和内存消耗

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

  • 处理器硬件。指令仿真在芯片上执行。在x64处理器上,x86指令由处理器本机执行。因此,x64下WOW64下的执行速度与32位Windows下的速度相似。在Intel Itanium处理器和任何ARM64处理器上,仿真中涉及更多软件,因此性能受损。
  • 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或ARM64处理器。

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


原文链接:Performance and Memory Consumption Under WOW64

猜你喜欢

转载自blog.csdn.net/qq_37422196/article/details/82828336
今日推荐