WOW64의 성능 및 메모리 사용량

WOW64의 성능 및 메모리 사용량은 다음 요인에 따라 결정됩니다.

  • 프로세서 하드웨어. 명령 에뮬레이션은 칩에서 수행됩니다. x64 프로세서에서는 x86 명령이 프로세서에 의해 기본적으로 실행됩니다. 따라서 x64의 WOW64에서 실행 속도는 32비트 Windows의 속도와 비슷합니다. Intel Itanium 프로세서 및 ARM64 프로세서에서는 에뮬레이션에 더 많은 소프트웨어가 포함되며 결과적으로 성능이 저하됩니다.
  • API unk 오버헤드. 이 오버헤드는 NT 커널에 대한 시스템 호출에 비해 작습니다. NT 커널 함수는 자주 호출되지 않습니다.
  • 가상 메모리 크기입니다. Intel Itanium 프로세서에서 WOW64는 동일한 32비트 애플리케이션의 두 개 이상의 인스턴스가 동시에 실행되는 경우 상당한 오버헤드를 추가합니다. 이는 Intel Itanium의 네이티브 8KB 페이지로 인해 x86 아키텍처에서 네이티브 4KB 페이지의 에뮬레이션이 복잡해지기 때문입니다(더 많은 페이지는 쓰기 가능으로 표시되고 모든 쓰기 가능한 페이지는 프로세스에 비공개임). 이로 인해 특정 프로세서에서 터미널 서비스의 확장성에 부정적인 영향을 줄 수 있습니다. x64 프로세서의 경우는 그렇지 않습니다.
  • 작업 집합입니다. WOW64는 애플리케이션의 작업 집합 크기를 늘입니다.

WOW64를 사용하면 32비트 애플리케이션이 64비트 커널을 활용할 수 있습니다. 따라서 32비트 애플리케이션은 더 많은 수의 커널 핸들과 창 핸들을 사용할 수 있습니다. 그러나 WOW64는 각 스레드에 대해 64비트 스택(일반적으로 512KB)을 추가로 할당하기 때문에 32비트 애플리케이션은 x86 기반 시스템에서 기본적으로 실행할 때 WOW64에서 가능한 한 많은 스레드를 만들지 못할 수 있습니다. 또한 일부 주소 공간은 WOW64 자체 및 사용하는 데이터 구조에 예약되어 있습니다. 예약된 금액은 프로세서에 따라 달라집니다. x64 또는 ARM64 프로세서보다 Intel Itanium에 더 많이 예약되어 있습니다.

애플리케이션에 이미지 헤더에 설정된 IMAGE_FILE_LARGE_ADDRESS_AWARE 플래그가 있는 경우 각 32비트 애플리케이션은 WOW64 환경에서 4GB의 가상 주소 공간을 받습니다. IMAGE_FILE_LARGE_ADDRESS_AWARE 플래그가 설정되지 않은 경우 각 32비트 애플리케이션은 WOW64 환경에서 2GB의 가상 주소 공간을 받습니다.