

DOS(/ dɒs /、/ dɔːs / )は、 IBM PC互換機用のディスクベースのオペレーティングシステムのファミリーです。[ 1 ] DOSファミリーは主にIBM PC DOSと、そのブランド変更版であるMicrosoftのMS-DOSで構成され、どちらも1981年に導入されました。その後、他のメーカーから互換システムが発売されました。DR -DOS(1988年)、ROM-DOS(1989年)、PTS-DOS(1993年)、FreeDOS(1994年)などです。1981年から1995年の間、MS-DOSはIBM PC互換機市場を独占していました。
DOSという名称はMS-DOSとその互換オペレーティングシステムを指すようになったが、実際にはプラットフォームに依存しないディスクオペレーティングシステムの略称であり[ 2 ]、 IBM PCよりも古くから使用されている。1966年のメインフレームDOS/360に始まり、数十ものオペレーティングシステムでもこの略称が使用されている。他にはApple DOS、Apple ProDOS、Atari DOS、Commodore DOS、TRSDOS、AmigaDOSなどがある。

IBM PC DOS(および別売のMS-DOS)とその前身である86-DOSは、Intel 8086 16ビットプロセッサ上で動作しました。86-DOSは、 Digital ResearchのCP/M ( 8ビットIntel 8080およびZilog Z80マイクロコンピュータ向けの主流ディスクオペレーティングシステム)に類似するように開発され、CP/MアプリケーションのMS-DOSへの移植を容易にしました。

IBMがIntel 8088マイクロプロセッサを搭載したIBM PCを発表した際、オペレーティングシステムが必要でした。会長のジョン・オペルは、ユナイテッド・ウェイ全国理事会の執行委員会メンバーであるメアリー・マクスウェル・ゲイツと話し合い、ゲイツは息子のビル・ゲイツに8088互換のCP/Mの開発を依頼しました。[ 3 ]その後、IBMはデジタル・リサーチ社に派遣され、交渉が行われました。しかし、CP/Mの使用に関する当初の交渉は決裂しました。デジタル・リサーチ社はCP/Mをロイヤルティベースで販売することを希望したのに対し、IBMは単一ライセンスを希望し、名称を「PC DOS」に変更することを希望しました。デジタル・リサーチ社の創設者ゲイリー・キルドールはこれを拒否し、IBMは撤退しました。[ 4 ] [ 5 ]

IBMは再びビル・ゲイツにアプローチした。ゲイツは次にシアトル・コンピュータ・プロダクツにアプローチした。そこでプログラマーのティム・パターソンは、 S-100バス用のSCPの新しい16ビットIntel 8086 CPUカードをテストするための社内製品として、 CP/M-80の派生版を開発していた。このシステムは当初QDOS (Quick and Dirty Operating System)と名付けられ、 86-DOSとして市販された。マイクロソフトは86-DOSを、伝えられるところによると5万ドルで購入した。これが1981年に発表されたMicrosoft Disk Operating System、MS-DOSとなった。1年以内にマイクロソフトは70社を超える他の企業にMS-DOSのライセンスを供与し、[ 6 ]各社は自社のハードウェアにオペレーティングシステムを供給し、時にはゼニス・データ・システムズのZ-DOSのように独自の名前で供給した。[ 7 ]マイクロソフトは後にIBM派生版を除いてMS-DOS名の使用を義務付けた。 IBMはIBM PC向けに自社版PC DOSの開発を続けた。デジタル・リサーチ社は、CP/Mに類似したオペレーティングシステム(IBMがCP/Mに使用したのと同じ名称で)がIBMによって販売されていることを知り、法的措置を取ると警告した。IBMはこれに対し、PCユーザーにPC DOSか、キルドールの8086版であるCP/M-86のいずれかを選択させるという合意を提示した。しかし、CP/MはPC DOSよりも200ドル高価で、販売は低調だった。CP/Mは衰退し、MS-DOSとPC DOSがPCおよびPC互換機向けのオペレーティングシステムとして販売されるようになった。[ 4 ]
マイクロソフトは当初、MS-DOSをOEM(相手先ブランド製造業者)のみに販売していました。その主な理由は、初期のPCのすべてがIBM PCと100%互換だったわけではないことでした。DOSは、システム固有のデバイスドライバコード( IO.SYS)とDOSカーネル(MSDOS.SYS )が分離した構造になっていました。マイクロソフトはOEMアダプテーションキット(OAK)を提供し、OEMがデバイスドライバコードを自社のシステムに合わせてカスタマイズできるようにしました。1990年代初頭までに、ほとんどのPCがIBM PC標準に準拠するようになったため、マイクロソフトはMS-DOS 5.0からMS-DOSの小売版の販売を開始しました。
1980年代半ば、マイクロソフトはマルチタスク版のDOSを開発した。[ 8 ] [ 9 ]このバージョンのDOSはICL向けに開発され、ヨーロッパの複数の企業にライセンス供与されたため、一般的に「ヨーロッパ版MS-DOS 4」と呼ばれている。このバージョンのDOSは、プリエンプティブマルチタスク、共有メモリ、デバイスヘルパーサービス、およびNew Executable (「NE」)形式の実行ファイルをサポートする。これらの機能はDOSの後の版では採用されなかったが、 OS/2 1.0カーネルの基礎として活用された。このバージョンのDOSは、IBMがDOS 3.3をベースに開発し、広くリリースされたPC DOS 4.0とは異なる。

Digital Research 社は CP/M-86 で失った市場を取り戻そうと、当初はConcurrent DOS、FlexOS、DOS Plus (いずれも MS-DOS と CP/M-86 ソフトウェアの両方と互換性あり) で、後にMultiuser DOS (MS-DOS と CP/M-86 ソフトウェアの両方と互換性あり) とDR DOS (MS-DOS ソフトウェアと互換性あり) で試みました。 Digital Research 社はNovell 社に買収され、 DR DOS はPalmDOSとNovell DOSになりました。その後、 Caldera ( OpenDOSおよびDR-DOS 7.02 / 7.03という名前で)、Lineo、DeviceLogics の傘下になりました。
ゴードン・レットウィンは1995年に、「DOSは、私たちが最初に開発した当時、IBMを満足させて私たちの言語を買ってもらうための、一度きりの使い捨て製品だった」と記している。[ 10 ]マイクロソフトは、 Xenix導入までの暫定的な解決策になると予想していた。同社はMS-DOSを時間をかけて改良し、モトローラ68000、ザイログZ-8000、LSI-11でも動作するシングルユーザー版Xenix (XEDOS)とほとんど区別がつかないようにする計画だった。Xenixは1983年にBYTE誌で「未来のマルチユーザー版MS-DOS」と評されたXenixと上位互換性を持つ予定だった。 [ 11 ] [ 12 ]

しかし、IBMはDOSを置き換えるつもりはなかった。[ 13 ] AT&TがUnixの販売を開始した後、MicrosoftとIBMは代替としてOS/2の開発を開始した。 [ 10 ]両社はその後、DOSの後継オペレーティングシステムであるOS/2とWindowsをめぐって意見の相違が続いた。[ 14 ]その結果、両社はDOSシステムの開発を分割した。[ 15 ] MS-DOSの最後の市販バージョンはMS-DOS 6.22で、その後、MS-DOSはWindows 95、98、Meの一部となった。PC DOSの最後の市販バージョンはPC DOS 2000(PC DOS 7リビジョン1とも呼ばれる)だったが、IBMは後にOEMおよび社内使用のためにPC DOS 7.10を開発した。
FreeDOSプロジェクトは、マイクロソフトがMS-DOSの販売とサポートを終了すると発表した1994年6月26日に始まりました。ジム・ホールは、オープンソースの代替開発を提案するマニフェストを発表しました。数週間のうちに、パット・ヴィラニやティム・ノーマンを含む他のプログラマーがプロジェクトに参加しました。カーネル、COMMAND.COMコマンドラインインタープリター(シェル)、そしてコアユーティリティは、彼らが書いたコードや入手可能なコードを集めて作成されました。2006年9月3日にFreeDOS 1.0がリリースされる前に、FreeDOSの公式プレリリース版がいくつかリリースされました。FreeDOSはGNU一般公衆利用許諾書(GPL)に基づいて提供されており、ライセンス料やロイヤリティは不要です。[ 16 ] [ 17 ]
Windowsの初期のバージョンはMS-DOS上で動作した。[ 18 ] 1990年代初頭までに、Windowsのグラフィカルシェルは新しいシステムで頻繁に使用されるようになった。1995年に、Windows 95が別個のDOSライセンスを必要としないスタンドアロンのオペレーティングシステムとしてバンドルされた。Windows 95(およびその後続いたWindows 98とME)はデフォルトのOSカーネルとして引き継いだが、MS-DOSコンポーネントは互換性のために残された。Windows 95と98では、MEではなく、Windowsを起動せずにMS-DOSコンポーネントを実行できた。[ 19 ] [ 20 ] [ 21 ] Windowsを使用するためにDOSが不要になったため、大多数のユーザーは直接DOSを使用しなくなった。

2025年現在、利用可能な互換システムはFreeDOS、ROM-DOS、PTS-DOS、RxDOS [ 22 ]、REAL/32です。DellやHPなどの一部のコンピュータメーカーは、 OEMオペレーティングシステムとしてFreeDOSを搭載したコンピュータを販売しており、[ 23 ] [ 24 ] 、ハードウェアに近いため、一部の開発者やコンピュータエンジニアは依然としてそれを使用しています。
DOSはハードウェアに直接アクセスする構造のため、組み込み機器でも使用可能です。DR-DOSの最終バージョンも依然としてこの市場を対象としています。[ 25 ] ROM-DOSは、 Canon PowerShot Pro 70のオペレーティングシステムとして使用されました。[ 26 ]
Linuxでは、ネイティブに近い速度で DOS プログラムを実行するLinux ネイティブ仮想マシンであるDOSEMUを実行できます。他にもDOSBoxなど、Unix およびMicrosoft Windowsの様々なバージョンで DOS を実行するためのエミュレーターが多数あります。[ 27 ] [ 28 ] DOSBox は、最新のオペレーティングシステムでレガシーゲーム (例: King's Quest、Doom ) をプレイできるように設計されました。 [ 18 ] [ 27 ] DOSBox にはエミュレータに強く結び付けられた独自の DOS 実装が含まれており、実際のハードウェアでは実行できませんが、必要に応じて MS-DOS、FreeDOS、またはその他の DOS オペレーティングシステムを起動することもできます。
MS-DOS および IBM PC DOS 関連のオペレーティングシステムは、一般にIntel x86または互換CPUを使用したマシン、主にIBM PC 互換機に関連付けられています。マシン依存バージョンの MS-DOS は、多くの非 IBM 互換のx86ベースマシン用に作成されており、 Microsoftディストリビューションを製造元の名前で再ラベルしたものから、非 IBM PC 互換のハードウェアで動作するように特別に設計されたバージョンまで様々でした。アプリケーションプログラムが直接ハードウェアにアクセスするのではなく DOS API を使用している限り、IBM PC 互換機でも非互換マシンでも実行できました。オリジナルのFreeDOSカーネルであるDOS-Cは、1990 年代初頭に Motorola 68000 シリーズの CPU 用にDOS/NTから派生しました。これらのシステムは DOS アーキテクチャに大まかに似ていますが、これらの非 x86 CPU の命令セットに互換性がないため、アプリケーションはバイナリ互換ではありませんでした。ただし、高級言語で作成されたアプリケーションは簡単に移植できます。
DOSはシングルユーザー、シングルタスクのオペレーティングシステムであり、基本的なカーネル機能は非リエントラントです。つまり、一度に1つのプログラムのみがこれらの機能を使用でき、DOS自体には複数のプログラムを同時に実行するための機能はありません。DOSカーネルは、文字入出力、ファイル管理、メモリ管理、プログラムのロードと終了など、 プログラムのための様々な機能(アプリケーションプログラムインターフェース)を提供します。
DOSは、バッチファイル(ファイル名拡張子は )を介してシェルスクリプトを実行する機能を提供しています。バッチファイルの各行は、実行されるプログラムとして解釈されます。バッチファイルでは、 GOTOや条件文などの内部コマンドも使用できます。[ 29 ].BAT
オペレーティングシステムは、文字ベースのアプリケーション開発を可能にするアプリケーションプログラミングインターフェースを提供していますが、グラフィックカード、プリンター、マウスなどのハードウェアのほとんどにはアクセスできません。そのため、プログラマーはハードウェアに直接アクセスする必要があり、通常、各アプリケーションは各ハードウェア周辺機器ごとに独自のデバイスドライバーセットを用意することになります。ハードウェアメーカーは、一般的なアプリケーション向けのデバイスドライバーが確実に利用できるように、仕様を公開していました。[ 30 ]
ブートセクタによってロードされるDOSシステムファイルは連続しており、最初の2つのディレクトリエントリである必要があります。[ 35 ]そのため、このファイルの削除と追加を行うと、メディアがブートできなくなる可能性があります。ただし、シェルを任意に置き換えることは可能であり、この方法を使用して専用アプリケーションの実行を高速化できます。この制限はDR DOSのどのバージョンにも適用されません。DR DOSでは、システムファイルはルートディレクトリのどこにでも配置でき、連続している必要はありません。したがって、ブートセクタがDR DOSと互換性があれば、システムファイルをディスクにコピーするだけで済みます。
PC DOSおよびDR DOS 5.0以降では、DOSシステムファイルはIO.SYSではなくIBMBIO.COM、MSDOS.SYSではなくIBMDOS.COMという名前になっています。DR DOSの旧バージョンでは、DRBIOS.SYSとDRBDOS.SYSという名前が使用されていました。
MS-DOS 7.0以降、バイナリシステムファイルIO.SYSとMSDOS.SYSは単一のIO.SYSファイルに統合され、MSDOS.SYSはCONFIG.SYSやAUTOEXEC.BATと同様の設定ファイルになりました。MSDOS.SYSのBootGUIディレクティブが に設定されている場合0、ブートプロセスはWIN.COMを自動的に実行するのではなく、コマンドプロセッサ(通常はCOMMAND.COM)がロードされた状態で停止します。
DOSは、 8.3形式のファイル名をサポートするファイルシステムを使用しています。ファイル名は8文字、拡張子は3文字です。DOS 2以降では、階層ディレクトリがサポートされています。各ディレクトリ名も8.3形式ですが、DOSが内部で管理する現在のディレクトリ構造(CDS)テーブルのため、ディレクトリパスの最大長は64文字です。ドライブ名を含め、DOSがサポートする完全修飾ファイル名の最大長は80文字で、drive:\path\filename.ext という形式にNULLバイトが続きます。
DOSはファイルアロケーションテーブル(FAT)ファイルシステムを使用しています。これは当初、ドライブあたり最大4078個のクラスターをサポートするFAT12でした。DOS 3.0では、16ビットのアロケーションエントリを使用し、ドライブあたり最大65518個のクラスターをサポートするFAT16のサポートが追加されました。Compaq MS-DOS 3.31では、 32MiBのドライブ制限がなくなり、最大512MiBをサポートできるFAT16Bのサポートが追加されました。最後に、MS-DOS 7.1(Windows 9xのDOSコンポーネント)では、32ビットのアロケーションエントリを使用し、最大137GB(127GiB)以上のハードドライブをサポートできるFAT32のサポートが追加されました。
DOS 3.1以降、ファイルリダイレクタのサポートがDOSに追加されました。これは当初ネットワークのサポートに使用されていましたが、後にMSCDEXを使用したCD-ROMドライブのサポートにも使用されました。IBM PC DOS 4.0にも初期インストール可能ファイルシステム(IFS)のサポートがありましたが、これは使用されなかったため、DOS 5.0では削除されました。DOSは、CONFIG.SYSからロードされるブロックデバイス(「ディスクドライブ」デバイス)もサポートしており、DOSファイルシステムでネットワークデバイスのサポートに使用できました。
DOSでは、ドライブは識別文字で参照されます。標準的な方法では、「A」と「B」はフロッピードライブ用に予約されています。フロッピードライブが1台しかないシステムでは、DOSは両方のドライブ文字を割り当てます。これにより、プログラムが交互にディスク間をアクセスするため、ユーザーはディスクを交換する必要があります。これにより、フロッピーディスクからフロッピーディスクへのコピーや、あるフロッピーディスクでプログラムを実行しながら別のフロッピーディスク上のデータにアクセスするといった操作が容易になります。ハードドライブには当初、「C」と「D」という文字が割り当てられていました。DOSは、ドライブごとに1つのアクティブパーティションしかサポートできませんでした。より多くのハードドライブがサポートされるようになると、この方法は、まず各ドライブのアクティブなプライマリパーティションにドライブ文字を割り当て、次にドライブ全体を2回目のパスで拡張パーティション内の論理ドライブにドライブ文字を割り当て、3回目のパスでその他の非アクティブなプライマリパーティションに名前を付けるという方法に進化しました(そのような追加パーティションが存在し、DOSがサポートするファイルシステムが含まれている場合)。最後に、DOSは光ディスクドライブ、RAMディスク、その他のハードウェアにドライブ文字を割り当てます。文字の割り当ては通常、ドライバがロードされた順に行われますが、ドライバはDOSに別の文字を割り当てるように指示することができます。たとえば、ネットワークドライブのドライバは通常、アルファベットの末尾に近い文字を割り当てます。[ 36 ]
DOS アプリケーションはこれらのドライブ文字を直接使用するため ( Unix 系システムの /dev ディレクトリとは異なります)、ドライブ文字を必要とする新しいハードウェアを追加すると、アプリケーションの動作が混乱する可能性があります。一例として、既存のハード ドライブの拡張パーティションに論理ドライブが含まれている場合に、プライマリ パーティションを持つ新しいハード ドライブを追加すると、新しいドライブには、以前に拡張パーティションの論理ドライブの 1 つに割り当てられていた文字が割り当てられます。さらに、拡張パーティションに論理ドライブしかない新しいハード ドライブを追加した場合でも、RAM ディスクと光学ドライブのドライブ文字が混乱します。この問題は、Microsoft の DOS ベースの Windows 9x バージョンから、ユーザーが変更するまで既存のドライブのドライブ文字を保持する NT ラインに基づくバージョンに置き換えられるまで解消されませんでした。[ 36 ] DOS では、SUBST ドライブを定義して DOS プログラムをこの論理ドライブにインストールすることで、この問題を回避できます。これにより、アプリケーションの起動時にバッチ ジョブでこのドライブの割り当てが変更されます。Concurrent DOSの一部のバージョン、およびMultiuser DOS、System Manager、およびREAL/32では、アプリケーションの起動時に、 予約済みのドライブ文字 L: が対応するロード ドライブに自動的に割り当てられます。

DOSには予約済みのデバイス名があり、拡張子に関わらずファイル名として使用することはできません。これは、組み込みのキャラクタデバイスによって占有されているためです。これらの制限はWindowsのいくつかのバージョンにも影響を及ぼし、場合によってはクラッシュやセキュリティ上の脆弱性を引き起こすことがあります。[ 37 ]
予約名は次のとおりです。
COM1COM9(シリアル通信ポート)を介してLPT1LPT9(ラインプリンタ用パラレルポート経由)CON(「コンソール」は入力ストリームではキーボード、出力ストリームではディスプレイを表します)AUX(「補助」は最初に接続されたCOMポートを表す)[ 38 ]PRN(「プリンター」は最初に接続されたLPTポートを表す)[ 38 ]NUL(ヌルデバイス)86-DOS 1.10およびPC DOS 1.0で追加されたWindows 95およびWindows 98では、予約名(CON/CON、AUX/AUX、PRN/PRN など)の場所を入力するとオペレーティングシステムがクラッシュしますが、Microsoft はこの問題に対するセキュリティ修正を提供しています。Windows XPでは、予約名を使用しているファイルまたはフォルダの名前は、通知やエラーメッセージを表示することなく、自動的に以前の名前に戻ります。Windows Vista以降では、ファイルまたはフォルダに予約名を使用しようとすると、「指定されたデバイス名は無効です」というエラーメッセージが表示されます。
これらの名前 (NUL を除く) は、それ以来ずっと、MS-DOS、PC DOS、DR-DOS のすべてのバージョンでサポートされ続けています。[ 39 ]LSTは MS-DOS 1.25 の一部の OEM バージョンでも使用できましたが、MS-DOS 1.25 の他の OEM バージョンでは、PC DOS で導入されたように、 LPT1(最初のライン プリンタ) とCOM1(最初のシリアル通信デバイス) が既に使用されていました。 および に加えてLPT1、ヒューレットLPT2パッカードの HP Portable Plus向けOEM バージョンのMS-DOS 2.11では、の別名として も、の別名としてサポートされていました。[ 40 ] [ 41 ]また、プロッタもサポートされていました。[ 40 ] [ 41 ]その他、、、および( MS-DOS 2.11 のいくつかのバージョンではまだ名前が付けられている[ 42 ] [ 40 ] [ 41 ] ) クロックデバイスは DOS 2.0 で導入され、 とはDOS 3.3 で追加されました。[ 39 ]マルチタスクのMS-DOS 4だけがとをサポートしています。DR DOS 5.0以降およびマルチユーザー DOS は、動的なアイドル検出のためのデバイスをサポートして、電力を節約し、マルチタスクを向上します。は、DR-DOS 7.02 以降の一部のバージョンでサポートされている 4 行目のプリンター用のオプションの組み込みドライバーです。 は、MS-DOS 7.0–8.0 で リアルモードPnPマネージャーを構成します。COM1COM3LSTLPT282164ACOM2PLTCOM2LPT2LPT3CLOCK$CLOCKCOM3COM4KEYBD$SCREEN$$IDLE$LPT4CONFIG$
AUX通常、デフォルトはCOM1、、およびPRN(LPT1)LSTです。[ 39 ]しかし、DOSの一部のバージョンでは、これらのデフォルトを変更して、他のシリアルデバイスまたはパラレルデバイスを指すようにすることができます。[ 40 ] [ 41 ] [ 43 ]デバイスPLT(一部のHP OEMバージョンのMS-DOSにのみ存在)も再構成可能でした。[ 40 ] [ 41 ]
コロン(:)で終わるファイル名は、慣例的にデバイス名を示しますが、コロンは実際には組み込みデバイスドライバの名前の一部ではありません。コロンを入力する必要がない場合もあります。例えば、 NUL:
ECHOこれは何も達成しません> NUL ディスクセクター内のディレクトリデータ構造を直接編集するなど、これらの予約済みデバイス名を使用してファイルやディレクトリを作成することは依然として可能です。ファイル名をスペースで始めるなどのこのような命名は、ウイルスやハッキングプログラムによって、これらの場所へのアクセス方法を知らないユーザーからファイルを隠蔽するために利用されることがありました。
DOSはIntel 8088プロセッサ向けに設計されており、このプロセッサは最大1MiBのRAMにしか直接アクセスできません。[ 44 ] IBMとMicrosoftはどちらも、プログラムが利用できるメモリの最大量を640キビバイト(KiB)に設定し、残りの384KiBをビデオメモリ、一部のビデオおよびネットワーク周辺機器のアダプタの読み取り専用メモリ、およびシステムのBIOS用に予約しました。1985年までに、一部のDOSアプリケーションはすでにメモリの限界に達していましたが、マシンの仕様によっては、予約されたメモリの大部分は未使用のままでした。[ 45 ]
追加メモリへのアクセスを可能にする仕様が開発された。最初の仕様は拡張メモリ仕様(EMS) で、アドオンカード上のメモリに、予約済みの上位メモリ領域の 64 KiB ページフレームを介してアクセスできるように設計された。[ 46 ] 80386 以降のシステムでは、EMM386などの仮想 8086 モード(V86) メモリマネージャを使用して、アドオンカードを必要とせずに拡張メモリから拡張メモリを作成できた。[ 47 ] 2 番目の仕様は、 80286 以降のシステム用の拡張メモリ仕様(XMS) である。これは、拡張メモリとの間でデータのコピー、メモリの最初の 1 メガバイトのすぐ上にある65,520 バイトの上位メモリ領域[ 48 ]および上位メモリブロック領域へのアクセスを可能にした。一般的に、XMS のサポートはHIMEM.SYSまたは EMS もサポートするQEMMや386MAXなどの V86 モードのメモリマネージャによって提供された。[ 49 ]
DOS 5以降、[ 50 ] DOSはCONFIG.SYSのステートメントを介してカーネルコードとディスクバッファをHMAにロードすることで、HMAを直接利用できるようになりましたDOS=HIGH。DOS 5+では、CONFIG.SYSのステートメントを介して利用可能な上位メモリブロックを使用することもできますDOS=UMB。[ 51 ]
OS/2およびWindowsにおけるDOSエミュレーションは、ネイティブアプリケーションとほぼ同じ方法で動作します。すべてのドライブとサービスにアクセスでき、ホストのクリップボードサービスも利用できます。ファイルシステムなどのドライバはホストシステム内に存在するため、DOSエミュレーションはDOS API変換層のみを提供すればよく、この変換層はDOSコールをOS/2またはWindowsのシステムコールに変換します。この変換層は通常、BIOSコールの変換や、多くのDOSプログラムで一般的に使用される共通I/Oポートアクセスの仮想化も行います。
Windows 3.1および9xでは、DOS仮想マシンはWINOLDAPによって提供されます。WinOldApは、プログラムのPIFファイルとWindows起動時のシステム状態に基づいて仮想マシンを作成します。DOSグラフィックモード(文字とグラフィックの両方)をキャプチャし、ウィンドウ内で実行できます。DOSアプリケーションは、WinOldApで公開されている追加の呼び出しにアクセスすることでWindowsクリップボードを使用でき、WinOldApグラフィックを介してテキストを貼り付けることができます。
OS/2およびWindows NTでエミュレートされたDOSは、DOS 5に基づいています。デフォルトの設定(config.sysおよびautoexec.bat)はありますが、セッションごとに代替ファイルを使用することもできます。これらのファイルからドライバをロードしてホストシステムにアクセスすることも可能ですが、通常はサードパーティ製です。
OS/2 2.x以降では、DOSエミュレーションはDOSKRNLによって提供されます。これはIBMBIO.COMとIBMDOS.COMを統合したファイルであり、システムコールはOS/2ウィンドウサービスに渡されます。DOSプログラムは独自の環境で実行され、DOSユーティリティの大部分は\OS2ディレクトリ内のDOS/OS2アプリケーションによって提供されます。OS/2は、Windowsの修正版(Win-OS/2)を使用することでWindows 3.1アプリケーションを実行できます。この修正により、Windows 3.1プログラムをOS/2デスクトップ上でシームレスに実行できるようになり、DOSからWindowsを起動するのと同様にWinOS/2デスクトップを起動することもできます。
OS/2では「ドライブAからのDOS」(VMDISK)が利用可能です。これはMS-DOS 6.22やPC DOS 5.00のような本物のDOSです。DOSの起動用フロッピーディスクを作成し、OS/2からいくつかのドライバを追加して、特別なイメージを作成します。この方法で起動したDOSはシステムへのフルアクセスが可能ですが、ハードウェア用のドライバは独自に用意されます。このディスクを使用することで、OS/2ドライバが存在しないCD-ROMドライブにもアクセスできます。
1993 年以降の Windows NT ファミリのすべての 32 ビット (IA-32) エディションでは、仮想 DOS マシン(NTVDM)によって DOS エミュレーションが提供されています。64 ビット (IA-64 および x86-64) バージョンの Windows では NTVDM がサポートされていないため、16 ビット DOS アプリケーションを直接実行することはできません。これらのマシンで DOS プログラムを実行するには、DOSbox などのサードパーティ製エミュレーターを使用できます。
DOSシステムはコマンドラインインターフェースを使用します。プログラムは、コマンドプロンプトにファイル名を入力することで起動します。DOSシステムにはユーティリティプログラムが含まれており、プログラムに対応しない内部コマンドも提供しています。[ 52 ]
よりユーザーフレンドリーな環境を提供するために、多くのソフトウェアメーカーがWIMPインターフェースを備えたファイル管理プログラムを開発しました。Microsoft Windowsはその顕著な例で、最終的にMicrosoft Windows 9xは自己完結型のプログラムローダーとなり、DOSに取って代わり、最も多く使用されるPC互換プログラムローダーとなりました。テキストユーザーインターフェースプログラムには、 Norton Commander、DOS Navigator、Volkov Commander、Quarterdesk DESQview、Sidekickなどがありました。グラフィカルユーザーインターフェースプログラムには、Digital ResearchのGEM(元々はCP/M用に開発)やGEOSなどがありました。
最終的に、主要なDOSシステムのメーカーは独自の環境マネージャを組み込むようになりました。MS-DOS/IBM DOS 4にはDOS Shellが含まれていました。[ 53 ]翌年にリリースされたDR DOS 5.0にはGEMをベースにしたViewMAXが含まれていました。[ 54 ]
DOSはマルチタスクオペレーティングシステムではありませんが、プログラムをメモリ内に常駐させる「Terminate-and-Stay-resident(TSR)」機能を備えています。これらのプログラムは、システムタイマーやキーボード割り込みをフックすることで、バックグラウンドでタスクを実行したり、いつでも起動できるようにしたりすることができます。これにより、現在実行中のプログラムをプリエンプトし、プログラムごとにシンプルなマルチタスクを効果的に実装できます。DOSのPRINTコマンドは、バックグラウンド印刷スプールを実現するためにこの機能を利用しています。ポップアップ型の個人情報管理ツール(PIM)であるBorland Sidekickも、この技術を採用しています。
終了して常駐するプログラムは、デフォルトでは利用できない追加機能を提供するためにも使用されます。CEDやDOSKEYなどのプログラムは、COMMAND.COMで利用できる機能を超えたコマンドライン編集機能を提供します。Microsoft CD-ROM Extensions (MSCDEX)などのプログラムは、CD-ROMディスク上のファイルへのアクセスを提供します。
一部のTSRは、基本的なタスクスイッチングさえ実行できます。例えば、シェアウェアプログラムであるBack and Forth (1990) [ 55 ]には、現在実行中のプログラムの状態をディスクに保存し、別のプログラムをロードして切り替えるホットキーがあり、プログラム間の「前後」の切り替えを可能にします(ただし、ディスクアクセスが必要なため、処理速度は遅くなります)。しかし、Back and Forthはバックグラウンド処理を実行できませんでした。バックグラウンド処理にはDESQview(少なくとも386では)が必要でした。
