MS-DOS
MS-DOS（エムエス-ディーオーエス、エムエスドス）は、マイクロソフトが開発・販売していた、8086系マイクロプロセッサをCPUとする、IBM PCおよびそれに似た構成の（たとえばPC-98など）パーソナルコンピュータ向けのオペレーティングシステム(OS)である。IBMへのOEM供給品であった PC DOS (IBM DOS)を自社製品として供給・販売したもので、バージョン6以降はPC DOSから完全に独立して開発された。
MS-DOS（およびPC DOS等）は、8086系のマイクロプロセッサをCPUとするパーソナルコンピュータ向けのシングルタスクのオペレーティングシステムで、DOS（ディスクオペレーティングシステム）の名の通り、ディスクの管理が主機能である（DOSという名前だからといって必ずしもそうとは限らないが、少なくともMS-DOSのプロセス管理機能は、シングルタスクに代表されるように、低機能・低性能である）。MS-DOSは改名された86-DOSであった。86-DOSはCP/Mのクローンであったのでたった六週間で開発された。
標準的なシェルは、コマンドラインインタフェース（CUI）のCOMMAND.COMである。GUIとしては、一部のメーカーが独自に追加したものや、後のバージョンで標準添付されたグラフィカルなツールもあった（DOSSHELLが、あまり使い勝手が良くなく、Windows2.11などが使われ始めていたこともあり、印象が薄い）。UNIX風の階層型のファイルシステムを持つが、ファイル名の制約などが厳しく機能は低い。
歴史的には1981年にIBMが初代IBM PC用に発売したDOSが「PC DOS」で、1982年よりマイクロソフトがIBM以外のメーカーにOEM提供を開始したものが「MS-DOS」であったが、マイクロソフトは後に1981年から「MS-DOS」と呼んでいる。
両社はバージョン5まではOS共同開発契約（OSクロスライセンス契約）を結んでおり互換性が保たれた。当時は8ビット市場ではCP/Mが事実上の標準であったが、16ビット市場ではPC DOSならびにMS-DOSが主流となった。
MS-DOSは「IBM以外から提供されているPC DOS」として、IBM以外のメーカ製であるIBM PC互換機で広く使われたのみならず、IBM PC互換ではないが8086（およびその後継やAMD等による互換チップ）を積んだ、似たような構成の各社・各機種のパーソナルコンピュータ用のバージョンも各社あるいは各社の依頼によりMSで作られ、日本での例を挙げるならば、日本電気（NEC）のPC-9800シリーズ、富士通のFMRシリーズ、東芝のダイナブックなどがある。後にはAXのベース、更には組み込み機器などに、広く普及し主流となった。
しかし、多くの「魅力ある」MS-DOSアプリは、アーキテクチャが異なる機種間での互換性はほとんど無かった。MS-DOSは画面描画に関わるAPIを持たないため、グラフィックメモリを操作して画面描画を行うアプリケーションはハードウェアを直接操作しており、機種依存となったためである。また、たいていのマシンに「とりあえず使える似たようなフレームバッファ」機能がある現代とは異なり、各社の特色を出すべくグラフィックシステムも個性あるものが多かったことから、プログラムを書き直すのも容易でないことも多かった。
日本ではソフトウェアのみで日本語表示を可能としたDOS/Vが発売され、漢字V-RAM機能を持たないPC/AT互換機が普及した。
バージョン6からはIBMとマイクロソフトのOS共同開発契約が終了し、後にMS-DOSとPC DOSの単体販売やサポートも終了したため、2016年現在はオープンソースを含めた互換DOSの他、Microsoft Windowsのコマンドプロンプト環境などのDOS互換環境が存在する。
MS-DOSは1995年時点で全世界で1億本を出荷した。
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に移植されない事に業を煮やして独自に移植作業を行い、QDOSとして売り出した。マイクロソフトはこれを開発者込みで買収しIBM PC用に改修した。
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など、供給先メーカも名称も複数あった。1983年のバージョン2.0より「MS-DOS」名称に一本化された。IBM以外の各メーカーへのOEM供給品に自社の商標（MS）をつけ「MS-DOS」名称としたのは、OEM先メーカーが独自の名前をつけて混乱することを避けるために整理する意味があった。ただし、その後も富士通FM TOWNSのTownsOSや各種制御機器など、内部的にMS-DOSがOEM提供されている場合には「MS-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年にはサポートも終了した。
MS-DOSと名付けられているように、マイクロソフトのパーソナルコンピュータ向けのDOS（ディスク・オペレーティング・システム）であり、主にディスクの管理を行うシングルタスクOSであった。マルチタスク機能・メモリ保護機能などはOS内部には持っていなかった。またグラフィック画面やサウンドの操作・ネットワーク機能などは、Microsoft WindowsやLAN Managerのほかアプリケーションが直接I/Oを操作するかデバイスドライバなどで提供されていた。
ファイルの管理は、FATとクラスタにより構成される。
ファイル名は8.3形式、つまり、8バイトまでのベース名と3バイトまでの拡張子の合計最大11バイト（拡張子の前の「.」を数えれば12バイト）で表す。アルファベットの大文字と小文字は区別しない（全て大文字と見なされる）。
さらにバージョン2以降では、ディレクトリやファイル属性の与奪が使用できた。
起動順序はバージョンによって若干違うが、概ね以下の通りである。codice_8では、各ドライブをcodice_9から最大codice_10までのドライブレターで管理し、内部コマンドではファイル・ディレクトリ一覧の参照、ファイルとディレクトリの作成・コピー・名前変更、コンピュータの時刻や環境変数およびパスの設定参照などができるほか、外部コマンドやアプリケーションなどの実行形式のファイルの起動が行えた。またVer.2以降ではUNIXを意識した入出力のリダイレクト機能やパイプ機能なども利用できたが、MS-DOS上のパイプやリダイレクトはいずれもテンポラリファイルを介した擬似的な実装に留まっていた。
MS-DOSにおける実行ファイルの形式は、現在のUNIX系環境で言うシェルスクリプトに類似したコマンドのバッチ処理を記述するバッチファイル(拡張子はcodice_11)と、CPUが直接実行するバイナリファイルに大別することができる。
このうちバイナリファイルには、単一のセグメントを使うcodice_12形式、複数のセグメントが使用される場合のcodice_13形式、さらにデバイスドライバとしてcodice_14形式が存在し、それぞれ同名の拡張子を持つ。
codice_15形式の実行ファイルは、バイナリ読み込み時に設定されるコード・データ・エクストラ・スタックの各セグメントレジスタの値が同一アドレスに設定され、プログラム内部でセグメントレジスタを操作しない場合は単一セグメント、最大64KBのメモリ空間を操作する。CP/M 80用に書かれた8080用のアセンブリ言語のソースコードを8086へコンバートした場合を想定したメモリモデルであるが、codice_15形式のバイナリであってもプログラム側で適切にセグメントレジスタを操作することで64KB以上の空間へのアクセスが可能である。
このうち.codice_14形式のバイナリは、原則的に起動時に一度だけ実行されるcodice_18に記述する以外の方法では直接読み込むことができない。
システムコールは、ソフトウェア割り込みにより呼び出されるが、8080やZ80などの8ビットのコンピュータではメジャーな存在だったCP/Mとの互換性、特に8080用にアセンブリ言語で書かれたソースコードを8086にコンバートして用いる場合を想定し、call 5でも利用可能としてCP/M 80からの移行を促した。
MS-DOSにおいて、DOS自身のカーネルを含むプログラムの実行に確保できるメモリ空間（ユーザーメモリ、コンベンショナル・メモリ）は、8086のアドレス空間の最大1MBである。ほとんどのコンピュータでは、この空間にBIOS ROMやメモリマップドI/O、VRAMなどの空間も存在するため、バンク切替えや様々なメモリ拡張手段などを用いずに一時にアクセス可能なメモリ空間は最大でも640KBから768KB程度であった。
ただし、RAMディスクドライブやディスクキャッシュなどはバンクメモリやEMS、プロテクトメモリ（80286/386以降）等のコンベンショナルメモリ以外の領域・手段の利用が一般化していたため、「貴重な」コンベンショナルメモリがこれらの領域によって圧迫されることはなかった。
日本語入力用のFEPなどの常駐型のデバイスドライバを使用すると一度に使用できるユーザーメモリはさらに減少するため、ユーザーはEMSやXMS、HMAやUMBなどの拡張メモリの管理機能を利用して、辞書や常駐部やMS-DOSシステムの一部をそれらへ配置し、コンベンショナルメモリの圧迫を少しでも避けることが重視されるようになった。
これらのメモリへの配分設定はcodice_18やcodice_20を記述することで行い、事実上ユーザーに一任されていた。
バージョン3まではこれらの設定を行うためにはサードパーティー製のメモリドライバ等を使用する必要があったが、バージョン5では標準機能としてOSに組み込みメモリドライバやデバイスドライバも付属するようになった。また、これらの環境設定を半自動的に行う設定アプリケーションも添付された。
各種デバイスドライバには自動でインストールを行うスクリプトやプログラムが整備され、単に動く状態を作るだけであればエンドユーザーがこれらを直接操作する必要はほぼ無かった。しかし千差万別な環境の全てに対応するのは難しく、ひとたび問題が発生した場合には初心者にとっては事態収拾のハードルが高かった。また、無駄を省き最適な設定をするとなると、知見と試行錯誤が要求される職人的な資質が要求された。
Windows 9x系のOSは製品としては「DOSを必要としない、Windowsという単体のOS」と称しているが、内部的には一種のDOSエクステンダが組み込まれていて、従来のWindows 3.xと同様MS-DOSモジュールから起動してプロテクトモードで稼働しGUIや擬似マルチタスクを提供する構造をしていた。ただし、Windowsが使用するMS-DOSシステムコールはごく一部に限られ、VFATなどによりファイル管理方法が拡張されている。なお、Windows 95・98などのWindows本体を起動していないMS-DOSモードの場合はVFAT上のロングファイルネームでも8文字+拡張子3文字のショートファイルネーム形式のファイル名で表示された。
MS-DOSとPC DOSの主要なバージョンの一覧は以下の通り。
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にバンドルされた分だった。
IBM PC/XTの仕様に合わせ、HDDや360KB 5.25インチフロッピーディスク (2D) をサポートしている。階層構造ディレクトリ、codice_18によるデバイスドライバの追加機能、UNIXライクなパイプ等の機能が追加された。アセンブラのMASMが付属していた。
マイクロソフト版はこのバージョンより名称が「MS-DOS」に一本化された。当初 IBM PC/AT 用に発売。主としてネットワーク対応と大容量HD対応の為の16ビットFATが追加された。本来80286が標準のPC/AT向けだったが、互換性確保目的で80286のプロテクトモードを利用した新機軸は敢えて盛り込まれなかったためサードパーティー製の各種ユーティリティによって機能拡張するユーザが多かった。
ベンダーによる独自拡張などで方言が多くバージョン番号の体系も大きく乱れている。必要十分なスペックと安定性が評価され、またバージョン4以降の仕様変更の影響を避けるために一部ではかなりの長期間にわたって愛用されていた。バージョン3.20から派生し、8086上で限定的な擬似マルチタスク環境を実現したもの。マイクロソフトが開発したが不十分であるとしてIBMには採用されず、にネットワークOSとしてOEMされた他、僅かの用途に留まり絶滅亜種になってしまった。非同期I/O対応やバックグラウンドタスク規約など資産の一部は Windows 2.x に流用され、また80286プロテクトモードを前提に並行開発されていたもの（当初バージョン5と呼ばれていた）はIBM主導で大幅に改訂され、世に出た時にはOS/2バージョン1.0になっていた。
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系の拡張版のみを販売し続けた。再びマイクロソフト主導で開発された。バージョン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対応も進められ、コマンドにヘルプが付されるなど利便性も向上した。
テキストエディタは、過去のバージョンに標準添付されていたラインエディタ「codice_23」に加えスクリーンエディタ「」が添付された。開発環境として、コマンドラインエディタに加え独自に拡張された構造化BASICコンパイラQuickBASICが標準添付されていた。
それまで未公開だったファンクションの多くがユーザに解放されたためカスタマイズやデバイスドライバ開発が更に容易になった。日本ではマイクロソフトがDOS/VのOEM供給を開始し、PC/AT互換機をベースに独自の拡張を行っていたAX陣営や東芝 (J-3100)もこの頃よりDOS/Vへのシフトを進めるようになった。また、世界のデファクトスタンダードであるPC/AT互換機のハードウェアでそのまま日本語版OSを使えるようになった為に日本国外のメーカーが積極的に日本市場へ参入し始め、NECの独擅場であった日本市場は大きく変貌することとなった。ディスク最適化やディスク圧縮機能（後述）、コンピュータウイルス検出・除去など、CD-ROMアクセスに必要なMSCDEXの付属等付加機能の充実が主。MS-DOS単体としての最終版。
デジタルリサーチからMS-DOS互換の DR-DOS 6.0 が発売された。大きな特徴は補助ユーティリティの大幅な増強である。その為、IBMおよびマイクロソフトでも基本仕様はほとんど変えずに補助ユーティリティを追加する事でバージョン6を発売することになった。IBMは6.1、それに続くマイクロソフトは6.2と、先に出た競合相手よりバージョン番号はそれぞれ0.1だけ大きい。
起動時に特定のキーを押すとcodice_18・codice_20の一部の行を実行したり、全てバイパスする機能があった。
マイクロソフト版は同時期に発売された Windows 3.1 の普及を促すという販売戦略からDOSシェルを廃止したと見られた。テキストエディタは日本語に対応して共通のcodice_26となった（PC-98版はcodice_27が付属）。Windows 95/98/98SE に含まれているバージョン。ファイルシステムでは長いファイル名がサポートされたのが最大の特徴。従来のcodice_4はcodice_3にその機能を統合されて設定ファイルとなり、codice_3が起動する標準シェルがcodice_8ではなくcodice_32であるなどMS-DOSを極力見せない工夫がされていた。しかし、Windows起動中にテキストモードのカーソルが見える。Windows 95のOSR2以降ではFAT32にも対応しているバージョン7.1である。また、Windows 95/98はWindowsを起動せずにMS-DOSモードで再起動することができた。
1995年リリース。IBM版のみ。開発環境として「REXX」を標準添付。ディスク圧縮ユーティリティは「SuperStor/DS」から「Stacker4.0」に変更された。MS-DOS 7（マイクロソフト版）とは異なりGUIとの融合はされなかったが、当時インターネットの普及が進んでいた中でPalm Top PC 110の人気を受けてPC DOS用ウェブブラウザ「WebBoy」が開発された。
Windows Meに含まれているバージョン。codice_3にcodice_34およびcodice_35（ディスクキャッシュ）の機能を統合した最終版であり、もはやWindowsのブートローダでしかなくMS-DOSモードでの起動も廃止された。Windows MeやWindows XP以降で起動ディスクを作成するとこのMS-DOSが書き込まれる。またPC-9800シリーズ全盛期には、ゲームソフトの組み込み用として下位互換（INT21系のサブセットのみ互換）の「MEG-DOS」などがあった。アリスソフトの「ALICE-DOS」は、もともとゲームソフト本体はMS-DOSをインストールしたハードディスクドライブ上で動かすことを前提としあくまでもフロッピー単体でも起動するようサポート用に作られたものであったため、バッチファイルを動かす機能も有していた。