나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-09-21 13:42:34

MS-DOS

MS DOS에서 넘어옴
운영 체제
{{{#!wiki style="word-break: keep-all; margin: -16px -11px" UNIX 파일:Linux 로고.svg Linux 파일:Windows 아이콘 2021_화이트.svg Windows
DOS DR-DOS · 파일:MS-DOS 아이콘.svg MS-DOS · 파일:FreeDOS 로고.svg FreeDOS · K-DOS
기타 RTOS · 파일:퓨시아 아이콘.svg파일:퓨시아 아이콘 화이트.svg Fuchsia · TempleOS · ReactOS · BeOS · 하이쿠 · 파일:Mac OS 로고.svg Mac OS · 파일:attachment/OS/2/os2_logo.png OS/2 · CP/M · 모바일 운영 체제 · OpenVMS }}}
취소선 처리된 배포판은 개발 중단된 배포판.

파일:Microsoft 로고.svg파일:Microsoft 로고 화이트.svg
{{{#!wiki style="margin:0 -10px -5px; min-height:calc(1.5em + 5px); word-break:keep-all"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-6px -1px -11px"
<colbgcolor=#393939,#737373><colcolor=#fff>제품군
하드​웨어Surface · Xbox · HoloLens · PixelSense · Zune · Pluton · IVAS
소프트​웨어Windows · Office · Edge · Media Player · Hyper-V · Defender · Visual Studio Code · Visual Studio · Windows Terminal · Microsoft Store · Xbox App · PowerToys · Internet Explorer · MS-DOS · Windows Movie Maker · Autoruns · Clipchamp
서비스Microsoft Azure · OneDrive · Microsoft Copilot · Bing · LinkedIn · Microsoft Docs · Skype · MSN · 정품인증 · Xbox Game Pass · Xbox Cloud Gaming · Xbox network
관련 기술ASF · ASP · Blazor · COM · DCOM · DirectX · 파일 시스템(FAT · NTFS · ReFS) · MFC · .NET(.NET Core · .NET Standard · C# · F# · Visual Basic .NET · Windows Forms · WPF · UWP · .NET MAUI · ASP.NET · ML.NET) · OLE · Q# · Silverlight · Visual Basic · VBA · WASAPI · Windows 커널 · Windows 디자인 · Windows API · Windows Runtime(UWP · WinUI 3) · WMA · WMV · Xamarin · XNA · 하복 엔진 · SAMI · PowerShell · Windows Modern Standby
산하 계열사 및 사업부GitHub · .NET Foundation · Microsoft Gaming · LinkedIn
관련 인물빌 게이츠(은퇴) · 폴 앨런(은퇴) · 스티브 발머(퇴사) · 게이브 뉴웰(퇴사) · 마이크 이바라(퇴사)
사티아 나델라 · 필 스펜서 · 브래드 스미스
기타제니맥스 미디어 인수 · 액티비전 블리자드 인수 · 시작 메뉴 · 빌 게이츠의 굴욕
관련 틀365 제품군 · 하드웨어 제품군 · Surface 제품군 · Windows 제품군}}}}}}}}}

파일:Windows 로고 화이트.svg 버전 일람
{{{#!wiki style="margin:0 -10px -5px; min-height: 26px"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-6px -1px -11px"
파일:MS-DOS 아이콘.svg
DOS 커널
클라이언트 워크스테이션 서버 {{{#!wiki style="margin:0 -10px -5px; min-height: 26px"
{{{#!folding [ 임베디드/모바일 ]
{{{#!wiki style="margin:-6px -1px -11px"
SKU
임베디드 에디션
파일:Windows CE 아이콘_화이트.png CE 커널
1996 CE 1.0
1997 CE 2.x
Poket PC 2000/2002 (CE 3.0)
2002 Mobile 2003/SE (CE 4.x)
2004 Mobile 5.0/SE/6.x (CE 5.x)
2006 CE 6.0
2011 Embedded Compact 7
Embedded Compact 2013 (CE 8.0)
1999 NT 4.0 Embedded
2000 Powered
2002 XP Embedded(FLP 2006)
2005 Embedded for POS
2009 Embedded Standard/POSReady
2010/2011 Embedded Standard 7/POSReady 7(Thin PC)
2012/2013 Windows Embedded 8/Standard 8(Industry)
2013 Embedded 8.1 Industry
파일:silverlight-f9eea009c90bbdf966eb62abee29092a.png Silverlight 프레임워크
2010 Phone 7
파일:Windows 아이콘 2012_화이트.svg NT 커널
2012 Phone 8
2014 Phone 8.1
파일:Windows 아이콘 2012_화이트.svg One 코어
<rowcolor=#212529,#e0e0e0> 2015 10 IoT
2021 11 IoT
2015 10 Mobile }}}}}}}}}
1985 1.x
1987 2.x
1990 3.x
파일:Windows 95.png
9x 기반
1995 (4.0)
1996 Nashville (4.1)
1998(SE 1999) (4.1)
2000 Me (4.9)
파일:Windows 아이콘 1992_화이트.svg
NT 커널
1993 NT 3.1
1994 NT 3.5
1995 NT 3.51
1996 Cairo (NT 4.0)
1996 NT 4.0
파일:Windows 아이콘 2001_화이트.svg
NT 커널
2000 Neptune (NT 5.5) 1999 2000 (NT 5.0)
2001 XP (NT 5.1)
2005 (x64) (NT 5.2)
2006 Vista (NT 6.0)
2009 7 (NT 6.1)
2012 8(RT) (NT 6.2)
2013 8.1(RT) (NT 6.3)
Server 2003(R2 2005) (NT 5.2)
2007 Home Server (NT 6.0)
Server 2008 (NT 6.0)
2009 (R2) (NT 6.1)
Home Server 2011 (NT 6.1)
Server 2012 (NT 6.2)
2013 (R2) (NT 6.3)
파일:Windows 아이콘 2012_화이트.svg
One 코어

(NT 10.0)
2015 10(버전, X 2021)
2018 (Polaris OS, Andromeda OS)
2021 11(버전)
(Factory OS)
Server 2016(Hyper-V)
2017 (반기 채널)
2018 Server 2019(Hyper-V)
2021 Server 2022
2023 (연간 채널)
Server 2025
파일:Windows_Insider_logo.webp
개발 중
shhh...
2025? vNext 2028? Server vNext
파일:Windows 365 아이콘.svg Windows 365 파일:Windows Insider Program.png Windows Insider Program
}}}}}}}}} ||

1. 개요2. 상세3. 커널 구조4. 역사5. 특징6. 버전
6.1. 각 버전별 설명
7. Windows 시대의 MS-DOS8. 파생/호환 버전
8.1. 영향을 받은 운영 체제
9. 기타10. 관련 문서

1. 개요

Microsoft Disk Operating System
(마이크로소프트 디스크 운영 체제)
MS-DOS
파일:external/blogfiles.naver.net/Windows_3.1-2015-08-07-00-22-38.png
한글 MS-DOS 6.2 구동 화면
파일:MS-DOS 아이콘.svg
Windows 3.1부터 사용한 MS-DOS 아이콘[1]

Microsoft운영체제 데뷔작으로 시애틀 컴퓨터사에서 개발한 Q-DOS의 차기작이다.

2. 상세

"Microsoft에서 개발한 Disk OS"라는 단어를 줄여서 공식적으로 대문자 이니셜의 형태가 되었으며, 일반적으로 '엠에스 도스'라고 읽는다. 'DOS'란 원래 System/360이나 PDP-11 같은 메인프레임 시절부터 일반 명사처럼 사용했고 Apple II의 운영 체제도 DOS라는 이름을 사용하지만(Apple DOS 3.3, ProDOS 등), 이 MS-DOS가 워낙 대박을 친 이후로 DOS라고만 하면 문맥상 이 특정한 회사의 특정한 제품인 MS-DOS를 가리키는 경우가 대부분이다.

처음에는 하드웨어 회사인 IBM에 납품하기 위해 그 하청업체인 소프트웨어 회사 Microsoft에서 텍스트 기반 소프트웨어 OS를 개발한 것인데, 이후 IBMPC 관련 기술을 공개하면서 우후죽순처럼 생겨난 PC 제조사들이 전부 IBM과 마찬가지로 MS-DOS를 OS로 채택하면서 마이크로소프트를 지금의 대기업으로 성장시켜 준 1등 공신이 되었다. Windows에게 OS 자리를 물려주기 전까지 IBM PC와 그 호환 기종의 운영 체제 시장을 점령하고 있었다. 초기에는 CP/M-86, 나중에는 DR-DOS같은 경쟁자가 있기는 했지만 큰 의미는 없었다.

2018년 9월 21일, 마이크로소프트에서 MS-DOS 1.25와 2.0의 소스 코드를 MIT 라이선스 하에 GitHub에 공개했다. 2024년 4월 26일에는 MS-DOS 4.0의 소스 코드를 같은 라이선스로 공개했다. #

3. 커널 구조

파일:DOS구조도.jpg

4. 역사

1980년, 기업용 대형 컴퓨터 생산에 주력하던 IBM이 최초의 개인용 소형 컴퓨터인 IBM PC Model 5150을 제작하게 되면서, IBM은 이 새로운 16비트 시스템의 운영체제를 자체적으로 개발하는 것이 아니라 외주를 통해 개발하는 것으로 결정했다. IBM은 원래 메인프레임으로 먹고 사는 회사답게 이전까지 하드웨어와 소프트웨어 모두 자사가 개발하는 정책을 취하고 있었으나, IBM PC에 대해서는 예외로 하드웨어와 소프트웨어 모두 가급적 기존 시장에 나와있는 기술을 복붙 이용하는 것으로 정책을 바꾸었다. 일설에는 그다지 성공할 가능성을 높게 보지 않고 비용을 줄이기 위한 수단으로 그랬다는 이야기가 있다.

이미 이전에 IBM 방식(관료제)로 개인 목적 컴퓨터를 내놓았다가 말아먹은 IBM은 이번엔 독립적인 그룹을 조직해서 아웃소싱과 개방형 구조를 채택하기로 결정했다. IBM 대표단은 처음에 마이크로컴퓨터유닉스 운영 체제인 Xenix를 개발하여 납품한 실적이 있던 마이크로소프트와 접촉했으나[2] 당시의 마이크로소프트의 개인용 컴퓨터 부문은 BASIC 인터프리터 및 오피스 소프트웨어를 주력으로 하고 있었고, (자사 BASIC 인터프리터를 얹어 돌리기 위한) CP/M 운영 체제 개발사인 디지털 리서치를 IBM 담당자들과 연결시켜 줬다.[3]

그러나 실리콘 밸리 개척자였던 게리 킬달에게 IBM의 제안과 협상에 임하는 딱딱한 태도는 별 흥미를 끌지 못했고, 그래서 처음엔 아내이면서 공동 설립자였던 도로시 맥윈 킬달 부사장에게 맡겼는데 (대기업이 으레 첫 단계로 진행하는) NDA(비밀 보호 계약)에 먼저 사인할 것인지 여부를 두고 시작부터 충돌했다. 보통 NDA에는 정보 비밀에 대한 의무를 어겼을 때 얼마까지 배상을 시킬지에 대한 대기업 측의 무시무시한 계약 사항들이 가득하다. 심지어는 게리 킬달이 개인용 경비행기를 타고 놀러 가느라 IBM과의 계약 현장에 안 나타났다는 소문도 있었는데 사실이 아니다. 킬달이 자가용 경비행기를 몰고 있느라 계약 현장에 없었던 것은 맞지만 회사 업무로 이동한 것이었을 뿐이었으며, 오후에 IBM 협상단을 직접 만나 협상을 벌였다. 그 이후에도 IBM과 디지털 리서치는 Microsoft를 중재자로 해서 수 차례 접촉을 가지긴 했지만 디지털 리서치는 이미 큰 성공을 거두어서 성장 가도를 타고 있는 중이었기 때문에 IBM 측의 요구에 약하게 나갈 필요가 없었다고 판단했던 것 같다. 한편 IBM이 먼저 디지털 리서치와 회담을 했지만 대표 게리 킬달의 태도로 인해 돌아섰고, 이 때 마이크로소프트가 낚아챘다는 널리 퍼진 소문이 있지만 이것 역시 사실이 아니다.[4] Chapman, Merrill R.의 저서 'In Search of Stupidity'에서 이에 대해 다루고 있으며, 국내에도 '초난감 기업의 조건'이라는 제목으로 번역해 출간했다.

이때, 8086 기반으로 '시애틀 컴퓨터' 社의 프로그래머였던 팀 패터슨(Tim Paterson)이 제작한 CP/M의 클론 운영 체제인 '86-DOS', 통칭 'Q-DOS'(Quick and Dirty Operating System)라는 운영 체제가 시장에 나와 있었다. IBM PC용으로 나왔던 것은 아니고 8086 기반의 수제 컴퓨터 조립 키트용으로 나왔던 운영 체제였는데, 이 시절엔 이런 게 꽤 많았다. 그 당시 컴퓨터는 일반인들을 위해 만든 것이 아니었기 때문에 1970년 대까지 수제 컴퓨터 조립 키트 형태로 나오는 경우가 대부분이었는데, 대표적인 경우가 Apple I이다. 디지털 리서치와 IBM의 계약이 결렬된 것을 알아챈 빌 게이츠는 Q-DOS를 구입하려고 시도하는데, 여기서 빌 게이츠의 냉혹한 사업가의 면모가 발휘된다. 1981년 1월에 게이츠는 Q-DOS를 구입하려고 시도하는데 이 때 시애틀 컴퓨터에게 Q-DOS를 구입하려는 이유는 얘기하지 않았고, 시애틀 컴퓨터는 Microsoft의 뒤에 IBM이라는 거대한 공룡이 있다는 사실을 알지 못했다. 그래도 일단 시애틀 컴퓨터는 Microsoft에게 일시불에 Q-DOS의 모든 권리를 넘길 생각은 전혀 없었고, 이렇게 되면 나중에는 시애틀 컴퓨터가 IBM을 인지하고 직접 계약하게 되어 Microsoft는 운영 체제로 돈을 벌 수 없게 될 것이므로 빌 게이츠는 시애틀 컴퓨터와 교묘한 계약을 한다. 이는 Microsoft가 일종의 중개자의 역할을 하며 Q-DOS 라이센스를 판매하고 하나를 판매할때마다 $10000 를 지불하는 계약(소스 코드까지 포함하면 $15000)이었다. 그리고 계약금 $10000 을 선지불했다. 또한 이 계약에는 Microsoft가 라이센스를 판매한 고객의 정보를 시애틀 컴퓨터에게 알릴 의무가 없다는 조항도 있었다. 시애틀 컴퓨터 입장에서는 정말로 Microsoft가 여러 컴퓨터 제조 업체에 중개 역할을 하며 많은 라이센스를 판매할 것을 기대했겠지만 실상 고객은 IBM 하나뿐이었고, 결국 빌 게이츠는 1981년 1월부터 7월까지 6개월 동안 고작 하나의 라이센스만 팔았고 이에 대한 $15000 만 지불했다. 즉 계약금까지 합하면 $25000 만 지불한 것이다. 그리고 IBM은 Q-DOS에 대한 많은 변경을 요청했는데, 고객이 누구인지 알리지 않으면서 시애틀 컴퓨터에게 변경을 요청해야 하는 이상한 상황이 되자 그 대신 팀 패터슨을 설득해서 Microsoft로 영입했다. 그리고 IBM PC의 발표까지 고작 2주 남은 7월에 Microsoft는 "세기의 거래" 라고 불리는 게약을 하게 되는데, 그 시점에 시애틀 컴퓨터는 기대했던 라이센스 판매가 고작 1개뿐이라는 데에 실망했고 이미 소문이 알음알음 퍼져서 그 유일한 고객이 IBM이라는 것도 눈치채고 있었다. 그러나 이미 회사의 유일한 소프트웨어 담당자였던 팀 패터슨도 뺏겨서 OS에 대해 지원하는 것도 어려웠고 타이밍도 좋지 않아 현금도 부족한 상황이어서 결국 Q-DOS의 모든 권리를 인수할 회사를 찾았고 Microsoft가 여기에 잽싸게 응해서 $50000 에 모든 권리를 구매하는 계약을 맺었다. 독점 라이센스가 아닌 권리 자체를 구매했고 그 다음 시애틀 컴퓨터에 대해서 Microsoft가 라이센스를 부여하는 식으로 주체가 완전히 바뀌게 된다. 이 거래로 모두가 알다시피 Microsoft는 이후 엄청난 성공을 하게 된다.

최근 세 운영 체제의 소스 코드를 분석하여 연구한 결과, Q-DOS는 CP/M을 베낀 것이 아니며, MS-DOS도 Q-DOS와는 다른 것이었다는 주장이 나오기도 했으나[삭제된_글] 이는 저자의 사업을 홍보하기 위한 수단이라고 비난받고 있으며 편집자 역시 저자가 마이크로소프트 사의 지원을 받고 있음을 명시하고 있다. 빌 게이츠의 저서인 '미래로 가는 길'에 시애틀 컴퓨터에서 초기 개발 단계였던 소프트웨어를 구입했고 그 회사의 선임 엔지니어 였던 팀 패터슨을 영입해 여러 번 수정한 결과 MS-DOS로 탈바꿈했다고 적혀 있으니 실 제품들은 큰 차이가 있을 수 있다. 사실 당시 빌 게이츠는 IBM에게 운영 체제 파는 것을 별로 중요하게 생각하지 않았다. 당시 Microsoft는 BASIC 뿐만 아니라 포트란 등 다양한 CP/M용 언어 소프트웨어들을 판매하고 있었고, BASIC의 경우 어차피 OS가 없어도 ROM에 기본으로 탑재되므로 상관이 없었으나 IBM에게 다른 소프트웨어들도 다 같이 팔아야만 했고, BASIC을 제외한 다른 소프트웨어들을 구동하기 위해서는 CP/M이건 Q-DOS건 일단 해당 운영 체제를 어떻게든 IBM이 쓰게 만들어야 했고, 이에 협상 결렬로 CP/M을 판매하지 않기로 한 이상 Q-DOS를 자신이 사서라도 IBM에 납품해야 했던 것이다.[6] 결국 처음 계약했을 때에는 MS-DOS가 별로 중요한 것도 아니었고 Microsoft의 BASIC을 제외한 다른 소프트웨어들을 같이 팔기 위한 수단에 불과했다.

그러나 이 Q-DOS의 일부에 CP/M의 지적 재산권을 침해하는 부분이 있음을 파악한 IBM에서는 디지털 리서치와 재접촉, 결국 IBM PC의 공식 운영 체제는 마이크로소프트의 MS-DOS와 디지털 리서치의 CP/M-86을 둘 다 사용하는 것으로 결정했다. 실제로 PC와 운영 체제는 세트가 아니었으며 구매자가 하드웨어와 운영 체제의 조합을 선택하는 방식이었고, IBM에서도 'IBM PC에는 운영 체제가 세 가지나 된다'는 점을 장점으로 내세웠다(CP/M-86, IBM PC DOS, UCSD p System). 언론과 기술업계 측에서도 완성도 높고 고급인 CP/M을 높게 쳤으며, 기존 핵심 응용 프로그램을 개발하던 업체들도 CP/M-86용 버전을 앞다퉈서 출시했기에 초반엔 CP/M이 잘 나갔다. 문제는 가격이었는데 CP/M-86의 가격은 250달러, MS-DOS는 40달러였고 결국 CP/M-86은 8비트 시장에서의 대성공과 달리 IBM PC에서는 그다지 팔리지 않았다. 원체 잘 나갔던 CP/M이었던지라 콧대를 좀 세웠던 모양이다. 이후 게리 킬달은 가격 차이를 IBM의 정책 탓으로 돌렸으나 실제로는 자신들의 제품을 '엔터프라이즈' 용으로 여겼으며, 1983년 CP/M 이스트 컨퍼런스에서도 가격 정책에 의문을 제기하는 참석자들에게 게리 킬달이 직접 '제 값이다' 라고 주장한 것으로 볼 때 디지털 리서치는 프리미엄을 놓칠 생각이 없었던 것으로 보인다.

어쨌거나 시애틀 컴퓨터의 Q-DOS 1.10은 MS-DOS 1.10 이라는 이름으로 일반 시장에 공급됐고 이는 다시 IBM에 OEM으로 공급되면서 PC-DOS라는 이름으로 들어갔다. 그런데 IBM과의 계약에서 마이크로소프트가 '운영 체제에 관한 모든 권리는 마이크로소프트가 가짐'이라는 조항을 계약서에 집어넣었다. 이 덕분에 IBM의 PC 기술 공개가 PC 산업은 크게 흥하게 했지만 정작 IBM의 하드웨어 매출은 급감시킨 반면 마이크로소프트는 크게 성장시켰고 이로 인한 이익은 IBM에겐 단 한 푼도 돌아가지 않았다. IBM은 그때서야 후회했지만 이미 운영 체제 시장은 마이크로소프트에게 점령당한 상태였고, OS/2를 개발해 운영 체제 시장을 되찾기 위해 노력했지만 결국 윈도우에게 완전히 밀려 OS/2는 사라지고 말았다. 현재 IBM은 IBM PC 부문을 중국의 레노버에게 매각하고 메인프레임 시장 및 기업 컨설팅, 통합 솔루션으로 먹고 살고 있다. 이 아픈 과거 때문에 IBM의 노트북 ThinkPad의 키보드에는 레노버에 IBM PC 사업이 팔리기 전까지 윈도우 키가 없었다.

이후 MS-DOS는 확대하는 IBM PC 시장의 주력 운영 체제로서 계속해서 버전 업데이트를 해 나갔으나, 1994년 버전 6.22를 끝으로 주력 운영 체제의 자리를 이듬해에 나온 Windows 95에 넘겨주었다. Windows 95 이후의 MS-DOS의 위상에 대해서는 하술했다.

5. 특징

개인용 컴퓨터의 컴퓨팅 파워가 미약했던 1980년대 초에 등장한 운영 체제이니만큼 멀티 태스킹을 지원하지 못하기 때문에 싱글 태스킹 & 싱글 유저로만 작업을 진행하며 현재 실행하는 프로그램이 시스템 자원을 독점하는 형태이다. 나중에 인텔 80286이 나오면서 하드웨어 환경은 멀티 태스킹을 지원할 수 있게 되었지만 IBM PC 호환 기종 컴퓨터들은 Windows 95가 나오기 직전까지 MS-DOS를 주로 사용했기 때문에 이를 제대로 활용하지 않는 경우가 많았다. IBM에서 만든 Topview나 쿼터덱(Quaterdeck)에서 만든 DESQview 같은 멀티 태스킹을 지원하는 셸 응용 프로그램들을 사용해야만 했다. 또 '램 상주 프로그램(Terminate and Stay Resident, TSR)'이라는 개념이 있었다. 원래 MS-DOS에서는 프로그램을 한 번에 하나 밖에 실행하지 못하기 때문에 평소에 커맨드 셸인 COMMAND.COM을 실행하다가 응용 프로그램을 실행하면 컴퓨터의 전체 제어권을 응용 프로그램에게 넘겨 주고 응용 프로그램을 종료할 때 다시 운영체제에게 제어권을 되돌려 주는 식으로 운용하는데, 이를 약간 비틀어 프로그램을 종료하지 않고 램의 일부분에 남겨둔 채 COMMAND.COM으로 제어권을 되돌려 주고(HDD 없이 플로피 드라이브 1개만 있는 컴퓨터에서, 부팅 후 게임 디스크로 갈아끼워 게임을 하다가 게임을 종료하면 COMMAND.COM이 없다면서 오류 메시지를 뜨는 이유가 이것이다) DOS보다 더 상위의 커널에서 동작하는 인터럽트 벡터에 모니터링 코드를 추가시켜 특정한 키를 입력하거나 하는 트리거 조건을 감지하면 원래의 프로그램을 실행하는 방식으로 멀티태스킹을 흉내내는 방법도 있었다.

유저 인터페이스는 CLI(Command Line Interface)만 지원한다. 명령 프롬프트에 직접 명령어를 기술하여 파일 복사, 삭제, 실행 등의 작업을 하게 되는데 윈도우 같은 GUI 운영 체제부터 컴퓨터를 접하기 시작한 세대는 프로그래머가 아닌 이상 볼 일이 거의 없을 것이다. 아이콘은 하나도 안 보이고 칠흑의 우주 같은 화면에 투박한 영문 글씨만 떠서 커서 하나만 깜박인다. 이러한 어려움을 해결하기 위해 소프트웨어 회사들은 복잡한 DOS 명령어를 풀다운 메뉴 방식으로 쉽게 실행할 수 있게 만든 프로그램인 셸 응용 프로그램들, 예를 들어 센트럴 포인트의 PC Tools나 피터 노턴 컴퓨팅의 노턴 유틸리티, Norton Commander 등이 나왔다. 한 개의 셸 프로그램 안에 여러 명령어가 들어있는 PC툴스와 달리 노턴 유틸리티는 각각의 유틸리티가 1개의 프로그램이었다. 한국에서도 PC통신 자료실 등에 여러 셸 프로그램들이 등장하였고, 그 중에 최정한씨가 만든 Mdir이 반 표준처럼 사용될 정도로 매우 유명했다. Microsoft도 1988년에 내놓은 MS-DOS 4.0부터는 'DOS Shell'이라는 셸 응용 프로그램을 내장하기도 했다. DOS Navigator나 Volkov Commander 같은 프로그램들은 상당히 나중까지 개발되었다. 특히 Volkov Commander는 전체가 어셈블리로 제작되어 전체 용량이 100KB도 되지 않을 정도로 최적화되어 있다.

MS-DOS 본체의 용량은 독립형 최종 버전 6.22에서조차 6 MB 미만이지만, 기능과 명령어에 대해 해설하는 서적의 두께는 웬만한 Windows 운영 체제 해설 서적보다 두껍다. Windows에서는 보조 프로그램이라고 불리는 부가 유틸리티 프로그램에 대한 설명 때문에 그렇고, 난해한 명령어가 산적해 있기 때문이다. 다만 이런 명령어 입력 체계는 한 가지 장점이 있는데, DOS 명령어만으로도 개발할 수 있는 범위가 넓다. 일괄 처리(batch) 파일을 작성해서 간단한 게임까지도 만들 수 있다. 좀 삽질(?)스러운 방법이지만 특정 명령어를 사용하면 컴퓨터와 프린터를 이용한 타자기(...)도 만들 수 있다.[7]

6. 버전

출시일로부터 40년 이상 경과
출시일로부터 35년 이상 경과
출시일로부터 30년 이상 경과
출시일로부터 25년 이상 경과
출시일로부터 20년 이상 경과
0.1 1980년 8월
1.0 1981년 8월
1.1 1982년 5월
2.0 1983년 3월
2.1 1983년 11월
3.0 1984년 8월
3.1 1985년 4월
3.2 1986년 3월
3.3 1987년 4월
3.31 1987년 11월
4.0 1988년 7월
5.0 1991년 6월
6.0 1993년 5월
6.2 1993년 9월
6.21 1994년 2월
6.22 1994년 4월
7.0[8] 1995년 8월
7.1[9] 1996년 8월
8.0[10] 2000년 9월

6.1. 각 버전별 설명

7. Windows 시대의 MS-DOS

Windows 3.1까지는 MS-DOS의 그래픽 프로그램으로 동작했다. MS-DOS를 기반으로 보호 모드를 통한 광대한 메모리, 그리고 램상주(TSR)와 같은 인터럽트 우회 방식이 아닌 제대로 된 멀티태스킹을 지원하며 Windows API를 통해 프로그래밍할 수 있는 환경을 제공했다. 아직 여기까지는 MS-DOS로 부터 하드웨어 제어권을 모두 빼앗아오는 구조가 되지는 못했기 때문에 많은 사람들이 셸 취급을 하고는 했다.

Windows 95부터는 부트 로더 및 DOS 응용 프로그램 호환 계층으로 관여했다.[12] 부팅 시퀀스가 POST(전원 ON 후 자가 점검) > MS-DOS 구동 > Windows 실행 순으로 진행한다. 이때 실행되는 윈도우는 이전 3.1까지의 윈도우와는 달리 모든 하드웨어 제어권을 MS-DOS로부터 빼앗아오고, 이후 DOS는 내부적으로 VDM을 통해 호환 계층으로만 수행한다. 이후 종료 버튼을 통해 MS-DOS로 다시 시작을 고르면 이 제어권을 다시 DOS로 넘겨주는 형태가 되지만, 그저 DOS에서 뜨는 하나의 프로세스로서의 WIN.COM이 수행 종료되던(그래서 DOS에서 HIMEM과 EMM386을 별도로 띄워야 했던) 이전 3.1까지의 윈도우와는 달리, DOS로 다시 웜부팅되는 방식을 취하므로 보호 모드가 아닌 실제 모드(real mode) DOS로 재부팅되게 된다. MS-DOS에서 독립형 최종 버전은 6.22였지만 Windows 9x 계열에 상기의 이유로 MS-DOS가 있었는데, Windows 95에 7.0, 95 OSR2와 Windows 98, 98 SE에는 7.1, Windows Me에 8.0 버전의 MS-DOS가 들어갔다. 소비자가 마지막으로 (독립적으로) 본 최종판은 6.22였지만, 진짜 최종판은 Me에 포함한 8.0인 셈이다. 그래서 Windows Me 역시 숨김 속성 해제를 하면 MS-DOS 관련 파일들이 보였으며 이 파일들을 잘못 건드리면 Windows 부팅이 불가능했다.

MS-DOS 7과 8은 단순히 상위 버전이면서 Windows에 포함된 것이 아니라, 해당 Windows에 맞게 부팅 방식과 시스템 최적화에 맞추어 변형이 되었기 때문에 이전 버전의 DOS보다 오히려 기능이 제한된 것도 있다.

MS-DOS 7은 윈도우 98 시스템 DLL 파일 안에 특수한 형태로 통째로 패키징되어 들어가 있다. 여기에는 특수한 사연이 있는데, Windows XP가 가정용 컴퓨터를 대체하기로 결정된 시점 (Windows ME가 DOS 기반 가정용 OS로 중간 단계로 개발되기로 결정) 이전, Windows 2000의 개발 초기에는 해당 버전이 Windows NT와 Windows 98을 계승해서 기업용과 가정용을 아우르는 버전이 되기를 목표로 했었다. 이 때문에 일부 초기버전의 Windows 2000은 Windows 98에서 업그레이드(그리고 파일시스템을 NTFS로 변환하지 않고 FAT 그대로 유지하는 옵션을 선택)하면 Windows 98에서 MS-DOS 7을 추출해서 C드라이브 밑에 별도의 디렉토리로 따로 보관하고, NT 방식(Windows 2000)과 DOS 방식(MS-DOS 7)의 듀얼 부팅 모드를 구성해주는 기능을 가지고 있었다. 그러나 윈도우 2000이 기업용으로 방향을 틀면서 해당 기능은 사장되었고, 정식 판매버전에서는 설치 단계에서 듀얼부팅 구성 같은 기능들이 제거되었다. 그래도 일부 흔적으로서 남은 것이 Windows 98에서 MS-DOS 7의 기능을 추출해서 압축을 풀어주는 기능이었고, 이것을 사람들이 발견해서 따로 빼낸 다음, 독립적으로 부팅을 할 수있도록 여러모로 손을 본 것이 인터넷에 돌아다니는 MS-DOS 7.0 또는 7.1 파일들이다.

MS-DOS 8은 더욱 특수해서, 애초에 Windows ME가 개발되는 과정에서 컴퓨터의 부팅 성능을 최적화하기 위해 여러 시스템 파일들의 역할이나 구조를 상당히 많이 변경한 것이 반영되어 있다. 예를 들면 IO.SYS 파일이 단독 파일이 아니라 커널의 필수 시스템 드라이버들을 포함한 압축파일로 변경되어 윈도우 부팅시에 메모리에서 압축을 푼다던지, CONFIG.SYS와 AUTOEXEC.BAT 파일에서 SET가 아닌 모든 명령어를 스킵하여 모든 DOS 드라이버를 무시하고 최대한 빨리 윈도우로 진입하게 만들어져 있다든지 등등. 게다가 윈도우에서 새로 도입된 여러 가지 보호기능 때문에 여러 DOS 명령어의 시스템을 직접 건드리는 기능들 역시 필연적으로 수행이 불가능하도록 칼질이 가해졌다. 결과적으로 MS-DOS 8을 이전 버전들처럼 따로 떼어내어 사용하기 위해서는 단순히 파일을 복사하고 추출하는 수준이 아니라, 아예 대다수 시스템 파일들의 내용을 패치해서 동작을 바꾸고 없는 기능을 추가하는 등 대대적인 수정을 해야만 했다. 외국에는 실제로 이 방대한 작업을 해낸 사람들도 있지만, 원래부터 기능들이 많이 제외된 버전이기에 MS-DOS 6은 커녕 7보다도 기능이 없는, '부팅은 가능한' 정도의 물건이다.

Windows 포함 버전들 중 7.1의 경우엔 중국 해커집단인 CDU(China DOS Union)에서 독립적으로 설치, DOS로 직접 부팅할 수 있도록 추출한 버전이 있으나, 8.0의 경우엔 단독으로 설치하는 패키지는 따로 없다. Windows ME의 응급 복구 디스크를 작성하면 8.0으로 부팅하는 IO.SYS/MSDOS.SYS/COMMAND.COM을 입수할 수는 있다.

Windows NT는 MS-DOS와 무관하게 설계한 운영 체제였으나, 호환성을 보장하기 위해 NTVDM(NT Virtual DOS Machine)을 넣었다. [13] 이는 Windows 10에까지 이어졌다. x86 CPU의 가상 8086 모드를 이용한 기능인데, 이 덕분에 완전하지는 않지만 MS-DOS 응용 프로그램과 16비트 윈도우 응용 프로그램은 WoW(Windows on Windows)의 도움까지 받아 어느 정도는 실행이 가능했다. 설정만 잘 만지면 게임도 어느 정도는 돌릴 수 있었을 정도였다. 그러나 Windows Vista 이후부터는 64비트 운영 체제가 등장했고, 이를 설치한 경우 AMD64의 롱 모드(64비트 모드)에서는 가상 8086 모드를 사용할 수 없기 때문에 NTVDM과 WoW를 제거할 수밖에 없었으며, 그래서 더 이상 MS-DOS를 비롯한 16비트 응용 프로그램을 사용할 수 없게 되었다. 64비트 운영 체제에 있는 WoW는 WoW 64로서 32비트 응용 프로그램의 실행을 돕고 있다. 32비트 운영 체제를 설치하면 Windows 7까지는 어느 정도 실행이 가능했으나, UEFI GOP 규격 드라이버가 들어가 있는 최신 그래픽 카드와 디스플레이 드라이버 모델이 WDDM(Windows Display Driver Model)으로 바뀐 Windows 8은 전체 화면 모드로 전환하는 DOS 응용 프로그램은 경고 메시지를 띄우며 실행이 되지 않는다. 이유는 UEFI GOP 규격 드라이버와 WDDM 1.2 규격의 디스플레이 장치 드라이버는 과거 VGA의 비디오 모드를 설정할 수 있었던 BIOS 인터럽트 호출, int 10H를 더 이상 지원하지 않기 때문이다.

NT 기반의 윈도우에서는 '명령 프롬프트'(cmd.exe)로 MS-DOS 비슷한 환경을 사용할 수 있다. 다만 cmd.exe는 명령어 환경을 MS-DOS처럼 흉내낸 프로그램이지 실제 MS-DOS는 아니다. 리눅스나 유닉스의 셸에서도 커스터마이징을 하면 MS-DOS 명령어를 쓸 수 있다. 예를 들어 리눅스에서 'dir'을 치면 'ls-l'를 실행한 것과 같게 만들 수 있다는 이야기이다. MS-DOS의 명령어를 거의 그대로 준용하지만 어떤 DOS 응용 프로그램도 실행할 수 없다. 명령 프롬프트에서만 먹히는 각종 고급 기능 때문에 아직도 사용하는 사람은 있는 편이다. 어쨌거나 아직도 cmd.exe의 존재로 인해 MS-DOS의 영향력은 완전히 사라지지는 않은 셈이다. 이후에 PowerShell이라는 것도 나왔는데 이건 MS-DOS와는 거리가 멀고 POSIX 호환에 가깝다.

NTVDMx64라는 NTVDM를 64비트 윈도우에 이식하는 프로젝트가 있다. 다만 유출된 Windows NT 4.0 소스 코드를 사용한거라서 저작권 문제로 사용자가 직접 소스 코드를 받아서 컴파일해야 하지만 누군가가 컴파일된 버전을 올렸다.[14] 참고로 다운받으면 백신 프로그램에서 바이러스로 진단하는데, 오진이므로 안심해도 된다.[15] 참고로 이 프로그램의 장점으로는 그래픽 모드 프로그램도 창에서 실행할 수 있다.[16] 16비트용 Windows 앱도 실행할 수 있는 OTVDM도 있다.

MS-DOS에서는 윈도우 프로그램들을 실행할 수 없다. 실행하면 "This program cannot be run in DOS mode."라는 오류 메시지가 뜨면서 실행이 안 된다. 번역하면 "DOS 모드에서 이 프로그램을 실행할 수 없습니다."로, 이는 초기 윈도우 실행 파일의 확장자가 EXE로 MS-DOS와 동일했고 윈도우에서도 DOS 응용 프로그램 호환성을 위해 DOS 모드를 지원했기 때문에, 윈도우 프로그램을 MS-DOS 또는 DOS 모드에서 실행하는 실수를 대비하여 Visual Studio 개발 툴에서 프로그램을 빌드하면 자동 추가되는 오류 메시지이다(exe 프로그램의 확장자를 txt로 바꿔도 "This program cannot be run in DOS mode."가 그대로 나온다). 윈도우용 실행 파일을 16진수 편집 프로그램으로 열어보면, PE(Portable Executable) 헤더 앞에 짤막한 도스 프로그램이 붙어 있는 것을 볼 수 있는데, 바로 이 오류 메시지를 출력하는 프로그램이다. 한글 MS-DOS에서도 이 메시지가 영어로 뜬다. 16비트 윈도우 프로그램들은 "This program requires Microsoft Windows."라고 나오며, 직역하면 "이 프로그램은 Microsoft Windows가 필요합니다."이다. 그리고 16비트 윈도 프로그램들은 PE 파일 구조체가 아닌 NE(New Executable) 파일 구조체를 쓴다. 참고로 EXE 파일의 PE 헤더에는 DOS 헤더 및 스텁을 먼저 포함했으며 크기는 64 바이트(0x40)이다. 여기가 프로그래밍 가능하며 실제 실행도 된다는 점을 이용한 해킹/보안 테크닉도 있었다.

한글을 포함한 타 2바이트 언어판의 MS-DOS 창의 경우 일본어판과 다르게 8:5(16:10)비율[17]의 해상도가 기본으로 되어있지 않아 가독성이 너무 떨어진다. 이는 타 언어판들이 별도로 VGA를 강제하지 않던 것[18]과 달리, 일본어판 IBM 호환 DOS는 태생부터 한자 지원을 위해 VGA가 요구되었던[그래서] 사정에 따른 것으로 보인다. Windows NT에서는 명령플롬프트의 폰트가 VGA에 맞게 개선되었다.

8. 파생/호환 버전

8.1. 영향을 받은 운영 체제

MS-DOS와 직접적인 호환성은 없지만 영향을 많이 받은 운영 체제들이다. 대체로 일본계 컴퓨터에 많이 채용했다.

9. 기타

10. 관련 문서



[1] 로고 자체는 MS-DOS 5.0 시절부터 있었으며(제품의 패키지 박스에 로고로 박혀 있는 등), 도스 관련 각종 출판물에 저 로고가 사용되는 경우가 왕왕 있었다. 해당 아이콘은 그것을 윈도우 3.1의 16색 저해상도로 디더링한 것. Windows 95/98 시절에 MS-DOS 프로그램의 바로가기를 만들면 호환성 설정값을 저장하는 PIF 형식의 파일이 생겼는데, 이 바로가기의 아이콘이 이것으로 설정되었다. Windows XP의 WINDOWS 폴더나 windows\\System32\\nlsfunc.exe의 속성에서도 볼 수 있다. Windows 7은 아이콘 변경 창에서 PIFMGR.DLL를 입력하면 볼 수 있으며, MORICONS.DLL에도 도스 관련 아이콘들이 많이 있다.[2] IBM의 John R. Opel이 빌 게이츠의 소개로 디지털 리서치를 찾아갔다는 교차 자료[3] 당시의 마이크로소프트가 Xenix를 IBM PC의 운영 체제로 밀어붙히지 않은 것은 Xenix가 유닉스 파생인 이상 벨 연구소(이후 AT&T)에서 라이선스를 얻어야 했고, 유닉스와 마찬가지로 Xenix 또한 일반 사용자들을 위한 제품은 아니었기 때문인 듯하다. 어쨌든 IBM PC 출시 이후 마이크로소프트는 IBM PC용 Xenix도 출시했다.[4] #[삭제된_글] #[6] 정확히는 IBM은 뭐가 어찌됐든 OS를 탑재할 생각이었으므로, CP/M과 계약이 결렬되었다고 해도 어차피 OS없이 PC만 판매할 생각은 전혀 없었으니 딱히 Microsoft가 소프트웨어 판매 때문에 전전긍긍했던 것은 아니다. 다만 IBM은 PC 사업에 대해 그리 잘 알지 못했고, 따라서 Microsoft를 믿고 소프트웨어 부분은 거의 전권을 맡겼으므로 빌 게이츠가 Q-DOS를 소개하면서 IBM이 직접 구매할것인지 Microsoft가 구매할것인지 물어봤을 때도 Microsoft에게 구매를 맡겼다. 굳이 말하자면 운영 체제를 못 구하면 IBM PC 사업 자체가 무산될 가능성이 있었으므로 Microsoft 가 급했던 이유는 이 이유가 훨씬 크다.[7] 명령어는 'copy con prn' 즉 키보드에 입력하는 대로 프린트하란 뜻이다. 도트 프린터가 없는 현재는 삽질 중의 삽질이지만, 기능 자체는 copy라는 단순한 '복사' 기능 명령어의 확장이란 점에서 DOS 특유의 광범위한 기능을 알 수 있다.[8] Windows 95[9] Windows 95 OSR2 ~ 98 SE[10] Windows Me ~ XP(DOS 8.0 기반 시동 디스크)[11] 참고로, 도스의 chkdsk와 지금의 Windows에 있는 chkdsk는 다르다.[12] 윈도우 9x에서 열리는 CLI 쉘 창은 VDM(Virtual DOS Machine)이라 불렀으며, 실제로 높은 수준의 DOS 호환성을 가지고 있었다.[13] Windows 9x는 VxD라는 드라이버 모델을 통해 하드웨어가 VDM에서 DOS 호환성을 가지도록 하였으나 윈도우와 DOS 모두에게 인터페이스를 노출하는 VxD의 난해한 드라이버 모델은 저열한 드라이버를 양산하여 무수한 파란 화면을 띄우는 원인이 되었고 이에 따라 NT계열에서는 드라이버 모델로 WDM만 사용하도록 강제하게 되었다. 이로 인해 NTVDM에서는 사운드, 조이스틱, 미디와 같은 하드웨어와의 접근이 아예 안되는 수준으로 막히게 되었으며, 이를 극복하기 위해 VDMSound라는 프로그램이 만들어지기도 하였다.[14] #[15] 개발자 답변[16] 32비트 순수 NTVDM에서는 그래픽 모드 전환 시 강제로 전체 화면 모드로 전환된다. 참고로, Windows Vista와 Windows 7의 경우 VGA 호환 그래픽 드라이버를 사용해야만 도스나 콘솔 프로그램에서 전체 화면 모드 사용이 가능하다.[17] IBM PC 호환기종의 경우 1.42:1 비율.[18] 허큘리스/CGA/VGA를 지원했다.[그래서] DOS/V였던[20] 바이오스에 따라 지금 인식된 USB Mass Storage의 형식을 FDD/HDD/CDROM/ZIP드라이브들 중 무엇으로 에뮬레이션할 지 강제할 수 있는 옵션이 있는 경우도 있다. 대부분 바이오스가 자동으로 장치 타입을 인식하여 에뮬레이션한다.