MS-DOS(エムエス-ディーオーエス、エムエスドス)は、1981年よりマイクロソフトが開発・販売したパーソナルコンピュータ向けのオペレーティングシステム(OS)である。

「MS-DOS」が製品名で、マイクロソフト ディスク・オペレーティングシステム(英: the Microsoft Disk Operating System)を意味する。

## 概要

IBMはIBM PC用のオペレーティングシステムの開発をマイクロソフトに依頼し1981年にIBM PC DOSとして発売したが、このOSをマイクロソフト経由で他社にOEM提供したものがMS-DOSである。ただしマイクロソフトは現在ではMS-DOSは1981年発売と説明している。IBM PC DOSとMS-DOSはバージョン5まではほぼ同内容だが、バージョン6以降は独自機能が追加された。

MS-DOSはCP/M類似のIntel 8086系向けの16ビット オペレーティングシステムだが、IBM PCの成功によりパーソナルコンピュータ市場でデファクトスタンダードとなり、後に8ビットなど各種のCPUやコンピュータ用にも移植され、また各種の組み込み機器でも使用された。

MS-DOSは基本的にはコマンドラインインタフェースやUNIX風の階層型のファイルシステムを持つシングルタスクのオペレーティングシステムだが、各種アプリケーションや、バージョン4より付属のDOSSHELLや、別売のMicrosoft Windows 2.0などの併用により、グラフィカルユーザインタフェースや疑似マルチタスクも使用可能となった。ただしMS-DOS自体は画面描画に関わるアプリケーションプログラミングインタフェースを持たないため、多くのMS-DOS用アプリケーションは機種依存であり、異なる機種間では稼働せず、また移植も容易ではなかった。

MS-DOSと互換性を持つオペレーティングシステムには、IBM PC DOSの他、DR-DOS (Novell DOS)、オープンソースのFreeDOSなどがあり、またMicrosoft Windowsのコマンドプロンプトなどの互換環境がある。

最終となった製品バージョンは、マイクロソフト版はMS-DOS バージョン6.2、IBM版はPC DOS 2000である。

## 歴史

### 開発の経緯

1980年7月頃、IBMは後にIBM PCとなるパーソナルコンピュータの開発に着手した。しかし、IBMの主力商品である汎用コンピュータに比べるとごく少数のスタッフとわずかな予算しか与えられなかった。プロジェクトリーダーのフィリップ・ドン・エストリッジは、すぐに商品化できるようソフトウェアは自社開発せず、すべて外部から調達する方針を立てた。

当時のマイクロソフトはBASICインタプリタやアセンブラならびに各種言語のコンパイラ等を開発しており、それらの製品のほとんどが当時のパーソナルコンピュータ市場におけるデファクトスタンダードOSであるデジタルリサーチのCP/M上で動作するものであった。

IBMはマイクロソフトに対し当初はBASICなどの言語製品の開発を依頼していた。OSについても8086対応版のCP/Mをマイクロソフトに開発してもらおうとした。しかし彼らはCP/Mのソースの権利を持っていなかった為、ビル・ゲイツのアドバイスに従ってデジタルリサーチと交渉することにした。ところがデジタルリサーチとの交渉はうまくいかず、再びマイクロソフトに開発の依頼を持ち込んだ。

マイクロソフトは「M-DOS」というOSを開発した経験はあるが、販売したことはなかった。IBMから要求された期日は1年以内という厳しいもので、言語製品の開発に加えてOSにまで手を回す余裕はなかった。同じ頃、シアトル・コンピュータ・プロダクツはCP/Mが8086に移植されない事に業を煮やし、ティム・パターソンがわずか6週間で開発したQDOSを、86-DOSとして販売した。基本的には8080/Z80用に作られたデジタルリサーチのCP/Mクローンであり、8086に移植して、ディスク読み込み処理のバッファ管理を改良し、ファイルシステムを新規開発したFAT12にしたものである。ファーストバージョンは1980年8月に出荷された。

IBM PC用のOSを必要としていたマイクロソフトは、1981年5月にティム・パターソンを雇い、同年7月に86-DOS 1.10を$75,000で購入した。マイクロソフトはバージョンナンバーを変更せず、名前をMS-DOSに変更した。1981年8月にMS-DOS 1.10/1.14をPC DOS 1.0としてIBMに提供し、IBM 5150やIBM PCで動作する3つのOSの1つとなった。

### 各メーカーへのOEM供給

IBMは当初「PC DOS」名称でIBMのみへの供給を主張し、マイクロソフトはIBM以外のメーカーへのOEM供給を主張した結果、IBM用はPC DOS名称、マイクロソフトによる各メーカーへのOEM供給も認めて普及を図るという役割分担となったと言われる。この役割分担は後のOS/2 Ver. 1.Xでも同様となる。

リスクを軽減化するために買い取りを避けIBM PCの出荷台数に対して使用料を支払うというライセンス契約をしたこと、そしてマイクロソフトから各メーカーへの自由なOEM供給を認めた事が後のマイクロソフトの躍進の原動力と言え、また見方を変えれば、最終的に「軒先を貸して母屋を取られた」IBMの大失策であるとも言えるが、MS-DOS(およびPC DOS)の普及(デファクトスタンダード化)を決定づけたとも言える。

1982年、マイクロソフトはバージョン1.25からIBM以外のメーカーにMS-DOSのOEM供給を開始した。ライフボート・アソシエイツのSB-DOS、コンパックのCompaq-DOS、ゼニス・データ・システムズのZ-DOSなど、供給先メーカーは70社以上に及んだ。1983年のバージョン2.0より、IBM以外の各メーカーへのOEM供給品は「MS-DOS」名称に一本化された。OEM供給品に自社の商標(MS)をつけ「MS-DOS」名称としたのは、OEM先メーカーが独自の名前をつけて混乱することを避けるために整理する意味があった。ただし、その後も富士通FM TOWNSのTownsOSや各種制御機器など、内部的にMS-DOSがOEM提供されている場合には「MS-DOS」の名称はユーザーには見えない場合があった。

MS-DOSは8086系CPUを搭載したパソコンで動作させることが前提の設計だった。各パソコンには専用のハードウェアがあり、MS-DOSもそれぞれ別のバージョンが作られ、その状況は既存のCP/Mと同様で、CP/Mと同じ方法でハードウェアをエミュレーションして違いを吸収した。これを実現するためMS-DOSはプライマリディスクドライブやコンソールなどの最小限の内蔵ドライバや内蔵カーネルをブートローダーで読み込み、それ以外のデバイスドライバを起動時に動的に読み込めるモジュール方式を採用した。OEM各社はマイクロソフトが提供した開発キットを用い、基本的なI/Oドライバとマイクロソフトの標準カーネルを組み合わせて独自のMS-DOSを作ることができ、普通はハードに添付するディスクの形でユーザーへ届けられた。従って各ハードウェアごとに異なるバージョンのMS-DOSが存在することになり、IBM互換機とMS-DOSマシンの2種類に大きく分類された。Tandy 2000のような一部のパソコンはMS-DOS互換だったがIBM互換ではなく、特定のハードやIBM PCのアーキテクチャに依存しないMS-DOS専用に作られたソフトウェアを実行できた。

このデザインはアプリケーションの互換性を高めるのに役立ち、MS-DOSのサービスだけを使ってデバイスI/Oにアクセスする場合は特に有効で、このデザイン方針は後のWindows NTにも影響を及ぼした(Hardware Abstraction Layerを参照)。しかし当時はハードに直接アクセスすることでパフォーマンスを稼ぐアプリが主流を占め、特にゲームではこれが顕著で、各社は次第に独自路線をあきらめてIBM-PC互換機を作るようになり、1つのMS-DOSがどの会社のパソコンでも動作するようになった。

### DOSの限界と開発の終焉

DOSは標準でグラフィカルユーザインターフェースやマルチタスク機能や仮想記憶を持たず、80386などの32ビット環境でも「高速な8086」としか使用できなかったため、DOSの拡張や次世代OSが待望された。

1985年にはDOSエクステンダーであるDESQview、同年にDOS上で稼働する「オペレーティング環境」としてMicrosoft Windowsが登場した。更に1987年には本格的なDOSの後継OSとしてIBMとマイクロソフトから OS/2 Ver. 1.0 が登場した。OS/2はDOSと同様に、IBMおよびマイクロソフトの両者から供給されたが、性能やDOS互換環境の問題もあり広く普及しなかったためDOSは継続して使われた。

1990年に日本ではIBM DOSのバージョン4からDOS/Vが生まれ、マイクロソフトもバージョン5からDOS/VのOEM供給を開始したため、日本でもPC/AT互換機の市場が立ち上がり始めた。

1993年のバージョン6からは、IBMとマイクロソフトのOS共同開発契約(OSクロスライセンス契約)が終了したため以後はIBMまたはマイクロソフトの単独開発となった。両者は基本部分の互換性は保たれているが、付属ユーティリティの相違などが広がった。マイクロソフトはこのMS-DOS 6を単体販売の最終バージョンとし、1995年のMicrosoft Windows 95以降は単体のDOSも不要となった。IBMはDOSの改良を続けたが、1998年のPC DOS 2000が最終バージョンとなり、2001年にはサポートも終了した。

2014年3月25日、マイクロソフトはSCP MS-DOS 1.25、およびAltos MS-DOS 2.11とTeleVideo PC DOS 2.11の混合版を、Microsoft Research License Agreementに基づいて一般公開した。これにより、コードソースは利用可能になるが、オープンソース・イニシアティブやフリーソフトウェア財団の規格で定義されるオープンソースではない。マイクロソフトは、2018年9月28日にMITライセンスに基づいてコードを再ライセンスし、これらのバージョンを自由ソフトウェアとした
。

## 機能

MS-DOSと名付けられているように、マイクロソフトのパーソナルコンピュータ向けのDOS(ディスク・オペレーティング・システム)であり、主にディスクの管理を行うシングルタスクOSであった。開発当初のCPUにマルチタスク機能・メモリ保護機能がなかったためMS-DOSも対応しておらず、CPUにそれらの機能が搭載された後もMS-DOSが対応することはなかった。またグラフィック画面やサウンドの操作・ネットワーク機能などは、Microsoft WindowsやLAN Managerのほかアプリケーションが直接I/Oを操作するかデバイスドライバなどで提供されていた。

### ファイル管理

ファイルの管理は、FATとクラスタにより構成される。

ファイル名は8.3形式、つまり、8バイトまでのベース名と3バイトまでの拡張子の合計最大11バイト(拡張子の前の「.」を数えれば12バイト)で表す。アルファベットの大文字と小文字は区別しない(全て大文字と見なされる)。

バージョン2以降では、ディレクトリの作成が可能となり、ファイル属性にも対応した。

### 起動順序

起動順序は概ね以下の通りである。

1. コンピュータのROM BIOSやディスクのマスターブートレコードからディスクのセクタ0にあるブートセクタを読み込んで実行。
2. ディスクから`IO.SYS`と`MSDOS.SYS`がメモリ中にロードされる。
3. `IO.SYS`を起動し、その後`MSDOS.SYS`に制御を移行する。
4. `CONFIG.SYS`が起動ドライブのルートディレクトリにあれば、そこに記述されたデバイスドライバを読み込む。
5. バッチ処理のためのコマンドインタプリタでもある標準シェルの`COMMAND.COM`を起動する。
6. `AUTOEXEC.BAT`が起動ドライブのルートディレクトリにあれば、その内容を実行し、環境変数の設定や起動時に実行すべきコマンド等の呼び出し、場合によってはアプリケーションの起動なども行う。

`COMMAND.COM`では、各ドライブを`A:`から最大`Z:`までのドライブレターで管理し、内部コマンドではファイル・ディレクトリ一覧の参照、ファイルとディレクトリの作成・コピー・名前変更、コンピュータの時刻や環境変数およびパスの設定参照などができるほか、外部コマンドやアプリケーションなどの実行形式のファイルの起動が行えた。またVer.2以降ではUNIXを意識した入出力のリダイレクト機能やパイプ機能なども利用できたが、MS-DOS上のパイプやリダイレクトはいずれもテンポラリファイルを介した擬似的な実装に留まっていた。

### 実行ファイル

MS-DOSにおける実行ファイルの形式は、現在のUNIX系環境で言うシェルスクリプトに類似したコマンドのバッチ処理を記述するバッチファイル(拡張子は`BAT`)と、CPUが直接実行するバイナリファイルに大別することができる。

このうちバイナリファイルには、単一のセグメントを使う`COM`形式、複数のセグメントが使用される場合の`EXE`形式、さらにデバイスドライバとして`SYS`形式が存在し、それぞれ同名の拡張子を持つ。

`COM`形式の実行ファイルは、バイナリ読み込み時に設定されるコード・データ・エクストラ・スタックの各セグメントレジスタの値が同一アドレスに設定され、プログラム内部でセグメントレジスタを操作しない場合は単一セグメント、最大64KBのメモリ空間を操作する。CP/M 80用に書かれた8080用のアセンブリ言語のソースコードを8086へコンバートした場合を想定したメモリモデルであるが、`COM`形式のバイナリであってもプログラム側で適切にセグメントレジスタを操作することで64KB以上の空間へのアクセスが可能である。

このうち.`SYS`形式のバイナリは、原則的に起動時に一度だけ実行される`CONFIG.SYS`に記述する以外の方法では直接読み込むことができない。

### システムコール

システムコールは、ソフトウェア割り込みにより呼び出されるが、8080やZ80などの8ビットのコンピュータではメジャーな存在だったCP/Mとの互換性、特に8080用にアセンブリ言語で書かれたソースコードを8086にコンバートして用いる場合を想定し、call 5でも利用可能としてCP/M 80からの移行を促した。

### メモリ管理

MS-DOSにおいて、DOS自身のカーネルを含むプログラムの実行に確保できるメモリ空間(ユーザーメモリ、コンベンショナル・メモリ)は、8086のアドレス空間の最大1MBである。ほとんどのコンピュータでは、この空間にBIOS ROMやメモリマップドI/O、VRAMなどの空間も存在するため、バンク切替えや様々なメモリ拡張手段などを用いずに一時にアクセス可能なメモリ空間は最大でも640KBから768KB程度であった。

日本語入力用のFEPなどの常駐型のデバイスドライバを使用すると一度に使用できるユーザーメモリはさらに減少するため、ユーザーはEMSやXMS、HMAやUMBなどの拡張メモリの管理機能を利用して、辞書や常駐部やMS-DOSシステムの一部をそれらへ配置し、コンベンショナルメモリの圧迫を少しでも避けることが重視されるようになった。

そのため、RAMディスクドライブやディスクキャッシュなどはバンクメモリやEMS、プロテクトメモリ(80286/386以降)の機能を用いて、コンベンショナルメモリ以外の領域を使用するのが一般的であった。

これらのメモリ配分の設定は`CONFIG.SYS`や`AUTOEXEC.BAT`を記述することで行い、事実上ユーザーに一任されていた。

バージョン3まではメモリドライバやデバイスドライバはOSには付属せずサードパーティー製のメモリドライバ等を使用する必要があったが、バージョン5では標準機能としてOSに付属するようになった。また、これらの環境設定を半自動的に行う設定アプリケーションも添付された。

各種デバイスドライバには自動でインストールを行うスクリプトやプログラムが整備され、動く状態を作るだけであればエンドユーザーがこれらを直接操作する必要はなくなったが、全ての環境に対応するのは難しく最適な設定や問題発生時の対応など初心者にとっては設定のハードルは高かった。

### Windows 9x

従来のWindows 3.xはMS-DOSから起動するアプリケーションであったが、Windows 9x系では互換性のためにMS-DOS相当の機能が一部内部に組み込まれているものの「MS-DOSを必要としないWindowsという単体のOS」となった。Windows 95・98などのWindows本体を起動している状態ではプロテクトモードの完全なマルチタスク(プリエンプティブマルチタスク)で稼働しているが、シングルタスクのMS-DOSモード(DOSプロンプトとは異なる)に切り替えることが可能である。Windows上で起動するDOSプロンプトもMS-DOSと互換性があるが一部動作しないアプリケーションがあり、この問題を解決するための機能がMS-DOSモードで、完全なCUI表示となり、MS-DOSアプリケーションのみが動作し、DOSプロンプト上ではロングファイルネームで表示されるVFATであっても8文字+拡張子3文字のショートファイルネーム形式のファイル名で表示され、MS-DOSとほぼ同じ状態になる。

## バージョン

### バージョン一覧

MS-DOSとPC DOSの主要なバージョンの一覧は以下の通り。

| バージョン | 出荷開始 | IBM | マイクロソフト | 備考 |
| --- | --- | --- | --- | --- |
| 1 | 1981年 | PC DOS 1.0 | (MS-DOS) 1.25 | 1981年 IBM PC用にPC DOSが登場。1982年 マイクロソフトがIBM以外に1.25以降のOEM供給を開始(名称は供給先により異なる)。 |
| 2 | 1983年 | PC DOS 2.0 | MS-DOS 2.0 | PC/XT用に登場、階層ディレクトリなど。マイクロソフト版の名称が「MS-DOS」に一本化された。日本ではPC-9801などに日本語MS-DOSのOEM供給を開始。 |
| 3 | 1984年 | PC DOS 3.0 | MS-DOS 3.0 | PC/AT用に登場、FAT16など。広く普及し事実上の標準に。同時期にDR DOS 4も出荷。 |
| 4 | 1988年 | IBM DOS 4.0 | MS-DOS 4.0 | IBM版が名称変更。DOSシェルなど。IBM版4.05より日本でDOS/V(IBM DOS J4.05/V)も登場。 |
| 5 | 1991年 | IBM DOS 5.0 | MS-DOS 5.0 | メモリ管理機能強化。IBMとマイクロソフトのOS共同開発の最終版。マイクロソフト版は初めて単体の直接販売が開始される。日本ではマイクロソフト版DOS/V(MS-DOS 5.0/V)も登場し、各社PC/AT互換機に広く採用される。同時期にDR DOS 6.0 出荷。 |
| 6 | 1993年 | PC DOS 6.1 PC DOS 6.3 | MS-DOS 6.0 MS-DOS 6.2 | IBM版が名称再変更。PC DOSとMS-DOSは付属ユーティリティの違いが拡大。MS-DOSは単体販売の最終版。同時期にNovell DOS(DR DOS) 7出荷。 |
| 7 | 1995年 | (なし) | MS-DOS 7.0 MS-DOS 7.1 | Windows 95/98/98SEの内部バージョン。PC DOS 7 とは全く別物。7.1はWindows 95 OSR2 以降で、FAT32に対応した。 |
| 1995年 | PC DOS 7 PC DOS 2000 | (なし) | IBM版のみ。スクリプト言語のREXXをサポート。MS-DOS 7 とは全く別物。 |
| 8 | 2000年 | (なし) | MS-DOS 8 | Windows Meの内部バージョン。MS-DOSの最終版。 |

### バージョン1

CP/M程度の機能しか持たない、基本的なディスクオペレーティングシステム。ファイルシステムは後のバージョンで実装された階層構造を持っておらず、ディレクトリが利用できない。CP/Mとの大きな違いは、汎用化の為などで、入出力デバイスなど、機種依存する部分を分離するという方向性である。MSDOS.SYSとIO.SYSという2つのファイルがあることにあらわれている(前者が非依存なモジュール、後者が依存が大きいモジュールである。なお、機種や機能によって、IO.SYSが機能を抱えるか、BIOSに依存するかは異なっており、例えばディスクIOは多くの機種でBIOS依存だが、文字表示位置の制御などはIBM PCではBIOSだが、PC-98ではIO.SYSが行っている)。

このバージョンが使われていた頃は、8086またはその互換プロセッサ(8088等)を利用したパーソナルコンピュータ市場もそれほど大きくなかった為、出荷本数の大半はIBM PCにバンドルされた分だった。

- バージョン1.0(1981年8月)- IBM PC(初代)出荷と同時にリリース。64KBのメモリ空間のうち約12KB(そのうちシェルが5KB)を占有した。また、160KBの5.25インチフロッピーディスク (1D) をサポートしていた。シアトル・コンピュータ・プロダクツの86-DOS 1.14と同等。PC DOSのみ。
- バージョン1.1(1982年5月)- 360KB 5.25インチフロッピーディスク (2D) サポートの他、一部のバグフィクス。PC DOSのみ。
- バージョン1.25(1982年5月)- マイクロソフトが、8086プロセッサを利用したパーソナルコンピュータ、更にはIBM PC互換機向けに、IBM以外のメーカーへのOEM提供を開始。日本では当時マイクロソフトの代理店であったアスキーが日本語版MS-DOSを開発している最中で、それに先駆けて複数のメーカーが各自で日本語処理機能を実装して販売していた。

### バージョン2

IBM PC/XTの仕様に合わせ、HDDや360KB 5.25インチフロッピーディスク (2D) をサポートしている。階層構造ディレクトリ、`CONFIG.SYS`によるデバイスドライバの追加機能、UNIXライクなパイプ等の機能が追加された。アセンブラのMASMが付属していた。

マイクロソフト版はこのバージョンより名称が「MS-DOS」に一本化された。

- バージョン2.0(1983年3月) - PC/XT 出荷と同時にリリースされた。
- バージョン2.01(1983年5月) - 日本では「日本語MS-DOS 2.0」としてリリースされ、パソピア16などに採用された。
- バージョン2.1(1983年10月) - IBM PCjr 向け。
- バージョン2.11(1983年10月) - バージョン2.01とバージョン2.1を統合。アジアやヨーロッパなど多言語市場を意識し、文字セットや日付表示のローカライズをサポート。各社のx86パーソナルコンピュータ向けに広く利用された他、日本ではアスキーの市場戦略の関係で、市販ソフトウェアにサブセット版のバンドルが許されていた。
- バージョン2.25(1985年10月) - 東アジア市場向けに2バイト言語に対応を図った「アジアバージョン」。理由不明だが、日本市場においてはバージョン2.11の名称で流通した(`MSDOS.SYS`内部に2.25の表記あり)。

### バージョン3

当初 IBM PC/AT 用に発売。主としてネットワーク対応と大容量HD対応の為の16ビットFATが追加された。本来80286が標準のPC/AT向けだったが、互換性確保目的で80286のプロテクトモードを利用した新機軸は敢えて盛り込まれなかったためサードパーティー製の各種ユーティリティによって機能拡張するユーザが多かった。

ベンダーによる独自拡張などで方言が多くバージョン番号の体系も大きく乱れている。必要十分なスペックと安定性が評価され、またバージョン4以降の仕様変更の影響を避けるために一部ではかなりの長期間にわたって愛用されていた。

- バージョン3.0(1984年8月) - PC/ATの発売と同時にリリースされた。1.2MB 5.25インチフロッピーディスク (2HD) 及び32MBまでのHDをサポート。HDの論理ボリュームはひとつのみ。
- バージョン3.1(1984年11月) - 3.0のバグフィックス版。別売のPC NetworkまたはMS-Netでトークンリングに対応したネットワーク機能が供給された。但し、性能が低く専らノベルのNetWareなどのNOSが一般的に用いられた。日本ではマイクロソフトから日本語版が供給され、日本国内メーカーの多くのパソコンに採用された。また、NECのPC-98LT、Handy98、富士通のFM TOWNSにはROMで内蔵された。
- バージョン3.20(1986年1月) - 720KB 3.5インチフロッピーディスク (2DD) をサポート。フォーマットプログラムの機種依存ルーチンを`IO.SYS`に移したことで移植性を高めている。
- バージョン3.21 - 3.20のアジアバージョン。2バイトコードに対応し、日本ではAXなどに採用された。
  - MS-DOS 3.3(PC-98版) - バージョン3.21を独自拡張。マイナーバージョンに3.3A~3.3Dが存在。
- バージョン3.22(1989年10月) - ROM化に対応。同年8月にデジタルリサーチがROM化可能なDR DOSを開発している。
- バージョン3.3(IBM PS/2版)(1987年4月) - IBM主導で開発された。1.44MB 3.5インチディスク (2HD) をサポート。多言語対応の為、コードページが採用された。HDにおいて複数の論理ドライブを扱えるようになった。
- バージョン3.3(OEM版)(1987年8月) - IBM版の同バージョンと同等。

### バージョン4(1986年)

バージョン3.20から派生し、8086上で限定的な擬似マルチタスク環境を実現したもの。マイクロソフトが開発したが不十分であるとしてIBMには採用されず、アプリコットコンピューターズにネットワークOSとしてOEMされた他、僅かの用途に留まり絶滅亜種になってしまった。非同期I/O対応やバックグラウンドタスク規約など資産の一部は Windows 2.x に流用され、また80286プロテクトモードを前提に並行開発されていたもの(当初バージョン5と呼ばれていた)はIBM主導で大幅に改訂され、世に出た時にはOS/2バージョン1.0になっていた。

### バージョン4

IBM主導で開発されたバージョン。OS/2色が濃くなり、IFSやラージバッファ等の追加のみならず管理セクタ数が増やされた事に伴いHDは理論上最大2GBの領域を扱うことができるようになった(実際にはBIOSの制限があった)他、添付ユーティリティを利用すると最大512MBのパーティションまで作成可能になったが、その反面余りに多くの変更がファイルシステムに加えられたため非互換性の問題も生じてしまった。

情報が全部公開されていなかったものの、2バイトコードによるユニバーサルランゲージ対応が内部的に完了したのも本バージョンからである。従来のバンクメモリに代るEMSの標準サポートによって扱えるメモリ領域が1MB以上に拡張された。

互換OSのDR DOSで好評を博していた「GEM」に類似のグラフィカルユーザインタフェース環境、「DOSシェル」が添付された。これはマウスオペレーションやグラフィカルなメニューによる直感的な操作が行えるもので、依然シングルタスクながらも複数のアプリケーションを重複起動して切替動作させることができ(いわゆるタスクスイッチャ)、GUIもキャラクタベースによる簡易なものとグラフィック画面とテキスト画面を組み合わせたもの(表示が美しく、ポインタの動作もスムーズになる)とを選択できた。DOSシェルのデザインはIBM Systems Application Architecture Common User Accessに準拠していた。

本バージョンには性急な複雑化に伴う非常に多くのバグが存在し、またOS自体が消費するメモリが過大だったため、メーカーによってDOS 3.30 を拡張した DOS 3.31 を採用するなどして4.0を採用しないところが有った。特に日本ではコンベンショナルメモリの空き容量が日本語処理アプリケーションの稼動に大きく影響を与えるため、大手メーカーであるNEC、富士通などが3.21系の拡張版のみを販売し続けた。

2024年4月25日(米国時間)、マイクロソフトはMS-DOS 4.0をオープンソース化し、IBMと提携しMITライセンスの下でソースコードをGitHubにて公開した。

- MS-DOS 4.0(マイクロソフト版)(1988年7月)
- IBM DOS 4.0(IBM版、PC DOSより改称)(1988年7月)
  - IBM DOS J4.05/V(1990年11月)(日本のみ) - いわゆる「DOS/V」の最初のバージョン。末尾の「V」はVGAを意味し、漢字ROMがなくても日本語表示が出来るように拡張されたもので、専用ハードウェアを付加することなく日本語対応が可能になったため日本国内外のPC/AT互換機メーカーが日本市場に参入する契機になった。
- MS-DOS 4.01(マイクロソフト版)(1988年12月) - バグフィクス。

### バージョン5

再びマイクロソフト主導で開発された。バージョン4で付加された中途半端なユーティリティの多くが削除された一方、80386、80486等に備わる仮想86モードの活用と Windows 3.0 との親和性を主眼にほぼ全面的に再コードされたため、パソコン通信等を介した約1年にわたる大規模なベータテストを経て市販開始された。IBMの製品へのバンドルに限定せず、巷に溢れるPC/AT互換機へのフル対応を初めからうたいインストーラ込みで発売された最初のMS-DOS(PC DOS)でもある。

メモリ消費は少ないものの大容量ドライブが扱えないバージョン3、その逆で大容量ドライブが使えるがメモリ消費が大きいバージョン4というジレンマを抱えていたが、限りあるメモリ領域の消費を抑える機能を追加することでそれまでの問題を払拭するに至った。このバージョンによりDOSはほぼ完成を見たが8086~80286とその互換CPU上の動作には制約が強まり、結局のところ巧妙なアップグレード戦略の下でハードウエアの買い替え需要が喚起された。

XMSによってDOS本体の一部をHMAに、デバイスドライバやアプリケーションの一部をUMBに待避させることが可能で、コンベンショナルメモリが大きく取れるようになった。またタスクスイッチ規約が明確に定義され、DOSシェルの機能拡張(Windows 3.0 のサブセット化)が図られた。各種LAN対応も進められ、コマンドにヘルプが付されるなど利便性も向上した。

テキストエディタは、過去のバージョンに標準添付されていたラインエディタ「`EDLIN`」に加えスクリーンエディタ「EDIT」が添付された。開発環境として、コマンドラインエディタに加え独自に拡張された構造化BASICコンパイラQuickBASICが標準添付されていた。

それまで未公開だったファンクションの多くがユーザに解放されたためカスタマイズやデバイスドライバ開発が更に容易になった。日本ではマイクロソフトがDOS/VのOEM供給を開始し、PC/AT互換機をベースに独自の拡張を行っていたAX陣営や東芝 (J-3100)もこの頃よりDOS/Vへのシフトを進めるようになった。また、世界のデファクトスタンダードであるPC/AT互換機のハードウェアでそのまま日本語版OSを使えるようになった為に日本国外のメーカーが積極的に日本市場へ参入し始め、NECの独擅場であった日本市場は大きく変貌することとなった。

- MS-DOS 5.0(1991年6月)
- IBM DOS 5.0(1991年6月) - 他マイナーバージョンアップやローカライズ版多数

### バージョン6

ディスク最適化やディスク圧縮機能(後述)、コンピュータウイルス検出・除去など、CD-ROMアクセスに必要なMSCDEXの付属等付加機能の充実が主。MS-DOS単体としての最終版。

デジタルリサーチからMS-DOS互換の DR-DOS 6.0 が発売された。大きな特徴は補助ユーティリティの大幅な増強である。その為、IBMおよびマイクロソフトでも基本仕様はほとんど変えずに補助ユーティリティを追加する事でバージョン6を発売することになった。IBMは6.1、それに続くマイクロソフトは6.2と、先に出た競合相手よりバージョン番号はそれぞれ0.1だけ大きい。

起動時に特定のキーを押すと`CONFIG.SYS`・`AUTOEXEC.BAT`の一部の行を実行したり、全てバイパスする機能があった。

マイクロソフト版は同時期に発売された Windows 3.1 の普及を促すという販売戦略からDOSシェルを廃止したと見られた。テキストエディタは日本語に対応して共通の`EDIT`となった(PC-98版は`SEDIT`が付属)。

- MS-DOS 6.0(1993年3月)
- PC DOS 6.1(IBM DOSより改称)(1993年6月) - IBMの独自ビルド。初期のバージョンにはディスク圧縮ユーティリティは添付されておらず、後のPC DOS 6.1 with Compressionでアドスター社の「SuperStor/DS」が添付された(日本語版PC DOS J6.1/V は最初から圧縮ユーティリティ添付)。
- MS-DOS 6.2(1993年11月) - ディスク圧縮ユーティリティ「DoubleSpace」のバグフィクス等。「DoubleSpace」は、ディスク容量を圧縮し、圧縮されたまま読み書きを可能にするもの。このユーティリティに用いられている技術の一部がスタック・エレクトロニクス社の特許を侵害しているものとして、訴訟を起こされた。 MS-DOS 6.0 のユーザはオンラインの無償アップデートパッケージを入手することで MS-DOS 6.2 にアップグレードできた。
  - MS-DOS 6.2/V(1993年12月) - 日本ではマイクロソフトが自社ブランドで発売した唯一の日本語版MS-DOS単体パッケージ。IBM DOS J5.0/VまたはMS-DOS 5.0/Vからのアップグレードのみ。5.0/Vと同様にOEMでも供給。
- MS-DOS 6.21(1994年2月)- マイクロソフトによるスタック・エレクトロニクス社の特許侵害が一部認められた為、「DoubleSpace」を除去したもの。
- PC DOS 6.3(1994年4月) - IBMの独自ビルド。MS-DOS 6.2 同様、オンラインの無償アップデートパッケージを入手してPC DOS 6.1 から 6.3 にアップグレードできた。
- MS-DOS 6.22(1994年6月) - スタック・エレクトロニクス社の特許を侵害しない形で作成されたものが「DriveSpace」として改めて添付された(但し、日本語版には関係ない)。なお、DoubleSpaceとDriveSpaceの圧縮機能には互換性がなく、そのままでは互いに圧縮されたパーティションにアクセスすることができない。

### バージョン7(マイクロソフト版)

Windows 95/98/98SE に含まれているバージョン。ファイルシステムでは長いファイル名がサポートされたのが最大の特徴。従来の`MSDOS.SYS`は名前こそ同じであるがプログラムではなく設定ファイルとなった。`IO.SYS`が実行する標準シェルはWindowsを起動するための`WIN.COM`であるが、MSDOS.SYSを編集することでWindows 95/98ではWindowsを起動せずにMS-DOSモード(`COMMAND.COM`)で起動することができた。Windows 95初期(OSR1)までのバージョンは7.0だが、Windows 95のOSR2以降ではFAT32にも対応しているバージョン7.1である。

### バージョン7(IBM版)

1995年リリース。IBM版のみ。開発環境として「REXX」を標準添付。ディスク圧縮ユーティリティは「SuperStor/DS」から「Stacker4.0」に変更された。MS-DOS 7(マイクロソフト版)とは異なりGUIとの融合はされなかったが、当時インターネットの普及が進んでいた中でPalm Top PC 110の人気を受けてPC DOS用ウェブブラウザ「WebBoy」が開発された。

- PC DOS 7(1995年4月)
- PC DOS 2000(1998年5月) - PC DOS 7 をベースに、ユーロ記号の表示や西暦2000年問題に対応したもの。VERコマンドではPC DOS Version 7.0 Revision 1と表示される。日本語版は製品名から「/V」が外れたが、「DOS/V」部分を含んでいる。これがPC DOS(IBM DOS)およびMS-DOS全体の事実上の最終バージョンとなる(互換OSは除く)。2001年にはサポートが終了した。

### バージョン8(マイクロソフト版)

Windows Meに含まれているバージョン。`IO.SYS`に`HIMEM.SYS`および`SMARTDRV`(ディスクキャッシュ)の機能を統合した最終版であり、MS-DOSモードでの起動も廃止されWindowsのブートローダの機能のみとなった。Windows MeやWindows XP以降で起動ディスクを作成するとこのMS-DOSが書き込まれる。

## MS-DOSとの互換性を持つオペレーティングシステム

### MS-DOSとバイナリ互換性を持つオペレーティングシステム

- DR-DOS
- PC-Engine(PC-88VA)
- TownsOS(FM TOWNS)
- FreeDOS
- PTS-DOS(試用版)
- RxDOS

またPC-9800シリーズ全盛期には、ゲームソフトの組み込み用として下位互換(INT21系のサブセットのみ互換)の「MEG-DOS」などがあった。アリスソフトの「ALICE-DOS」は、もともとゲームソフト本体はMS-DOSをインストールしたハードディスクドライブ上で動かすことを前提としあくまでもフロッピー単体でも起動するようサポート用に作られたものであったため、バッチファイルを動かす機能も有していた。
なお、互換性はあるがOSではないものにDOSBoxがある。

### MS-DOSの影響を受けつつもバイナリ互換性の無いオペレーティングシステム

- Human68k(ハドソン、シャープ) - X68000、ファイルシステムにFAT12/16のサブセットを採用、`COMMAND.COM`に酷似したコマンドラインインタプリタや、システムコールのファンクションにもINT21Hを真似た設計が見られる等、影響を(主に開発工期の短縮などの側面から)強く受け模倣していることは明らかではあるが、その他は全く別個の実装であり、CPU自体にも互換性は無い。
- Carry日本語DOS(キャリーラボ) - PC-8800シリーズ/X1。通称CDOS-II。ファイルシステムのみFAT12に対応したOSで、CP/Mエミュレータが存在した。Z80を前提としたCP/Mのバリアント(変種)であり、MS-DOSの移植ではない。当然MS-DOS用のバイナリも動作しない。パソコン通信ソフトの一部としても使用され、PC-8800シリーズ版はJET-TERMに、X1シリーズ版はJETターボターミナル(SPS発売)に付属する。PC-8800シリーズ版はOSのみのフリー版がある。前身であるCarryDOS(CDOS)とはファイルシステム、システムコールともに互換性はない。
- MSX-DOS (マイクロソフト、アスキー) - MSX、FAT12のサブセットに対応し、MS-DOSの`COMMAND.COM`に酷似したコマンドインタプリタがある、CP/M互換OS。CDOS-IIと同様にCP/Mのバリアントであり、MS-DOS用のバイナリは動作しない。表計算アプリケーションMultiplanの一部として、PC-8800シリーズ、X1シリーズ、MZ-2500にもサブセット版がある。
- IDOS(ソフトバンク) - PC-8800シリーズ、PC-8000シリーズ、ファイルシステムのみFAT12に対応した、CP/M互換OS。