TECH 으로 돌아가기
TECH HACKER NEWS 2026.10.27 22:02 8분 읽기 26 READS

64비트 윈도우에서 16비트 프로그램을 되살리는 winevdm(otvdm), 어떻게 동작할까

64비트 윈도우에서 16비트 프로그램을 되살리는 winevdm(otvdm), 어떻게 동작할까
SOURCE IMAGE · HACKER NEWS
64비트 윈도우에서 16비트 프로그램을 되살리는 winevdm(otvdm), 어떻게 동작할까

64비트 윈도우가 놓아버린 16비트 프로그램

오래된 교육용 CD나 90년대 업무 프로그램을 윈도우 10이나 11에서 실행했다가 ‘64비트 버전의 Windows와 호환되지 않는다’는 메시지를 본 적 있나요? 범인은 대개 16비트 프로그램이에요. 윈도우 3.1 시절까지의 프로그램은 16비트로 만들어졌는데, 64비트 윈도우는 이걸 아예 실행하지 못하거든요.

32비트 윈도우에는 NTVDM(NT Virtual DOS Machine)과 WOW(Windows on Windows)라는 호환 계층이 있어서 16비트 앱을 돌려줬어요. 그런데 x64 CPU가 64비트 모드(롱 모드)로 동작하면, 16비트 DOS 코드를 돌리던 ‘가상 8086 모드’를 쓸 수 없어요. 게다가 마이크로소프트가 64비트 윈도우에 16비트 서브시스템을 아예 넣지 않았고요. 윈도우 10까지는 32비트 에디션이라는 탈출구라도 있었는데, 윈도우 11은 64비트 전용이라 그 길마저 막혔어요.

winevdm은 바로 이 빈자리를 메우는 오픈소스 프로젝트예요. 실행 파일 이름을 따서 otvdm이라고도 불러요. 저장소 설명대로 윈도우 1.x, 2.x, 3.0, 3.1용 16비트 프로그램을 64비트 윈도우에서 돌리는 게 목표예요.

어떻게 동작하냐면

핵심은 두 가지 기술을 합친 거예요.

1. CPU 에뮬레이션: 64비트 모드의 CPU로는 16비트 코드를 직접 실행하기 어려워요. 그래서 winevdm은 16비트 x86 명령어를 소프트웨어로 하나하나 해석해서 실행해요. 여기엔 MAME 프로젝트의 x86 CPU 에뮬레이터 코드가 쓰였어요. 쉽게 말해 옛날 CPU를 흉내 내는 통역사를 프로그램 안에 하나 둔 셈이에요.

2. Wine의 Win16 API 구현: 16비트 프로그램은 창을 띄우거나 파일을 열 때 윈도우 3.1의 API를 불러요. KERNEL, USER, GDI 같은 16비트 DLL들이요. 리눅스에서 윈도우 프로그램을 돌려주는 Wine에는 이 16비트 API를 32비트 API로 이어주는 코드가 이미 있었는데요. winevdm은 이걸 가져와서 윈도우 위에서도 돌아가게 만들었어요. 그래서 16비트 앱이 CreateWindow를 부르면, 결국 지금 윈도우에 진짜 창이 만들어져요.

이 구조의 장점은 가상 머신처럼 윈도우 3.1을 통째로 설치할 필요가 없다는 거예요. 16비트 앱 창이 지금 쓰는 데스크톱에 다른 앱처럼 그냥 떠요. 파일도 원래 쓰던 파일 시스템을 그대로 쓰고요.

써보는 방법

GitHub 릴리스에서 압축 파일을 받아 풀고, 명령줄에서 otvdm.exe 프로그램.exe처럼 16비트 실행 파일을 넘겨주면 돼요. 함께 들어 있는 설치 스크립트를 실행하면 레지스트리가 설정돼서, 그다음부터는 16비트 exe를 더블클릭만 해도 winevdm이 알아서 떠요.

특히 쓸모 있는 게 16비트 설치 프로그램이에요. 90년대 후반 32비트 프로그램 중에도 설치 프로그램(setup.exe)만 16비트인 경우가 꽤 많았거든요. 본체는 멀쩡히 돌아가는데 설치를 못 해서 포기했던 프로그램도, winevdm으로 설치까지 끝낼 수 있는 경우가 있어요.

다른 방법과 비교하면

16비트 프로그램을 돌리는 방법은 winevdm 말고도 있어요.

이 중 winevdm은 가볍고 데스크톱에 자연스럽게 녹아드는 쪽이에요. 대신 모든 앱이 완벽하게 돌아가진 않아요. 하드웨어에 직접 접근하거나 저수준 드라이버에 기대는 프로그램은 문제가 생기기 쉽고요. DOS 프로그램은 원래 목표가 아니라서 DOSBox 같은 도구가 더 맞아요.

한국 개발자에게 주는 시사점

“요즘 누가 16비트 앱을 써?” 싶겠지만, 현장에는 생각보다 많이 남아 있어요. 공장 설비에 연결된 오래된 설정 툴, 소스도 업체도 사라진 사내 업무 프로그램, 90년대 교육용 CD-ROM 타이틀 같은 것들이요. 윈도우 11로 넘어가야 하는데 이런 프로그램 하나 때문에 구형 PC를 못 버리고 있다면, 가상 머신을 꾸리기 전에 winevdm부터 테스트해 볼 만해요.

다만 실무에 넣기 전에 조심할 점도 있어요. 레지스트리를 건드리는 도구라서 업무용 PC에 설치하기 전에 별도 환경에서 충분히 검증해야 해요. 중요한 데이터를 다루는 프로그램이라면 결과가 원래 환경과 같은지 꼼꼼히 비교해 보시고요.

공부하기에도 좋은 프로젝트예요. CPU 에뮬레이터와 API 변환 계층이 어떻게 맞물리는지 실제 코드로 볼 수 있는 경우가 흔치 않거든요. 호환성 계층, 에뮬레이션, ABI 같은 주제에 관심 있다면 소스를 한번 둘러보세요.

마무리

한 줄 정리: winevdm은 CPU 에뮬레이션과 Wine의 Win16 구현을 합쳐서, 64비트 윈도우에서 사라진 16비트 호환 계층을 되살려 주는 프로젝트예요.

여러분 주변에도 아직 은퇴하지 못한 16비트 프로그램이 있나요? 그런 레거시는 에뮬레이션으로 살려 두는 편인가요, 아니면 과감히 새로 만드는 편인가요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/otya128/winevdm
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...