Computer >> 컴퓨터 >  >> 시스템 >> Windows 10

64비트 운영체제에서 16비트 앱을 실행할 수 없는 진짜 이유와 해결 방법

컴퓨터가 현대적인 64비트 아키텍처로 넘어온 이후, 많은 사용자들은 예전의 16비트 애플리케이션이 더 이상 실행되지 않는다는 사실을 깨달았습니다. 왜 64비트 시스템에서는 16비트 앱이 실행되지 않는 걸까요?

이 질문에 대한 답은 누구에게 묻느냐에 따라 다르게 들릴 수 있습니다. 우선, 16비트 앱 실행이 '불가능'한 것은 아닙니다. 단지 어려울 뿐입니다. 그리고 그 어려움의 원인은 CPU 아키텍처와 운영체제 양쪽 모두에 있습니다.

헷갈리시나요? 걱정하지 마세요. 이 글을 끝까지 읽고 나면 그 궁금증이 완전히 풀릴 것입니다.

CPU 아키텍처의 역사

역사 강의는 지루하게 느껴질 수 있지만, 64비트 시스템이 16비트 앱을 기본적으로 실행하지 못하는 이유를 이해하려면 반드시 짚고 넘어가야 할 부분입니다. 다행히 이야기는 짧습니다.

1980년대와 90년대를 보내신 분들이라면, 당시 최첨단 기술로 여겨졌던 16비트 컴퓨터들을 기억하실 겁니다.

그 당시에는 실제로 최첨단이었습니다. 구형 컴퓨터들은 1978년 출시된 인텔 8086 프로세서를 탑재했습니다. 이 프로세서는 16비트 주소 지정 방식으로 1MB의 주소 공간에 접근할 수 있었습니다. 이전 기계들이 겨우 64KB 메모리로 동작하던 것을 생각하면 엄청난 발전이었고, 개인용 컴퓨팅의 새로운 시대를 연 순간이었습니다.

이 모드를 리얼 모드(Real mode)라고 부릅니다. 리얼 모드에서는 주소 공간의 일부가 RAM용으로 확보되고, 나머지는 BIOS와 그래픽 카드 같은 하드웨어가 사용했습니다.

그 후 인텔 80286 프로세서가 등장하면서 CPU 아키텍처는 한 단계 더 발전합니다. 286은 16비트 주소 지정으로 16MB의 메모리에 접근할 수 있었고, 보호 모드(Protected mode)라는 새로운 기능도 갖추게 됩니다. 보호 모드는 더 많은 메모리 주소 지정은 물론 멀티태스킹까지 가능하게 해주었습니다. 물론 이 시대에도 구형 16비트 애플리케이션을 리얼 모드에서 실행하는 것이 여전히 가능했습니다.

16비트 시대의 종말, 그러나 완전히는 아니었다

1985년, 인텔은 차세대 프로세서인 인텔 386을 선보였습니다. 이것은 한 번에 32비트 단위로 메모리에 접근할 수 있는 인텔 최초의 CPU였으며, 무려 4GB의 주소 가능한 메모리를 지원했습니다. 당시 사용자들에게 이것은 획기적인 돌파구였고, PC 게임은 곧 전성기를 맞이하게 됩니다.

32비트 아키텍처의 등장과 함께 보호 모드의 확장 버전도 탄생했습니다. 이 확장 보호 모드는 더 많은 메모리 접근을 허용했을 뿐만 아니라, 소프트웨어가 자신이 16비트 코드인지 32비트 코드인지 시스템에 알릴 수 있는 기능 세트도 포함하고 있었습니다. 이를 가능하게 만든 것이 바로 버추얼 86 모드(Virtual 86 mode)로, 본질적으로 내장된 가상화 8086 시스템이라고 할 수 있습니다.

이렇듯 CPU 아키텍처가 세대를 거듭할 때마다 하드웨어(CPU 설계)와 소프트웨어(운영체제 및 애플리케이션)는 여전히 오래된 소프트웨어를 실행하고 싶어 하는 사용자들을 위해 하위 호환성을 유지해 왔습니다. 개인 사용자에게는 편의 기능이었지만, 레거시 시스템에 의존하는 기업과 중소기업에게는 필수적인 요소였습니다.

모든 것을 바꿔버린 64비트 아키텍처

4GB라는 주소 가능한 메모리 한계는 오랫동안 32비트 시스템의 발목을 잡았습니다. 그러나 64비트 프로세서의 등장은 또 한 번의 돌파구가 되었습니다. 64비트 시스템에는 롱 모드(Long mode)라는 새로운 모드가 포함되어 있어, 최대 1,600만 테라바이트의 메모리까지 주소 지정이 가능합니다. 이것이 컴퓨터 애플리케이션의 제약 요소가 되기까지는 아마 아주 오랜 시간이 걸릴 것입니다.

그러나 이 놀라운 발전에는 큰 대가가 따랐습니다. 사용자들이 오랫동안 지원되어 온 '리얼 모드'나 '버추얼 8086 모드'가 필요한 16비트 애플리케이션을 실행하려고 하면, "Program.exe is not a valid Win32 application"이라는 오류 메시지를 마주하게 된 것입니다.

답답한 상황이었지만 세상의 끝은 아니었습니다. 사용자는 에뮬레이터를 사용하거나, 32비트 아키텍처와 운영체제를 갖춘 가상 머신을 설치하여 레거시 16비트 애플리케이션을 계속 사용할 수 있었습니다.

즉, 64비트 시스템이 16비트 MS-DOS 애플리케이션을 '직접' 실행하는 것은 불가능하지만, 우회 방법을 활용하면 충분히 실행할 수 있습니다. 그렇다면 대체 왜 이런 일이 벌어진 걸까요?

64비트 아키텍처에서 NTVDM이 사라진 이유

지난 수십 년간의 32비트 프로세서 세대에서는 운영체제가 구형 16비트 DOS 애플리케이션을 처리하기 위해 많은 노력을 기울여 왔습니다. 그 핵심이 바로 NTVDM, 즉 NT 가상 DOS 머신(NT Virtual DOS Machine)입니다.

이 32비트 애플리케이션은 Windows 운영체제 안에서 실행되며, 버추얼 8086을 통해 16비트 주소 지정을 처리할 수 있는 486 아키텍처를 시뮬레이션했습니다. 문제는 롱 모드 주소 지정 방식이 이를 안전하게 수용할 수 없다는 점이었습니다. DOS 애플리케이션을 지원하려면 사실상 완전한 8086 프로세서 전체를 에뮬레이션해야 했습니다.

결국 마이크로소프트는 최초의 64비트 운영체제를 제때 출시하기 위해 이 기능을 과감히 포기하기로 결정했습니다. 마이크로소프트 공식 지원 페이지에는 "16비트 MS-DOS 및 Microsoft Windows 3.x 유틸리티는 시작되지 않습니다"라고 명확히 명시되어 있습니다.

사과도 없이, 단순히 지원하지 않는다는 것입니다. 시중에 이미 이 작업을 수행할 수 있는 가상화 제품이 넘쳐나는 상황에서, 마이크로소프트는 굳이 이미 존재하는 바퀴를 다시 발명할 필요가 없다고 판단한 것입니다.

64비트 시스템에서 16비트 애플리케이션 실행하는 4가지 방법

64비트 Windows 시스템이 16비트 DOS 애플리케이션을 기본적으로 지원하지 않는다고 해서 불가능한 것은 아닙니다. 몇 가지 추가 도구만 설치하면 됩니다.

클래식 DOS 게임을 좋아하거나, 초창기 컴퓨팅 시절의 레트로 애플리케이션을 사용하고 싶다면 다음 네 가지 방법을 활용해 보세요.

1. DOSBox로 레트로 게임 즐기기

PC에서 오래된 DOS 앱을 실행하는 가장 쉬운 방법 중 하나는 에뮬레이터를 사용하는 것입니다. 그중 가장 인기 있는 것이 바로 DOSBox입니다.

DOSBox는 무료로 배포되며 설치와 설정이 비교적 간단합니다. 구형 DOS 게임을 위한 설정 파일과 프론트엔드 도구도 풍부하게 마련되어 있어 초보자도 부담 없이 시작할 수 있습니다.

특히 좋은 점은 이런 게임들 대부분이 워낙 오래되어 '애반돈웨어(abandonware)'로 분류된다는 것입니다. 합법적으로 무료로 내려받아 플레이할 수 있는 경우가 많습니다.

2. VirtualBox 가상 머신 활용하기

Windows XP나 Windows 7 같은 운영체제는 16비트 애플리케이션을 기본적으로 실행할 수 있었습니다. 따라서 이러한 운영체제를 탑재한 가상 머신을 만들면, 64비트 시스템에서도 동일한 애플리케이션을 실행할 수 있습니다.

이 용도로 가장 잘 알려져 있고 설정이 쉬운 프로그램이 바로 VirtualBox입니다. 무료 오픈소스 가상화 소프트웨어로, 가상 머신 생성부터 게스트 OS 설치까지 직관적인 인터페이스로 진행할 수 있습니다.

단, 설치할 운영체제 선택에 주의하세요. Windows 7 이하 버전을 선택하면 가상 시스템에 오래된 DOS 앱을 손쉽게 내려받아 설치할 수 있습니다.

3. 리눅스(Linux) 사용하기

리눅스에 대한 평가는 사람마다 다르겠지만, 대부분의 리눅스 배포판이 16비트 애플리케이션을 잘 지원한다는 점은 분명합니다. PAE 커널을 사용하는 배포판이라면 32비트 시스템의 4GB 메모리 한계에도 구애받지 않습니다.

방법은 두 가지입니다. 듀얼 부팅 환경을 구성하거나, 가상 머신으로 리눅스를 실행하는 것입니다. 아니면 아예 Windows를 버리고 리눅스로 완전히 갈아타는 것도 하나의 선택입니다. 자신에게 맞는 방식을 고르면 됩니다.

4. 다양한 에뮬레이터 활용하기

DOSBox가 유일한 선택지는 아닙니다. 오래된 DOS 앱을 실행할 수 있는 훌륭한 에뮬레이터가 매우 많으며, 특히 게이머라면 선택의 폭이 더욱 넓습니다.

코모도어 아미가(Commodore Amiga), 라즈베리 파이, 안드로이드, 심지어 클래식 슈퍼 패미컴(SNES)까지 PC에서 에뮬레이션할 수 있습니다.

이것은 빙산의 일각에 불과합니다. 온라인에서 검색해 보면 상상할 수 있는 거의 모든 레트로 앱을 실행할 수 있는 다양한 에뮬레이터 라이브러리를 찾을 수 있습니다. 마이크로소프트가 옛날 16비트 애플리케이션 지원을 포기했더라도, 사용자에게는 여전히 선택지가 남아 있는 셈입니다.

16비트를 포기하지 마세요

64비트 머신에서 16비트 애플리케이션을 실행하는 것이 불가능하다고 생각할 이유는 전혀 없습니다. 기본적으로(natively)는 불가능할지 몰라도, 위에서 살펴본 것처럼 목표를 달성할 수 있는 방법은 무궁무진합니다. DOSBox 같은 에뮬레이터부터 가상 머신, 리눅스 듀얼 부팅까지, 여러분에게 맞는 솔루션을 찾아 추억의 소프트웨어를 되살려 보세요.