WoW64
WoW64이 문서에서는 ARM64의 x64; 1:1 레지스터 매핑을 사용하는 ARM64EC ABI(구 ARM64X)에 대한 정보가 누락되어 있습니다.(2021년 6월) |
| 기타 이름 | Windows 32비트(Windows 64비트) |
|---|---|
| 개발자 | 마이크로소프트 |
| 운영 체제 | Microsoft Windows |
| 유형 | 호환성 레이어 |
| 면허증. | 독자 사양 상용 소프트웨어 |
| 웹 사이트 | docs |
Microsoft 플랫폼 상의 컴퓨팅에서 WoW64(Windows 64비트 상의 Windows 32비트)는 64비트 Windows 상에서 32비트 애플리케이션을 실행할 수 있는 Windows 운영 체제의 하위 시스템입니다.Windows XP Professional x64 Edition, IA-64 및 x64 버전의 Windows Server 2003과 x64 버전의 Windows Vista, Windows Server 2008, Windows 7, Windows 8, Windows Server 2012, Windows 8.1, Windows 10, Windows 2016, Windows Server 11, Windows Server를 포함한 모든 64비트 버전의 Windows에 포함되어 있습니다.Windows Server Core(옵션 컴포넌트)와 Windows Nano Server(옵션 컴포넌트)를 제외한 Windows 10, Windows 11 및 Windows Server 2022 버전.WoW64는 32비트 Windows와 64비트 Windows의 많은 차이점, 특히 Windows 자체에 대한 구조적인 변경을 처리하는 것을 목표로 하고 있습니다.
번역 라이브러리
WoW64 서브시스템은 모든 64비트 버전의 Windows에서 동일한 인터페이스를 가진 경량 호환성 레이어로 구성됩니다.64비트 시스템에서 수정되지 않은 32비트 Windows 응용 프로그램을 실행하는 데 필요한 인터페이스를 제공하는 32비트 환경을 구축하는 것을 목표로 합니다.WOW64는 다음과 같은 여러 DLL을 사용하여 구현됩니다.
Wow64.dll포인터나 콜스택 조작을 포함한 32비트콜과 64비트콜 사이의 변환(트렁크)을 실행하는 Windows NT 커널의 코어 인터페이스Wow64win.dll32비트 어플리케이션(win32k thunks)에 적합한 엔트리 포인트를 제공합니다.Wow64cpu.dll프로세서를 32비트 모드에서 64비트 모드로 전환합니다.이는 Windows의 x86-64 구현에서만 사용됩니다.
기타 DLL 및 바이너리는 Itanium 및 ARMv8 64비트 아키텍처에 포함되어 x86에 대한 에뮬레이션을 제공하거나 아키텍처에 네이티브 32비트 운영 모드가 있는 경우 32비트 엔트리 포인트에 대한 에뮬레이션을 제공합니다.
아키텍처
WoW64의 구현은 64비트 Windows의 모든 버전에서 외관상 유사하지만 대상 명령어셋 아키텍처에 따라 달라집니다.예를 들어 인텔 Itanium 2 프로세서용으로 개발된 64비트판 Windows (IA-64 아키텍처)에서는Wow64win.dllItanium 2의 고유 명령 집합 내에서 x86 명령의 에뮬레이션을 설정합니다.이 에뮬레이션은 계산상 비용이 많이 드는 작업입니다.Wow64win.dll는 x86-64 아키텍처 상에서 기능합니다.이는 32비트 스레드를 실행할 필요가 있을 때 프로세서하드웨어를 64비트모드에서 호환성 모드로 전환한 후 스위치를 64비트모드로 되돌립니다.
레지스트리 및 파일 시스템
WoW64 서브시스템은 32비트 어플리케이션 실행에 관한 기타 중요한 측면도 처리합니다.32비트 애플리케이션과 64비트 및 32비트 응용 프로그램의 고유 키를 가진 레지스트리 등의 Windows 컴포넌트와의 상호 작용 관리에 관여합니다.예를 들어 HKEY_LOCAL_MACHINE\Software\라고 입력합니다.Wow6432 Node는 32비트의 HKEY_LOCAL_MACHINE\Software에 상당합니다(32비트 어플리케이션은 이 리다이렉션을 인식하지 않습니다).64비트에서 32비트로 매핑되는 레지스트리 키도 있고 Windows 버전에 따라 내용이 미러링되는 레지스트리 키도 있습니다.
운영체제에서는%SystemRoot%\system3264비트 라이브러리와 실행 파일용 디렉토리.이는 많은 레거시 애플리케이션이 해당 경로를 사용하도록 하드 코딩되어 있기 때문에 하위 호환성을 위해 수행됩니다.32비트 응용 프로그램을 실행할 때 WoW64는 32비트 DLL을 투과적으로 리다이렉트합니다.%SystemRoot%\SysWoW6432비트 라이브러리와 실행 파일이 포함되어 있습니다.이러한 리다이렉트로부터의[2] 예외는 다음과 같습니다.
%SystemRoot%\system32\catroot%\system32\catroot2%SystemRoot%\system32\drivers\etc%SystemRoot%System32\log%SystemRoot%System32\drivers\Log%SystemRoot%Drivers\Log%SystemRoot%SystemRoot%SystemRoot2%SystemRoot%System32\DriverSystem32\Drivers로 수정되었습니다.
32비트 애플리케이션은 일반적으로 64비트 운영체제 상에서 동작하고 있는 것을 인식하지 못합니다.32비트 어플리케이션에서 액세스 가능%SystemRoot%\System32유사 디렉토리를 통해%SystemRoot%\sysnative.
32비트 및 64비트 응용 프로그램에는 각각 2개의 프로그램 파일 디렉토리가 표시됩니다.32비트 파일을 저장하는 디렉토리를 Program Files(x86)라고 하며, 64비트는 수식자 없이 기존의 Program Files 이름을 유지합니다.
응용 프로그램 호환성
32비트 커널 모드 디바이스 드라이버만 포함하는 32비트 응용 프로그램 또는 64비트 프로세스로만 구현된 컴포넌트(Windows 탐색기 등)의 프로세스 공간에 연결하는 32비트 응용 프로그램은 64비트 플랫폼에서 실행할 수 없습니다.
32비트 서비스 애플리케이션이 지원됩니다.OS 드라이브의 Windows 폴더에 있는 SysWOW64 폴더에는 32비트 응용 프로그램을 지원하는 여러 응용 프로그램이 포함되어 있습니다(32비트 응용 프로그램의 ODBC 연결을 등록하기 위한 cmd.exe, odbcad32.exe 등).MS-DOS용 16비트 레거시 애플리케이션 및 Windows의 초기 버전은 보통 64비트 버전의 Windows Vista, 7, 8, 10과 호환되지 않지만 가상화 소프트웨어를 통해 64비트 버전의 Windows OS에서 실행할 수 있습니다. 반면, Windows XP, Vista, 7, 8, 10의 32비트 버전은 보통 16비트 애플리케이션을 문제 없이 실행할 수 있습니다.x64에서 실행되는 경우 CPU가 VM86 모드를 지원하지 않기 때문에 윈도우즈의 x64 에디션에서 애플리케이션을 직접 실행할 수 없습니다.
Internet Explorer는 32비트 ActiveX 컴포넌트의 수가 많아 64비트 버전에 연결할 수 없기 때문에 32비트 및 64비트 응용 프로그램으로 구현됩니다.
이전에는 32비트 버전이 기본적으로 사용되었으며 64비트 버전을 기본 브라우저로 설정하는 것이 어려웠습니다.이는 64비트 세션 내에서 32비트 애드온을 실행하던 Internet Explorer 10에서 변경되어 두 버전을 전환할 필요가 없어졌습니다.사용자가 32비트 폴더(일반적으로 C:\Program Files(x86)\)로 이동하는 경우Internet Explorer)에서 iexplore.exe 파일을 더블 클릭하면 64비트 버전이 계속 로드됩니다.Internet Explorer 9 이전 버전에서는 32비트 버전만 로드됩니다.
2010년 현재[update] WoW64[3][4] x64 버전의 변환 레이어에 버그가 있어 Windows API 함수의 GetThreadContext에 의존하는 모든 32비트애플리케이션에 호환성이 없어집니다.이러한 애플리케이션에는 애플리케이션 디버거, 콜스택 트레이서(예를 들어 콜스택을 표시하는 IDE), 가비지 컬렉션(GC) 엔진을 사용하는 애플리케이션이 포함됩니다.널리 사용되지만 영향을[5] 받는 GC 엔진 중 하나는 Boehm GC입니다.마찬가지로 인기 있는 Mono의 기본 가비지 컬렉터로도 사용됩니다.Mono는 2010년 10월부터 SGen-GC라는 새로운 (옵션)GC를 도입하고 있습니다만, Boehm GC와 같은 방법으로 스택스캔을 실행하므로 WoW64에서는 호환성이 없습니다.해결 방법이 제안되었지만 2016년 [6]7월 현재 해결 방법이 제공되지 않았습니다.
성능
이 섹션은 확장해야 합니다.추가하시면 도움이 됩니다. (2013년 8월) |
마이크로소프트에 따르면 WOW64에서 실행되는 32비트 소프트웨어는 32비트 Windows에서 실행되는 것과 유사한 성능을 가지지만 스레드 수와 [7]기타 오버헤드를 줄일 수 있습니다.
32비트 애플리케이션에는 64비트 시스템에서 4기가바이트의 완전한 가상 메모리를 제공할 수 있지만 32비트 시스템에서는 이 주소 지정 가능한 메모리의 일부가 손실됩니다.이는 디스플레이 어댑터와 같은 커널 및 메모리 매핑된 주변기기에서 사용되기 때문에 일반적으로 애플리케이션은 최대 2GB 또는 3GB의 RAM을 사용할 수 있기 때문입니다.
「 」를 참조해 주세요.
- 심(컴퓨팅)
- 사용자 계정 컨트롤에는 특정 영역에 파일을 쓰는 "구식" 프로그램을 "새" 창에서 처리하는 메커니즘도 있습니다.관리자 권한이 없는 프로세스에서 프로그램 파일 및 windows\system32 등의 보호된 장소에 쓴 파일은 가상 스토어 디렉토리로 리다이렉트 됩니다.
- Windows 에서의 Windows
레퍼런스
- ^ "WOW64 Implementation Details". Microsoft. Retrieved 2018-04-21.
- ^ "File System Redirector (Windows)". msdn.microsoft.com.
- ^ Saw, Zach (November 13, 2010). "WOW64 bug: GetThreadContext() may return stale contents". Zach Saw's Blog. Retrieved 2010-11-15.
- ^ "WOW64 OS bug: Old 32-bit XP apps failing under Win7 WOW64". Microsoft Developer Network. November 11, 2010. Retrieved 2010-11-15.
- ^ "Discussions about the Boehm Garbage Collector (Boehm GC)". Retrieved 2010-11-25.
- ^ "GetThreadContext returns stale register values on WOW64". Microsoft= 2016-07-23. Retrieved 2016-07-23.
- ^ "Performance and Memory Consumption Under WOW64". Microsoft. Retrieved 2013-05-06.