MS-DOSMS-DOS(エムエス-ディーオーエス、エムエスドス[1])は、マイクロソフトが開発・販売していた、パーソナルコンピュータ向けのオペレーティングシステムである。MS-DOSMS-DOSのコマンドラインの一例。画像ではCドライブのルートディレクトリを指定している。DOS入門関連の解説書・教科書があります。DOS」として発売されたが、1982年よりマイクロソフトがIBMとの共同開発契約に基づきコンパック等のIBM以外のメーカーに「MS-DOS」名称でOEM提供を開始した(ただしマイクロソフトは現在では「MS-DOS」は1981年発売と説明している)。PCの成功により16ビットパーソナルコンピュータ市場でデファクトスタンダードとなった。8086系のパーソナルコンピュータ向けのオペレーティングシステムだが、後に8ビットなど各種のCPUやコンピュータ用にも移植され、また各種の組み込み機器でも使用された。2.0などの併用により、グラフィカルユーザインタフェースや疑似マルチタスクも使用可能となった。MS-DOS自体は画面描画に関わるアプリケーションプログラミングインタフェースを持たないため、多くのMS-DOS用アプリケーションは機種依存であり、異なる機種間では稼働せず、また移植も容易ではなかった[3]。Windowsのコマンドプロンプトなどの互換環境がある。DOSの各サポートは終了した。PCとなるパーソナルコンピュータの開発に着手した[4]。IBMの主力商品である汎用コンピュータに比べるとごく少数のスタッフとわずかな予算しか与えられなかった。プロジェクトリーダーのフィリップ・ドン・エストリッジ(英語版)は、可及的速やかに商品化にこぎ着けるためにソフトウェアは自社開発せず、すべて外部から調達する方針を立てた[5]。当時のマイクロソフトはBASICインタプリタやアセンブラならびに各種言語のコンパイラ等を開発しており、それらの製品のほとんどが当時のパーソナルコンピュータ市場におけるデファクトスタンダードOSであるデジタルリサーチのCP/M上で動作するものであった。IBMはマイクロソフトに対し当初はBASICなどの言語製品の開発を依頼していた[6]。OSについても8086対応版のCP/Mをマイクロソフトに開発してもらおうとした[7]。彼らはCP/Mのソースの権利を持っていなかった為、ビル・ゲイツのアドバイスに従ってデジタルリサーチと交渉することにした[8]。ところがデジタルリサーチとの交渉はうまくいかず、再びマイクロソフトに開発の依頼を持ち込んだ。[9][10][11][12]マイクロソフトは「M-DOS」というOSを開発した経験はあるが、販売したことはなかった[5]。IBMから要求された期日は1年以内という厳しいもので、言語製品の開発に加えてOSにまで手を回す余裕はなかった[13]。同じ頃、シアトル・コンピュータ・プロダクツはCP/Mが8086に移植されない事に業を煮やし、ティム・パターソンがわずか6週間で開発したQDOSを、86-DOSとして販売した。基本的には8080/Z80用に作られたデジタルリサーチのCP/Mクローンであり、8086に移植して、ディスク読み込み処理のバッファ管理を改良し、ファイルシステムを新規開発したFAT12にしたものである。ファーストバージョンは1980年8月に出荷された[14]。1.10を$75,000で購入した。マイクロソフトはバージョンナンバーを変更せず、名前をMS-DOSに変更した。PCで動作する3つのOSの1つ[19]となった[14]。マイクロソフトによる各メーカーへのOEM供給も認めて普及を図る」という役割分担となったと言われる[要出典]。1.Xでも同様となる。DOS)の普及(デファクトスタンダード化)を決定づけたとも言える。[要出典]1982年、マイクロソフトはバージョン1.25からIBM以外のメーカーにMS-DOSのOEM供給を開始した。ライフボート・アソシエイツ(英語版)のSB-DOS[20]、コンパックのCompaq-DOS[21]、ゼニス・データ・システムズ(英語版)のZ-DOS[22][23][24]など、供給先メーカーは70社以上に及んだ[25]。1983年のバージョン2.0より、IBM以外の各メーカーへのOEM供給品は「MS-DOS」名称に一本化された。OEM供給品に自社の商標(MS)をつけ「MS-DOS」名称としたのは、OEM先メーカーが独自の名前をつけて混乱することを避けるために整理する意味があった[要出典]。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種類に大きく分類された。PCのアーキテクチャに依存しないMS-DOS専用に作られたソフトウェアを実行できた。当時はハードに直接アクセスすることでパフォーマンスを稼ぐアプリが主流を占め、特にゲームではこれが顕著で、各社は次第に独自路線をあきらめてIBM-PC互換機を作るようになり(英語版)、1つのMS-DOSがどの会社のパソコンでも動作するようになった。DOSの限界と開発の終焉編集DOSは標準でグラフィカルユーザインターフェースやマルチタスク機能や仮想記憶を持たず、80386などの32ビット環境でも「高速な8086」としか使用できなかったため、DOSの拡張や次世代OSが待望された。Windowsが登場した[27]。登場した[28][29]。OS/2はDOSと同様に、IBMおよびマイクロソフトの両者から供給されたが、性能やDOS互換環境の問題もあり広く普及しなかったためDOSは継続して使われた[30]。DOSのバージョン4からDOS/Vが生まれ、マイクロソフトもバージョン5からDOS/VのOEM供給を開始したため[31]、日本でもPC/AT互換機の市場が立ち上がり始めた[32]。1993年のバージョン6からは、IBMとマイクロソフトのOS共同開発契約(OSクロスライセンス契約)が終了したため以後はIBMまたはマイクロソフトの単独開発となった[33]。両者は基本部分の互換性は保たれているが、付属ユーティリティの相違などが広がった。2000が最終バージョンとなり、2001年にはサポートも終了した[34]。機能編集MS-DOSと名付けられているように、マイクロソフトのパーソナルコンピュータ向けのDOS(ディスク・オペレーティング・システム)であり、主にディスクの管理を行うシングルタスクOSであった。開発当初のCPUにマルチタスク機能・メモリ保護機能がなかったためMS-DOSも対応しておらず、CPUにそれらの機能が搭載された後もMS-DOSが対応することはなかった。Managerのほかアプリケーションが直接I/Oを操作するかデバイスドライバなどで提供されていた。ファイル管理編集ファイルの管理は、FATとクラスタにより構成される。ファイル名は8.3形式、つまり、8バイトまでのベース名と3バイトまでの拡張子の合計最大11バイト(拡張子の前の「.」を数えれば12バイト)で表す。アルファベットの大文字と小文字は区別しない(全て大文字と見なされる)。バージョンによって若干違うが、概ね以下の通りである。BIOSやディスクのマスターブートレコードからディスクのセクタ0にあるブートセクタを読み込んで実行。ディスクからIO.SYSとMSDOS.SYSがメモリ中にロードされる。IO.SYSを起動し、その後MSDOS.SYSに制御を移行する。CONFIG.SYSが起動ドライブのルートディレクトリにあれば、そこに記述されたデバイスドライバを読み込む。バッチ処理のためのコマンドインタプリタでもある標準シェルのCOMMAND.COMを起動する。AUTOEXEC.BATが起動ドライブのルートディレクトリにあれば、その内容を実行し、環境変数の設定や起動時に実行すべきコマンド等の呼び出し、場合によってはアプリケーションの起動なども行う。3]のドライブレターで管理し、内部コマンドではファイル・ディレクトリ一覧の参照、ファイルとディレクトリの作成・コピー・名前変更、コンピュータの時刻や環境変数およびパスの設定参照などができるほか、外部コマンドやアプリケーションなどの実行形式のファイルの起動が行えた。Ver.2以降ではUNIXを意識した入出力のリダイレクト機能やパイプ機能なども利用できたが、MS-DOS上のパイプやリダイレクトはいずれもテンポラリファイルを介した擬似的な実装に留まっていた。実行ファイル編集MS-DOSにおける実行ファイルの形式は、現在のUNIX系環境で言うシェルスクリプトに類似したコマンドのバッチ処理を記述するバッチファイル(拡張子はBAT)と、CPUが直接実行するバイナリファイルに大別することができる。このうちバイナリファイルには、単一のセグメントを使うCOM形式、複数のセグメントが使用される場合のEXE形式、さらにデバイスドライバとしてSYS形式が存在し、それぞれ同名の拡張子を持つ。COM形式の実行ファイルは、バイナリ読み込み時に設定されるコード・データ・エクストラ・スタックの各セグメントレジスタの値が同一アドレスに設定され、プログラム内部でセグメントレジスタを操作しない場合は単一セグメント、最大64KBのメモリ空間を操作する。80用に書かれた8080用のアセンブリ言語のソースコードを8086へコンバートした場合を想定したメモリモデルであるが、COM形式のバイナリであってもプログラム側で適切にセグメントレジスタを操作することで64KB以上の空間へのアクセスが可能である。80からの移行を促した[35]。メモリ管理編集MS-DOSにおいて、DOS自身のカーネルを含むプログラムの実行に確保できるメモリ空間(ユーザーメモリ、コンベンショナル・メモリ)は、8086のアドレス空間の最大1MBである。日本語入力用のFEPなどの常駐型のデバイスドライバを使用すると一度に使用できるユーザーメモリはさらに減少するため、ユーザーはEMSやXMS、HMAやUMBなどの拡張メモリの管理機能を利用して、辞書や常駐部やMS-DOSシステムの一部をそれらへ配置し、コンベンショナルメモリの圧迫を少しでも避けることが重視されるようになった。そのため、RAMディスクドライブやディスクキャッシュなどはバンクメモリやEMS、プロテクトメモリ(80286/386以降)の機能を用いて、コンベンショナルメモリ以外の領域を使用するのが一般的であった。これらのメモリ配分の設定はCONFIG.SYSやAUTOEXEC.BATを記述することで行い、事実上ユーザーに一任されていた。バージョン3まではメモリドライバやデバイスドライバはOSには付属せずサードパーティー製のメモリドライバ等を使用する必要があったが、バージョン5では標準機能としてOSに付属するようになった。これらの環境設定を半自動的に行う設定アプリケーションも添付された。各種デバイスドライバには自動でインストールを行うスクリプトやプログラムが整備され、動く状態を作るだけであればエンドユーザーがこれらを直接操作する必要はなくなったが、全ての環境に対応するのは難しく最適な設定や問題発生時の対応など初心者にとっては設定のハードルは高かった。9x系では互換性のためにMS-DOS相当の機能が一部内部に組み込まれているものの「MS-DOSを必要としないWindowsという単体のOS」となった。95・98などのWindows本体を起動している状態ではプロテクトモードの完全なマルチタスク(プリエンプティブマルチタスク)で稼働しているが、シングルタスクのMS-DOSモード(DOSプロンプトとは異なる)に切り替えることが可能である。Windows上で起動するDOSプロンプトもMS-DOSと互換性があるが一部動作しないアプリケーションがあり、この問題を解決するための機能がMS-DOSモードで、完全なCUI表示となり、MS-DOSアプリケーションのみが動作し、DOSプロンプト上ではロングファイルネームで表示されるVFATであっても8文字+拡張子3文字のショートファイルネーム形式のファイル名で表示され、MS-DOSとほぼ同じ状態になる。DOSの主要なバージョンの一覧は以下の通り。マイクロソフトがIBM以外に1.25以降のOEM供給を開始(名称は供給先により異なる)。PC/XT用に登場、階層ディレクトリなど。マイクロソフト版の名称が「MS-DOS」に一本化された。日本ではPC-9801などに日本語MS-DOSのOEM供給を開始。PC/AT用に登場、FAT16など。広く普及し事実上の標準に。