読み込み中...MS-DOS(エムエス-ディーオーエス、エムエス-ドス、Microsoft Disk Operating System)は、マイクロソフトが開発・販売していた、パーソナルコンピュータ向けの16ビットOSである。
本来はIBMのPC DOSを除いた、マイクロソフトによるOEM版のみを指すが、本稿では両者を説明する。
「DOS」とは本来は「ディスク装置を管理できるOS」全般(→DOS (OS)を参照)だが、現在は主にMS-DOS(およびPC DOS)を指す。
正式にはIBMから供給されるものがPC DOS(一部バージョンはIBM DOS)、マイクロソフトがIBM以外のメーカー用にカスタマイズしOEM供給するものがMS-DOSだが、日本では両者を含めMS-DOSと呼ぶ場合も多い。
なお、MS-DOSという名称の影響で、マイクロソフト製品に関してはMS-Windows、MS-Office、MS-Basicなど、"MS-"を付ける略称が一般的だが、いずれもMicrosoftを略した俗称であり、正式名称として"MS-"がつくのはMS-DOSだけである。
動作対象は、8086系16/32ビットマイクロプロセッサ、及びその互換プロセッサを搭載したパーソナルコンピュータである。クロス開発環境などでは、8086系マイクロプロセッサをエミュレートした仮想ハードウェア上で動作させることもあった。
日本ではMS-DOSがNECのPC-9800シリーズや、富士通のFMRシリーズ等に移植され、事実上の標準OSとして利用されていた。
MS-DOSは、1995年時点で全世界で1億本を出荷した『日経産業新聞』1995年6月22日付。
当時のマイクロソフトは、BASICインタプリタやアセンブラ、各種言語のコンパイラ等を開発しており、それらの製品のほとんどが、当時のパーソナルコンピュータ市場におけるデファクトスタンダードOS、デジタルリサーチのCP/M上で動作するものであった。
1980年7月頃、IBMは、後にIBM PCとなるパーソナルコンピュータの開発に着手した。しかし、IBMの主力商品である汎用コンピュータに比べると、ごく少数のスタッフとわずかな予算しか与えられなかった。プロジェクトリーダーのフィリップ・ドン・エストリッジは、可及的速やかに商品化にこぎ着けるために、ソフトウェアは自社開発せず、すべて外部から調達する方針を立てた。
IBMは、マイクロソフトに対し、当初はBASICなどの言語製品の開発を依頼していた。OSについても、8086対応版のCP/Mをマイクロソフトに開発してもらおうとした。しかし、彼らはCP/Mのソースの権利を持っていなかった為、ビル・ゲイツのアドバイスに従ってデジタルリサーチ社と交渉することにした。しかし、デジタルリサーチとの交渉はうまくいかず、結局マイクロソフト自身がOSを開発する事となった。
とは言うものの、マイクロソフトにはOSの開発経験は無かったため、同じ頃、CP/Mが8086に移植されない事に業を煮やして独自に移植作業を行っていたシアトルコンピュータプロダクツ社の「86DOS」を開発者込みで買収し、IBM PC用に改修した。このやり方を進言したのは、当時同社役員でもあった西和彦と言われている。
リスクを軽減化するために買い取りを避け、IBM PCの出荷台数に対して使用料を支払うというライセンス契約をしたこと、そしてマイクロソフトから各メーカーへの自由なOEM供給を認めた事が、後のマイクロソフトの躍進の原動力と言え、また見方を変えれば、最終的に「軒先を貸して母屋を取られた」IBMの大失策であるとも言えるが、MS-DOS(およびPC DOS)の普及(デファクトスタンダード化)を決定づけたとも言える。
なお「MS-DOSエンサイクロペディア」によると、IBM以外の各メーカーへのOEM供給版に自社の商標(MS)をつけ、MS-DOSとしたのは、各OEM先が勝手な名前をつけていたため、混乱を避けるために整理したものとされている。これは、IBM以外への初期のOEM供給が、Zenith DOS(ZDOS)などOEM先の名称で販売され、その後のバージョン2で「MS-DOS」名称が初めて登場した事を指していると思われる。
なお、富士通FM TOWNSのTownsOSや、各種の制御機器など、内部的にMS-DOSがOEM提供されている場合も多い。この場合はMS-DOS名称はユーザーに見えない場合が多い。
DOSと名付けられているように、汎用コンピュータなどのOSとは違い、主にディスクの管理を行うシングルタスクOSであった。マルチタスク機能・メモリ保護機能などは、OS内部には持っていなかった。また、グラフィック画面やサウンドの操作・ネットワーク機能などは、アプリケーションが直接I/Oを操作するか、デバイスドライバやMicrosoft Windowsなどで提供されていた。
ファイルの管理は、FATとクラスタにより構成され、ファイル名は8.3形式(8文字までのベース名と3文字までの拡張子の合計11文字まで(拡張子の前の「.」は数えない))で表す。アルファベットの大文字と小文字は区別しない(全て大文字と見なされる)。さらにバージョン2以降では、ディレクトリやファイル属性の与奪が使用できた。
起動順序はバージョンによって若干違うが、概ね以下の通り。
#コンピュータのBIOSやディスクのマスターブートレコードからディスクのセクタ0にあるブートセクタを読み込んで実行。 #IO.SYSを起動し、その後MSDOS.SYSに制御を移行する。 #CONFIG.SYSが起動ドライブのルートディレクトリにあれば、記述されたデバイスドライバを読みこむ。 #バッチ処理のためのコマンドインタプリタでもある標準シェルCOMMAND.COMを起動する。#AUTOEXEC.BATが起動ドライブのルートディレクトリにあれば、その内容を実行し、環境変数の設定や起動時に実行すべきコマンド等の呼び出し、場合によってはアプリケーションの起動なども行う。
COMMAND.COMでは、各ドライブをA:から最大Z:(これは環境変数LASTDRIVEで変更可)までのドライブレターで管理し、内部コマンドではファイル・ディレクトリ一覧の参照、ファイルとディレクトリの作成・コピー・名前変更、コンピュータの時刻や環境変数およびパスの設定参照などができるほか、外部コマンドやアプリケーションなどの実行形式のファイルの起動が行えた。またVer.2以降ではUNIXを意識したリダイレクトやパイプなども利用できたが、MS-DOS上のパイプやリダイレクトはいずれもテンポラリファイルを介した擬似的な実装に留まっていた。
MS-DOSにおける実行ファイルの形式には、現在のUNIX系環境で言うシェルスクリプトに類似した、コマンドのバッチ処理を記述するBATファイルと、CPUが直接実行するバイナリファイルに大別することができる。
このうちバイナリファイルには、単一のセグメントを使うCOM形式、各セグメントが異なるアドレスに設定される場合のEXE形式、さらにデバイスドライバとしてSYS形式が存在し、それぞれ同名の拡張子を持つ。
COM形式の実行ファイルは、バイナリ読み込み時に設定されるコード・データ・スタックの各セグメントが同一アドレスに設定され、プログラム内部でセグメントを操作しない場合は単一セグメント、最大64KBのメモリ空間を操作する。CP/M80用に書かれた8080用のアセンブリ言語のソースコードを8086へコンバートした場合を想定したメモリモデルであるが、.COM形式のバイナリであってもプログラム側で適切にセグメントを操作することで64KB以上の空間へのアクセスが可能である。
このうち.SYS形式のバイナリは、原則的に起動時に一度だけ実行されるCONFIG.SYSに記述する以外の方法では直接読み込むことができない。ただし、NECのPC-9800シリーズ版の一部からADDDRV.EXEと登録を記述したファイルの組み合わせにより登録し、DELDRV.EXEで外せるようになった(キャラクタデバイスのみであり、CONFIG.SYSで一度登録したデバイスドライバは外せない。IBM PC用では何種類かサードパーティで同様のプログラムが作成されている)。
システムコールは、通常、INT21hにより呼び出されるが、8080やZ80などの8ビットのコンピュータではメジャーな存在だったCP/Mとの互換性、特に8080用にアセンブリ言語で書かれたソースコードを8086にコンバートして用いる場合を想定し、call 5でも利用可能としてCP/M 80からの移行を促した。
日本語入力用のFEPなどの常駐型のデバイスドライバを使用すると一度に使用できるユーザーメモリはさらに減少するため、ユーザーはEMSやXMS、HMAやUMBなどの拡張メモリの管理機能を利用して、辞書や常駐部やMS-DOSシステムの一部をそれらへ配置し、コンベンショナルメモリの圧迫を少しでも避けることが重視されるようになった。
これらのメモリへの配分設定はCONFIG.SYSやAUTOEXEC.BATを記述することで行い、事実上ユーザーに一任されていた。
バージョン3までは、これらの設定を行うためにはサードパーティー製のメモリドライバ等を使用する必要があったが、バージョン5では標準機能としてOSに組み込み、メモリドライバやデバイスドライバも付属するようになった。またこれらの環境設定を半自動的に行う設定アプリケーションも添付された。
メモリドライバや各種デバイスドライバには組み込み用のバッチやスクリプト、設定アプリケーション等が整備され、「とりあえず動く」という状態を作るだけであればエンドユーザーがこれらを直接操作する必要はほぼ無かったが、千差万別なユーザーの環境にこれらが対応することもまた困難であり、ひとたびイレギュラーが発生した場合、それらのお仕着せの環境に頼り切ったユーザーには事態収集の敷居が高かったのも事実である。また「とりあえず」に飽き足らず、無駄を省き最適な設定をするためには、知見と試行錯誤が要求されるある種の職人芸的な資質が要求されたため、これらの事情が「MS-DOSの環境設定は非人間的で困難なものであった」とする後世の評価を招く原因ともなった。
Windows 9x系のOSは、OSとしてはWindowsという形で提供されているが、実際には、MS-DOSの上でGUIの処理を行なう形で動いていた(ただし、Windowsが使用するMS-DOSシステムコールはごく一部に限られる)。こちらではVFATなどによりファイル管理方法が拡張されている。なおWindows本体を起動していない場合は、VFAT上のロングファイルネームでも、8文字+拡張子3文字のショートファイルネーム形式のファイル名で表示された。
| バージョン||出荷開始||IBM||マイクロソフト||備考 | ||||
|---|---|---|---|---|
| 1 | 1981年 | PC DOS 1.0 | MS-DOS 1.25 | IBM PC用に登場。1.25よりマイクロソフトがIBM以外にOEM供給を開始。 |
| 2 | 1983年 | PC DOS 2.0 | MS-DOS 2.0 | PC/XT用に登場。階層ディレクトリ。日本でPC-8801、PC-9801用の日本語MS-DOSを出荷。 |
| 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版が名称再変更。主に付属ユーティリティの違い。MS-DOSは単体販売の最終版。同時期にNovell DOS(DR DOS) 7出荷。 |
| 7 | 1995年 | (なし) | (MS-DOS 7) | Windows 95/98の内部バージョン。PC DOS 7とは全く別物。 |
| 1995年 | PC DOS 7 | (なし) | スクリプト言語のREXXをサポート。MS-DOS 7とは全く別物。 | |
| 8 | 2000年 | (なし) | (MS-DOS 8) | Windows Meの内部バージョン。 |
| 2000 | 1998年 | PC DOS 2000 | (なし) | ユーロ記号、2000年問題対応など。販売中。 |
CP/M程度の機能しか持たない、基本的なディスクオペレーティングシステム。ファイルシステムは、後のバージョンで実装された階層構造を持っておらず、ディレクトリが利用できない。CP/Mとの大きな違いは、汎用化の為に入出力デバイスの機種依存が無くなっている点であった。その為、ハードウェアにROMとして内蔵されたBIOSを通して入出力を行うようになっていた。なお、この仕組みは、互換BIOSを利用したPC互換機を生み出す要因ともなった。
このバージョンが使われていた頃は、8086またはその互換プロセッサ(8088等)を利用したパーソナルコンピュータ市場もそれほど大きくなかった為、出荷本数の大半はIBM PCにバンドルされた分だった。当初IBM PC/AT用に発売。主としてネットワーク対応と大容量HDD対応の為の16ビットFATが追加された。もっとも、管理できるセクタ数が65535個であったため、32MB以上のパーティションを切ることは出来なかった。本来80286プロセッサを搭載したPC/AT向けだったが、互換性確保目的で80286のプロテクトモードを利用した新機軸は敢えて盛り込まれなかったため、サードパーティー製の各種ユーティリティによって機能拡張するユーザが多かった。
ベンダーによる独自拡張などで方言が多く、バージョン番号の体系も大きく乱れている。必要十分なスペックと安定性が評価され、またバージョン4以降の仕様変更の影響を避けるために、一部ではかなりの長期間に亙って愛用されていた。
バージョン3.20から派生し、8086上で限定的な擬似マルチタスク環境を実現したもの。MSが開発したが不十分であるとしてIBMには採用されず、アプリコットコンピューターズ(英) にネットワークOSとしてOEMされた他、僅かの用途に留まり絶滅亜種になってしまった。非同期I/O対応やバックグラウンドタスク規約など、資産の一部はWindows 2.xに流用され、また80286プロテクトモードを前提に並行開発されていたもの(当初バージョン5と呼ばれていた)は、IBM主導で大幅に改訂され、世に出た時にはOS/2バージョン1.0になっていた。
IBM主導で開発されたバージョン。OS/2色が濃くなり、IFSやラージバッファ等の追加のみならず、管理セクタ数が増やされた事に伴いHDDは理論上最大2GBの領域を扱うことができるようになった(実際にはBIOSの制限があった)他、添付ユーティリティを利用すると最大512MBのパーティションまで作成可能になったが、その反面余りに多くの変更がファイルシステムに加えられたため、非互換性の問題も生じてしまった。
情報が全部公開されていなかったものの、2バイトコードによるユニバーサルランゲージ対応が内部的に完了したのも本バージョンからである。従来のバンクメモリに代るEMSの標準サポートによって、扱えるメモリ領域が1MB以上に拡張された。
互換OSのDR DOSで好評を博していた「GEM」に類似のGUI環境、「DOSシェル」が添付された。これは、マウスオペレーションやグラフィカルなメニューによる直感的な操作が行えるもので、依然シングルタスクながらも複数のアプリケーションを重複起動して切替動作させることができ(いわゆるタスクスイッチャ)、GUIもキャラクタベースによる簡易なものと、グラフィック画面とテキスト画面を組み合わせたもの(表示が美しく、ポインタの動作もスムーズになる)とを選択できた。DOSSHELLのデザインはIBM SAA CUAに準拠していた。
本バージョンは、性急な複雑化に伴い非常に多くのバグが存在し、またOS自体が消費するメモリが過大だったため、メーカーによってDOS 3.30を拡張したDOS 3.31を採用するなどして、4.0を採用しないところが有った。コンベンショナルメモリの空き容量が日本語処理アプリケーションの稼動に直接影響する日本では、大手メーカーであるNEC、富士通などが3.3系の拡張版のみを販売していたため、ユーザー数はそれほど多くはなかった。EPSONからは、PC-9801互換機用としてリリースされていた。
再びマイクロソフト主導で開発された。バージョン4で付加された中途半端なユーティリティの多くが削除された一方、80386, i486等に備わる仮想86モードの活用とWindows 3.0との親和性を主眼に、ほぼ全面的に再コードされたため、パソコン通信等を介した約1年に亙る大規模なベータテストを経て市販開始された。IBMの新製品にバンドルされず、巷に溢れるPC/AT互換機へのフル対応を始めから唱いインストーラ込みで発売された、最初のMS-DOS(IBM DOS、PC DOS)でもある。
メモリ消費は少ないものの大容量ドライブが扱えないバージョン3、その逆で大容量ドライブが使えるがメモリ消費が大きいバージョン4というジレンマを抱えていたが、限りあるメモリ領域の消費を抑える機能を追加することで、それまでの問題を払拭するに至った。このバージョンによりDOSはほぼ完成を見たが、8086〜80286とその互換CPU上の動作には制約が強まり、結局のところ巧妙なアップグレード戦略の下でハードウエアの買い替え需要が喚起された。
XMSによってDOS本体の一部をHMAに、デバイスドライバやアプリケーションの一部をUMBに待避させることが可能で、コンベンショナルメモリを大きく取れるようになった。またタスクスイッチ規約が明確に定義され、DOSシェルの機能拡張(Windows 3.0のサブセット化)が図られた。各種LAN対応も進められ、コマンドにヘルプが付されるなど、利便性も向上した。
テキストエディタは、過去のバージョンに標準添付されていたラインエディタ「EDLIN」に加え、スクリーンエディタが添付された(PC/AT互換機用・EPSON PC版は「EDIT」だったが、NEC版は「SEDIT」(ちなみに、こちらはメガソフト社のMIFESのサブセット版)、富士通版(FMRシリーズ、FM TOWNS用)は「EDIAS」と、それぞれ各社ばらばらだった)。開発環境として、コマンドラインエディタに加え、独自に拡張された構造化BASICコンパイラQuickBASICが標準添付されていた。
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シェルは廃止された(別途サプリメンタルディスクを入手する必要があった。NEC版には従来どおり付属)。テキストエディタも共通のEDITとなった(NEC版のみ従来どおりSEDITが付属)。
Windows 95とWindows 98に搭載されているバージョン。従来のMSDOS.SYSは、IO.SYSにその機能を統合されて設定ファイルとなり、IO.SYSが起動する標準シェルがCOMMAND.COMではなくwin.comであるなど、MS-DOSを極力見せない工夫がされていた。しかし、Windows起動中にテキストモードのカーソルが見える。Windows 95のOSR2以降では、FAT32にも対応しているバージョン7.1である。
1995年リリース。
開発環境として「REXX」を標準添付。MS-DOS 7(マイクロソフト版)とは異なり、PC DOS 7(IBM版)ではGUIとの融合はされなかったが、発売開始当時インターネットの普及が進んでいたため、PC DOS用Webブラウザ「WebBoy」が発売された。
Windows Meに搭載されているバージョン。IO.SYSにHIMEM.SYSおよびEMM386.EXEの機能を統合した最終版であり、もはやWindowsのローダでしかなくなった。Windows XP以降で起動ディスクを作成すると、このMS-DOSが書き込まれる。
またPC-9800シリーズ全盛期には、ゲームソフトの組み込み用として、下位互換(INT21系のサブセットのみ互換)の「MEG-DOS」などがあった。アリスソフトの「ALICE-DOS」は、もともとゲームソフト本体はMS-DOSをインストールしたハードディスクドライブ上で動かすことを前提とし、あくまでもフロッピー単体でも起動するようサポート用に作られたものであったため、バッチファイルを動かす機能も有していた。