윈도우 온 윈도우
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
윈도우 온 윈도우(WOW)는 32비트 윈도우에서 16비트 레거시 프로그램을 실행하기 위한 기술이다. 소프트웨어 개발자들이 Windows 3.1x에서 Windows 95 및 이후 버전으로 전환하는 동안 기존 프로그램을 지원하기 위해 설계되었다.
Windows 9x는 16비트와 32비트의 하이브리드 시스템으로 16비트 소프트웨어를 특별한 에뮬레이션 없이 실행할 수 있었지만, Windows NT는 썽킹(thunking)과 쉬밍(shimming)이라는 두 가지 별도의 전략을 사용하여 16비트 프로그램을 실행한다. 썽킹은 16비트 API를 32비트 API로 변환하고, 쉬밍은 응용 프로그램 호환성 문제를 해결하기 위해 API 호출을 가로채고 수정한다. 이러한 기술을 통해 윈도우는 레거시 응용 프로그램과의 호환성을 유지하고, 16비트 프로그램의 실행을 지원한다.
더 읽어볼만한 페이지
- 윈도우 구성 요소 - 인터넷 익스플로러
마이크로소프트가 개발한 웹 브라우저인 인터넷 익스플로러는 윈도우 운영 체제와의 통합으로 높은 시장 점유율을 유지했으나, 웹 표준 문제와 보안 취약점으로 비판받으며 2015년 엣지에 자리를 내주고 2022년 지원이 종료되었지만, 엣지의 IE 모드로 레거시 호환성을 유지하고 있다. - 윈도우 구성 요소 - 원격 데스크톱 서비스
원격 데스크톱 서비스(RDS)는 네트워크를 통해 원격으로 컴퓨터의 데스크톱 환경에 접근할 수 있게 해주는 기술이며, 클라이언트 소프트웨어, 서버 구성 요소, 다양한 역할을 수행하는 구성 요소로 구성된다.
윈도우 온 윈도우 - [IT 관련 정보]에 관한 문서 | |
---|---|
개요 | |
이름 | 윈도우 온 윈도우 |
다른 이름 | WOW |
개발사 | 마이크로소프트 |
출시일 | 1993년 7월 27일 |
대체 | 해당 사항 없음 |
운영 체제 | 마이크로소프트 윈도우 |
플랫폼 | IA-32 |
장르 | 호환성 계층 |
라이선스 | 사유 상용 소프트웨어 |
상세 정보 | |
설명 | 32비트 윈도우에서 16비트 윈도우 프로그램을 실행하기 위한 단종된 하위 시스템 |
2. 배경
많은 16비트 윈도우용 레거시 프로그램들은 새로운 32비트 윈도우 환경에서도 별다른 수정 없이 실행될 수 있었다. 이는 마이크로소프트가 Windows 3.1x에서 Windows 95 및 이후 버전으로 전환하는 과도기 동안 소프트웨어 개발자들에게 기존 프로그램을 새로운 환경에 맞게 수정할 시간을 충분히 제공하고, 동시에 사용자들이 사용하는 모든 프로그램이 업데이트되기 전이라도 운영 체제를 먼저 업그레이드할 수 있도록 배려한 설계 덕분이었다. 이러한 사용자 중심의 접근 방식은 기술 전환 과정에서 발생할 수 있는 혼란을 최소화하려는 노력으로 평가받는다.
이러한 하위 호환성을 구현하기 위해 운영 체제별로 다른 기술적 접근 방식이 사용되었다. Windows 9x 시리즈 운영 체제는 DOS에 기반한 하이브리드 구조를 통해 16비트 프로그램을 비교적 직접적으로 실행할 수 있었던 반면, 구조적으로 다른 Windows NT 운영 체제에서는 thunking이나 shimming과 같은 보다 복잡한 기술이 필요했다.
2. 1. Windows 9x의 하이브리드 구조
Windows 9x 운영 체제 시리즈는 DOS에 기반을 두고 있다. 이 때문에 기본적인 운영 체제가 완전한 32비트 시스템은 아니었지만, 16비트와 32비트가 혼합된 하이브리드 시스템으로 작동했다. 이러한 구조 덕분에 Windows 9x는 별도의 에뮬레이션 과정 없이도 16비트 윈도우용 프로그램을 기본적으로 실행할 수 있었다.이는 Windows 3.1x에서 Windows 95 및 이후 버전으로 전환하는 과정에서 기존 16비트 프로그램과의 호환성을 유지하기 위한 설계적 특징이었다. 소프트웨어 개발자들은 이를 통해 사용자들이 기존 프로그램을 계속 사용하면서 운영 체제를 업그레이드할 수 있도록 시간을 벌 수 있었다.
2. 2. Windows NT의 접근 방식
Windows 9x 운영 체제 시리즈는 DOS에 뿌리를 두고 있어, 16비트 소프트웨어를 특별한 에뮬레이션 없이 기본적으로 실행할 수 있는 16비트와 32비트의 하이브리드 시스템처럼 작동했다. 반면, Windows NT 운영 체제는 아키텍처 면에서 Windows 9x와 상당히 다르므로 16비트 프로그램을 실행하기 위해 더 복잡한 해결책이 필요했다. 16비트 프로그램이 32비트 버전의 윈도우에서 실행될 수 있도록 하기 위해 (일부 런타임 제한 사항은 있지만) 두 가지 별도의 전략이 사용된다. 이 전략들은 thunking과 shimming이라고 불린다.3. 썽킹(Thunking)
썽킹(thunking)은 서로 다른 실행 환경이나 프로그래밍 모델 간의 호환성을 위해 사용되는 기술 중 하나이다. WOW 하위 시스템은 이 기술을 이용하여 기존의 16비트 API를 최신 32비트 API로 변환함으로써, 16비트 포인터, 메모리 모델, 주소 공간 등을 지원한다. 이를 통해 오래된 16비트 응용 프로그램이 최신 운영체제 환경에서도 실행될 수 있도록 돕는다. 더 자세한 내용은 썽크 문서의 상호 운용성 부분을 참고할 수 있다.
3. 1. 가상 DOS 머신 (VDM)
모든 16비트 프로그램은 기본적으로 공유된 메모리 공간을 사용하는 하나의 가상 DOS 머신(VDM) 안에서 실행된다. 하지만 사용자가 원한다면 각 16비트 프로그램을 자신만의 메모리 공간을 가진 별도의 가상 머신에서 실행하도록 설정할 수도 있다. 이렇게 메모리 공간을 분리하면, 특정 프로그램에 오류가 발생해도 다른 프로그램에 영향을 주는 것을 막아 시스템 전체의 안정성을 높일 수 있다. 그러나 프로그램끼리 정보를 주고받는 프로세스 간 통신이 어려워지고, 더 많은 메모리를 사용하게 되는 단점이 있다.3. 2. NTVDM과 WOWEXEC.EXE
운영 체제의 WOW(Windows on Windows) 하위 시스템은 기존의 16비트 API를 최신 32비트 API로 변환하여, 16비트 포인터, 메모리 모델 및 주소 공간 지원을 제공한다.모든 16비트 프로그램은 기본적으로 공유 메모리 공간을 가진 단일 가상 DOS 머신에서 실행된다. 그러나 각 16비트 프로세스가 자체 메모리 공간에서 실행되도록 구성할 수도 있으며, 이 경우 각 프로세스는 자신만의 전용 가상 머신을 갖게 된다. 별도의 메모리 공간은 오류가 있는 16비트 프로그램이 서로 영향을 주는 것을 막아 시스템 안정성을 높이지만, 16비트 프로세스 간 통신이 줄어들고 메모리 사용량이 증가하는 단점이 있다.
Windows NT 시스템의 `WOWEXEC.EXE` 프로세스는 Windows-on-Windows 기능을 지원한다.[4][5] Windows-on-Windows는 Windows 95 및 Windows 98 커널을 에뮬레이션하는 것 외에도, `WIN.COM` 파일이 NTVDM용 Windows 3.x 커널을 에뮬레이션하여 Windows NT에서 16비트 DOS 기반 Windows 응용 프로그램을 실행할 수 있게 한다.
4. 쉬밍(Shimming)
응용 프로그램 호환성 문제는, 특히 긴 파일 이름, 다중 사용자 및 최소 권한 개념과 관련하여 일부 응용 프로그램이 제대로 작동하지 못하게 만들 수 있다. 예를 들어, NTFS 보안 설정에도 불구하고 전체 파일 시스템에 대한 쓰기 권한을 가지고 있다고 잘못 가정하는 경우가 있다.
이러한 문제를 해결하기 위해 이후 버전의 윈도우 응용 프로그램 호환성 계층에는 상당수의 심(shim)이 존재한다. 심은 과거의 운영체제 환경과 다른 프로그래밍 관행을 염두에 두고 작성된 오래된 응용 프로그램(레거시 응용 프로그램)이 수행하는 API 호출을 중간에서 가로채고 수정하는 역할을 한다.[6] 이를 통해 오래된 프로그램이 현재의 윈도우 환경에서도 최대한 문제없이 실행될 수 있도록 지원한다. 이러한 심의 수정 사항은 여전히 널리 사용되는 레거시 응용 프로그램에서 새로운 호환성 문제가 발견될 때마다 꾸준히 업데이트된다.[7]
4. 1. 하위 호환성 유지
윈도우 95 운영 체제 라인이 설계될 때, 핵심 요구 사항은 레거시 응용 프로그램이 해당 플랫폼에서 계속 작동할 수 있도록 8.3 파일 이름과의 하위 호환성을 유지하는 것이었다. 따라서 윈도우 95 및 이후 운영 체제는 긴 파일 이름과 짧은 파일 이름이 모두 디렉터리 항목에 저장되는 호환 모드를 지원한다.하지만 응용 프로그램 호환성 문제는 여전히 발생할 수 있으며, 특히 긴 파일 이름, 다중 사용자 및 최소 권한의 개념과 관련하여 일부 응용 프로그램이 작동하지 못하게 할 수 있다. 예를 들어, NTFS 보안이 적용되어 있는데도 전체 파일 시스템에 대한 쓰기 액세스를 잘못 가정하고 작동하려 할 수 있다.
또한, 하드웨어에 직접 접근하려는 레거시 응용 프로그램은 사용자 모드에서 그렇게 할 수 없다. 레거시 응용 프로그램은 도스 및 윈도우 9x 시대의 시스템 구성 파일(AUTOEXEC.BAT, CONFIG.SYS)이 윈도우 NT 기반 커널에 존재하지 않아 실패할 수도 있다. 이 때문에 해당 파일들을 사용하지 않는 운영 체제에서도 내용이 없는 빈 버전의 파일들이 계속 유지되어야 하는 경우가 있다.
이러한 문제를 해결하기 위해 이후 버전의 윈도우 응용 프로그램 호환성 계층에는 상당수의 심(shim)이 존재한다. 심은 다른 운영 체제 환경과 모범 사례를 염두에 두고 작성된 레거시 응용 프로그램에서 수행한 API 호출을 가로채고 수정하는 역할을 한다.[6] 이러한 수정 사항은 여전히 널리 사용되는 레거시 응용 프로그램에서 문제가 발견될 때마다 수시로 업데이트된다.[7]
4. 2. 하드웨어 직접 접근 문제
하드웨어에 직접 접근하려는 레거시 응용 프로그램은 사용자 모드에서 이를 수행할 수 없다. 또한, DOS 및 Windows 9x 시대의 시스템 구성 파일인 AUTOEXEC.BAT와 CONFIG.SYS가 Windows NT 기반 커널에는 존재하지 않기 때문에, 이러한 파일의 부재로 인해 레거시 응용 프로그램이 제대로 작동하지 않을 수 있다. 이 때문에 해당 파일들을 사용하지 않는 운영 체제에서도 길이가 0인 형태의 AUTOEXEC.BAT 및 CONFIG.SYS 파일이 계속 사용되기도 한다.4. 3. API 호출 가로채기 및 수정
이후 버전의 윈도우 응용 프로그램 호환성 계층에는 상당수의 심(shim)이 존재한다. 이 심들은 과거의 운영체제 환경을 기준으로 만들어진 오래된 응용 프로그램(레거시 응용 프로그램)이 API를 호출할 때, 이를 가로채고 현재 환경에 맞게 수정하는 역할을 한다.[6] 예를 들어, 오래된 프로그램은 현재는 사용되지 않는 파일 접근 방식이나 시스템 설정을 사용하려 할 수 있는데, 심이 이를 중간에서 조절하여 프로그램이 정상적으로 작동하도록 돕는다. 이러한 심의 수정 사항들은 여전히 많이 사용되는 오래된 인기 응용 프로그램들에서 새로운 호환성 문제가 발견될 때마다 꾸준히 업데이트된다.[7]참조
[1]
웹사이트
WOW Environment Remains in Memory After Quitting 16-Bit Program
http://support.micro[...]
Microsoft
2007-02-22
[2]
웹사이트
Starting 16-Bit WOW Subsystem on Windows NT Server
http://support.micro[...]
Microsoft
2016-11-01
[3]
웹사이트
Disabling the MSDOS and WOWEXEC Subsystems on Terminal Server
https://support.micr[...]
Microsoft
2006-11-01
[4]
웹사이트
Windows NT Subsystems and Associated Files
http://support.micro[...]
Microsoft
2006-10-31
[5]
웹사이트
PRB: Relocation of Ntvdm.exe Fails on Multiprocessor Computers
http://support.micro[...]
Microsoft
2006-11-21
[6]
웹사이트
Application Compatibility
https://technet.micr[...]
Microsoft
[7]
웹사이트
Application Compatibility Update for Windows 7 and Windows Server 2008 R2: August 2010
http://support.micro[...]
Microsoft
2010-08-24
[8]
웹인용
WOW Environment Remains in Memory After Quitting 16-Bit Program
http://support.micro[...]
Microsoft
2013-02-13
[9]
웹인용
Starting 16-Bit WOW Subsystem on Windows NT Server
http://support.micro[...]
Microsoft
2013-02-11
[10]
웹인용
Disabling the MSDOS and WOWEXEC Subsystems on Terminal Server
http://support.micro[...]
Microsoft
2013-02-13
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com