MS-DOS(エムエスドス)は、1981年よりマイクロソフトが開発・販売したパーソナルコンピュータ向けのオペレーティングシステム (OS) である。
「MS-DOS」が製品名で、マイクロソフト ディスクオペレーティングシステム()を意味する。
概要 IBMはIBM PC用のオペレーティングシステムの開発をマイクロソフトに依頼し1981年にIBM PC DOSとして発売したが、このOSをマイクロソフト経由で他社にOEM提供したものがMS-DOSである本当に知っている?Windows XPの基礎[アーキテクチャ編](第2回)なぜDOSアプリがWindowsで動くのか? - 日経XTECH「何とか納期に間にあった「PC-DOS」だが,Microsoftが他社にOEM供給する際には,自社の商標である「MS」を付け「MS-DOS」と呼んだ。」世界のOSたち - コンピューターを支える一時代を築いた「MS-DOS」- +Digital「最初のMS-DOS「PC DOS 1.0」が誕生しました。IBMとMicrosoftとの契約では、開発したOSを他社へOEM(他社ブランドの製品を製造すること)供給することが認められていた」。ただしマイクロソフトは現在ではMS-DOSは1981年発売と説明しているFacts About Microsoft - Microsoft"Aug. 12, 1981 IBM introduces its personal computer with Microsoft’s 16-bit operating system, MS-DOS 1.0"。IBM PC DOSとMS-DOSはバージョン5まではほぼ同内容だが、バージョン6以降は独自機能が追加された。
MS-DOSはCP/M類似のIntel 8086系向けの16ビット オペレーティングシステムだが、IBM PCの成功によりパーソナルコンピュータ市場でデファクトスタンダードとなり、後に8ビットなど各種のCPUやコンピュータ用にも移植され、また各種の組み込み機器でも使用された。
MS-DOSは基本的にはコマンドラインインタフェースやUNIX風の階層型のファイルシステムを持つシングルタスクのオペレーティングシステムだが、各種アプリケーションや、バージョン4一部メーカー用はバージョン5より付属の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などの言語製品の開発を依頼していたManes & Andrews (1993). Gates, Doubleday, .。OSについても8086対応版のCP/Mをマイクロソフトに開発してもらおうとした。しかし彼らはCP/Mのソースの権利を持っていなかったため、ビル・ゲイツのアドバイスに従ってデジタルリサーチと交渉することにした。ところがデジタルリサーチとの交渉はうまくいかず、再びマイクロソフトに開発の依頼を持ち込んだ。Evans, Harold (2004). They Made America, Little, Brown and Company. .Operational Choice, PC Magazine Charter Issue, February–March 1982Hamm, Steve; Jay Greene (October 25, 2004). "The Man Who Could Have Been Bill Gates". BusinessWeek.
マイクロソフトは「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-DOSDuncan, Ray (1988). The MS-DOS Encyclopedia, Microsoft Press. .、のZ-DOSZenith's new Z100 has something for everybody, InfoWorld, July 12, 1982Zenith challenges IBM's share of micro market, InfoWorld, September 13, 1982Review: Zenith Z-100, InfoWorld, November 7, 1983など、供給先メーカーは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種類に大きく分類された。のような一部のパソコンはMS-DOS互換だったがIBM互換ではなく、特定のハードやIBM PCのアーキテクチャに依存しないMS-DOS専用に作られたソフトウェアを実行できた。
このデザインはアプリケーションの互換性を高めるのに役立ち、MS-DOSのサービスだけを使ってデバイスI/Oにアクセスする場合は特に有効で、このデザイン方針は後のWindows NTにも影響を及ぼした(Hardware Abstraction Layerを参照)。しかし当時はハードに直接アクセスすることでパフォーマンスを稼ぐアプリが主流を占め、特にゲームではこれが顕著で、各社は次第に、1つのMS-DOSがどの会社のパソコンでも動作するようになった。
DOSの限界と開発の終焉 DOSは標準でグラフィカルユーザインターフェースやマルチタスク機能や仮想記憶を持たず、80386などの32ビット環境でも「高速な8086」としか使用できなかったため、DOSの拡張や次世代OSが待望された。
1985年にはDOSエクステンダーであるDESQviewAST memory board to come with Quarterdeck Desqview, Computerworld, November 4, 1985、同年にDOS上で稼働する「オペレーティング環境」としてMicrosoft Windowsが登場したMicrosoft Focuses Efforts On Direct Corporate Sales, InfoWorld, November 18, 1985。さらに1987年には本格的なDOSの後継OSとしてIBMとマイクロソフトから OS/2 Ver. 1.0 が登場したIBM Ships OS/2 Four Months Early, InfoWorld, December 7, 1987Zenith First to Ship Microsoft OS/2, InfoWorld, December 21, 1987。OS/2はDOSと同様に、IBMおよびマイクロソフトの両者から供給されたが、性能やDOS互換環境の問題もあり広く普及しなかったためDOSは継続して使われたVendors Decide Against Bundling OS/2 With PCs, InfoWorld, November 30, 1987。
1990年に日本ではIBM DOSのバージョン4からDOS/Vが生まれ、マイクロソフトもバージョン5からDOS/VのOEM供給を開始したため『日経バイト』 1991年12月号、p.160.。、日本でもPC/AT互換機の市場が立ち上がり始めた。
1993年のバージョン6からは、IBMとマイクロソフトのOS共同開発契約(OSクロスライセンス契約)が終了したため以後はIBMまたはマイクロソフトの単独開発となった。両者は基本部分の互換性は保たれているが、付属ユーティリティの相違などが広がった。マイクロソフトはこのMS-DOS 6を単体販売の最終バージョンとし、1995年のMicrosoft Windows 95以降は単体のDOSも不要となった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に基づいて一般公開した。これにより、コードソースは利用可能になるが、オープンソース・イニシアティブやフリーソフトウェア財団の規格で定義されるオープンソースではない (NB. While the publishers claim this would be MS-DOS 1.1 and 2.0, it actually is SCP MS-DOS 1.25 and a mixture of Altos MS-DOS 2.11 and TeleVideo PC DOS 2.11.) (NB. While the author claims this would be MS-DOS 1.1 and 2.0, it actually is SCP MS-DOS 1.25 and a mixture of Altos MS-DOS 2.11 and TeleVideo PC DOS 2.11.) (NB. While the author claims this would be MS-DOS 1.1 and 2.0, it actually is SCP MS-DOS 1.25 and a mixture of Altos MS-DOS 2.11 and TeleVideo PC DOS 2.11.)。マイクロソフトは、2018年9月28日にMITライセンスに基づいてコードを再ライセンスし、これらのバージョンを自由ソフトウェアとした。2024年4月25日、マイクロソフトはMS-DOS 4.00のコードを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以降では、ディレクトリの作成が可能となり、ファイル属性にも対応した。
起動順序 起動順序は概ね以下の通りである。
コンピュータのROM BIOSやディスクのマスターブートレコードからディスクのセクタ0にあるブートセクタを読み込んで実行。 ディスクからIO.SYSとMSDOS.SYSがメモリの中にロードされる。 IO.SYSを起動し、その後MSDOS.SYSに制御を移行する。 CONFIG.SYSが起動ドライブのルートディレクトリにあれば、そこに記述されたデバイスドライバを読み込む。 バッチ処理のためのコマンドインタプリタでもある標準シェルのCOMMAND.COMを起動する。 AUTOEXEC.BATが起動ドライブのルートディレクトリにあれば、その内容を実行し、環境変数の設定や起動時に実行すべきコマンドなどの呼び出し、場合によってはアプリケーションの起動なども行う。
COMMAND.COMでは、各ドライブをA:から最大Z:までドライブレターの数はCONFIG.SYSのLASTDRIVEで変更可。のドライブレターで管理し、内部コマンドではファイル・ディレクトリ一覧の参照、ファイルとディレクトリの作成・コピー・名前変更、コンピュータの時刻や環境変数およびパスの設定参照などができるほか、外部コマンドやアプリケーションなどの実行形式のファイルの起動が行えた。また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に記述する以外の方法では直接読み込むことができない ただし、PC-98版のMS-DOS 3.1以降ではADDDRV.EXEと登録を記述したファイルの組み合わせにより登録し、DELDRV.EXEで外せる。この方法を使用できるのはキャラクタデバイスのみであり、CONFIG.SYSで一度登録したデバイスドライバは外せない。IBM PC用では何種類かサードパーティで同様のプログラムが作成されている。。
システムコール システムコールは、ソフトウェア割り込みにより呼び出されるが、8080やZ80などの8ビットのコンピュータではメジャーな存在だったCP/Mとの互換性、特に8080用にアセンブリ言語で書かれたソースコードを8086にコンバートして用いる場合を想定し、call 5でも利用可能としてCP/M 80からの移行を促したFAR JMP instruction for CP/M-style calls。
メモリ管理 MS-DOSにおいて、DOS自身のカーネルを含むプログラムの実行に確保できるメモリ空間(ユーザーメモリ、コンベンショナル・メモリ)は、8086のアドレス空間の最大1MBである。ほとんどのコンピュータでは、この空間にBIOS ROMやメモリマップドI/O、VRAMなどの空間も存在するため、バンク切替えや様々なメモリ拡張手段などを用いずに一時にアクセス可能なメモリ空間は最大でも640KBから768KB程度ユーザーメモリは、IBM PC互換機およびPC-9800シリーズ等では640KB、PC-H98シリーズやFMRシリーズ・FM TOWNS等は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マイクロソフト備考11981年PC DOS 1.0(MS-DOS) 1.251981年 IBM PC用にPC DOSが登場。1982年 マイクロソフトがIBM以外に1.25以降のOEM供給を開始(名称は供給先により異なる)。21983年PC DOS 2.0MS-DOS 2.0PC/XT用に登場、階層ディレクトリなど。マイクロソフト版の名称が「MS-DOS」に一本化された。日本ではPC-9801などに日本語MS-DOSのOEM供給を開始。31984年PC DOS 3.0MS-DOS 3.0PC/AT用に登場、FAT16など。広く普及し事実上の標準に。同時期にDR DOS 4も出荷。41988年IBM DOS 4.0MS-DOS 4.0IBM版が名称変更。DOSシェルなど。IBM版4.05より日本でDOS/V(IBM DOS J4.05/V)も登場。51991年IBM DOS 5.0MS-DOS 5.0メモリ管理機能強化。IBMとマイクロソフトのOS共同開発の最終版。マイクロソフト版は初めて単体の直接販売が開始される。日本ではマイクロソフト版DOS/V(MS-DOS 5.0/V)も登場し、各社PC/AT互換機に広く採用される。同時期にDR DOS 6.0 出荷。61993年PC DOS 6.1PC DOS 6.3MS-DOS 6.0MS-DOS 6.2IBM版が名称再変更。PC DOSとMS-DOSは付属ユーティリティの違いが拡大。MS-DOSは単体販売の最終版。同時期にNovell DOS(DR DOS) 7出荷。71995年(なし)MS-DOS 7.0MS-DOS 7.1Windows 95/98/98SEの内部バージョン。PC DOS 7 とは全く別物。7.1はWindows 95 OSR2 以降で、FAT32に対応した。1995年PC DOS 7PC DOS 2000(なし)IBM版のみ。スクリプト言語のREXXをサポート。MS-DOS 7 とは全く別物。82000年(なし)MS-DOS 8Windows Meの内部バージョン。MS-DOSの最終版。
バージョン1 サムネイル|コンパックOEMのMS-DOS 1.12 サムネイル|PC-9801用MS-DOS 1.25における漢字入力機能 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 Press Release announcing the PC August 12, 1981- IBM PC(初代)出荷と同時にリリース。64KBのメモリ空間のうち約12KB(そのうちシェルが5KB)を占有した。また、160KBの5.25インチフロッピーディスク (1D) をサポートしていた。シアトル・コンピュータ・プロダクツの86-DOS 1.14と同等。PC DOSのみ。 バージョン1.1(1982年5月)IBM enhances Personal Computer with 2-sided drives, InfoWorld, June 7, 1982- 360KB 5.25インチフロッピーディスク (2D) サポートの他、一部のバグフィクス。PC DOSのみ。 バージョン1.25(1982年5月)Duncan, Ray (1988). Advanced MS-DOS Programming, Microsoft Press. .- マイクロソフトが、8086プロセッサを利用したパーソナルコンピュータ、さらにはIBM PC互換機向けに、IBM以外のメーカーへのOEM提供を開始。日本では当時マイクロソフトの代理店であったアスキーが日本語版MS-DOSを開発している最中で、それに先駆けて複数のメーカーが各自で日本語処理機能を実装して販売していた「Unix風の機能を持ち込んだ日本語MS-DOS2.0の機能と内部構造」『日経エレクトロニクス』 1983年12月19日号、pp.165-190。。
バージョン2 サムネイル|Leading Edge Model D用のMS-DOS 2.11起動ディスク