DOS
DOS (/dɒs/、/dɔːs/)は、ディスクオペレーティングシステムのプラットフォームに依存しない頭字語です。これは、IBMが最初にSystem / 360メインフレーム用に導入し、後にx86用のディスクベースオペレーティングシステムの一般的な略語になりましたベースのIBM PC互換機。 DOSは、主にMicrosoftのMS-DOSとPC DOSという名前のブランド変更されたIBMバージョンで構成され、どちらも1981年に導入されました。他のメーカーの互換システムはDR DOSです(Digital Researchによって1988年以降、後にNovellに販売され、 Caldera、Lineo、そして最後にDeviceLogics)、ROM-DOS(1989年以降はDatalight)、PTS-DOS(1993年以降はParagon TechnologyおよびPhysTechSoftによって)、Embedded DOS(General Softwareによって)、FreeDOS(1998)、およびRxDOS。 MS-DOSは、1981年から1995年の間にIBM PC互換市場を支配しました。
1966年のメインフレームDOS / 360など、他の多くのオペレーティングシステムでも「DOS」という頭字語が使用されています。その他には、Apple DOS、Apple ProDOS、Atari DOS、Commodore DOS、TRSDOS、およびAmigaDOSが含まれます。
歴史
起源
DOSは当初IBM System / 360でリリースされ、後に他のプラットフォームで独立して使用されました。これらは同じオペレーティングシステムではありませんが、代わりにディスクで使用することを意味し、多くの場合、ディスクから起動します。 IBM PC DOS(および別売のMS-DOS)とその前身である86-DOSは、Digital ResearchのCP / M(8ビットIntel 8080およびZilog Z80マイコンの主要なディスクオペレーティングシステム)に基づいていましたが、代わりにIntel 8086 16ビットプロセッサ。
IBMがIntel 8088マイクロプロセッサで構築されたIBM PCを導入したとき、オペレーティングシステムが必要でした。 8088互換のCP / Mビルドを求めて、IBMは最初にMicrosoft CEO Bill Gatesに連絡しました(Microsoft Z-80 SoftCardによりCP / Mを所有しており、CP / MをApple IIで実行できると思われます)。 IBMはDigital Researchに送られ、会議が開催されました。ただし、CP / Mの使用に関する最初の交渉は決裂しました。 Digital Researchは、ロイヤリティベースでCP / Mを販売したいのに対し、IBMは単一のライセンスを求め、名前を「PC DOS」に変更したいと考えていました。 Digital Researchの創設者Gary Kildallは拒否し、IBMは撤回しました。
IBMは再びBill Gatesにアプローチしました。ゲイツはシアトルのコンピューター製品に近づきました。そこで、プログラマーのティムパターソンはCP / M-80のバリアントを開発しました。これは、S-100バス用のSCPの新しい16ビットIntel 8086 CPUカードをテストするための内部製品として意図されていました。システムは、86-DOSとして市販される前に、最初はQDOS(Quick and Dirty Operating System)という名前でした。 Microsoftは86-DOSを50,000ドルで購入したと言われています。これは、1981年に導入されたMicrosoft Disk Operating System、MS-DOSになりました。1年以内に、Microsoftは70を超える他の企業にMS-DOSをライセンスしました。マイクロソフトは、後にIBMバリアントを除き、MS-DOS名の使用を要求しました。 IBMは、IBM PC用のバージョンであるPC DOSの開発を続けました。 Digital Researchは、CP / Mに類似したオペレーティングシステムがIBMによって販売されていることを認識し(IBMがCP / Mに対して主張したのと同じ名前で)、法的措置を脅かしました。 IBMは、契約を提供することで対応しました。Kildallの8086バージョンであるPC DOSまたはCP / M-86をPC消費者が選択できるようにします。並んで、CP / MはPC DOSよりもほぼ200ドル高く、売り上げは低かった。 CP / Mは衰退し、MS-DOSおよびPC DOSがPCおよびPC互換機用の市販オペレーティングシステムになりました。
マイクロソフトは、元々MS-DOSをOEM(Original Equipment Manufacturer)にのみ販売していました。これの主な理由の1つは、初期のすべてのPCがIBM PCと100%互換性があるわけではなかったことです。 DOSは、システム固有のデバイスドライバーコード(IO.SYS)とDOSカーネル(MSDOS.SYS)が分離されるように構成されました。マイクロソフトは、OEMが特定のシステムに合わせてデバイスドライバーコードをカスタマイズできるようにするOEM適応キット(OAK)を提供しました。 1990年代初頭までに、ほとんどのPCはIBM PC標準に準拠していたため、MicrosoftはMS-DOS 5.0の小売りでMS-DOSの販売を開始しました。
1980年代半ばに、MicrosoftはDOSのマルチタスクバージョンを開発しました。このバージョンのDOSは、ICL用に開発され、いくつかのヨーロッパ企業にライセンスされているため、一般に「ヨーロッパMS-DOS 4」と呼ばれます。このバージョンのDOSは、プリエンプティブマルチタスク、共有メモリ、デバイスヘルパーサービス、および新しい実行可能(「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の一部でした。
Gordon Letwinは1995年に、「DOSは、私たちが最初に書いたとき、IBMが私たちの言語を買うようにIBMを幸せに保つことを目的とした使い捨て製品でした」と書いています。 Microsoftは、Xenixの前の暫定的なソリューションになると予想していました。同社は、Motorola 68000、Zilog Z-8000、およびLSI-11でも実行されるシングルユーザーXenixまたはXEDOSとほとんど区別できないように、MS-DOSを徐々に改善することを計画しました。 1983年にBYTEが「将来のマルチユーザーMS-DOS」と評したXenixと上位互換性があります。
ただし、IBMはDOSを置き換えたくありませんでした。 AT&TがUnixの販売を開始した後、MicrosoftとIBMは代替手段としてOS / 2の開発を開始しました。両社は後に、DOS、OS / 2、およびWindowsの2つの後続オペレーティングシステムについて一連の意見の相違を抱えていました。その結果、DOSシステムの開発を分割しました。 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プロジェクトは1994年6月26日に始まり、MicrosoftはMS-DOSを販売またはサポートしないことを発表しました。その後、ジムホールは、オープンソースの代替品の開発を提案するマニフェストを投稿しました。数週間以内に、Pat VillaniやTim Normanなどの他のプログラマーがプロジェクトに参加しました。カーネル、COMMAND.COMコマンドラインインタープリター(シェル)、およびコアユーティリティは、作成または使用可能になったコードをプールすることで作成されました。 FreeDOS 1.0ディストリビューションが2006年9月3日にリリースされる前に、FreeDOSのいくつかの公式プレリリースディストリビューションがありました。GNUGeneral Public License(GPL)の下で利用可能になり、FreeDOSはライセンス料やロイヤリティを必要としません。
低下
Microsoft Windowsの初期バージョンは、DOSの別のバージョンで実行されていました。 1990年代初頭までに、Windowsグラフィカルシェルは新しいDOSシステムで頻繁に使用されるようになりました。 1995年、Windows 95は、独立したDOSライセンスを必要としないスタンドアロンオペレーティングシステムとしてバンドルされました。 Windows 95(およびそれに続くWindows 98およびME)がデフォルトのOSカーネルとして引き継がれましたが、MS-DOSコンポーネントは互換性のために残りました。 MEではなくWindows 95および98では、Windowsを起動せずにMS-DOSコンポーネントを実行できます。 DOSでWindowsを使用する必要がなくなったため、PCユーザーの大半はWindowsを直接使用しなくなりました。
継続使用
2012年に使用可能なDOSシステムは、FreeDOS、DR-DOS、ROM-DOS、PTS-DOS、RxDOS、およびREAL / 32です。 DellやHPなどの一部のコンピューターメーカーは、FreeDOSおよびDR-DOSを搭載したコンピューターをOEMオペレーティングシステムとして販売しています。
組み込みシステムハードウェアに直接アクセスするDOSの構造により、組み込みデバイスでの使用に最適です。 DR-DOSの最終バージョンは、まだこの市場を対象としています。 ROM-DOSは、Canon PowerShot Pro 70の組み込みシステムとして使用されました。
エミュレーションLinuxでは、DOSのコピーとそのクローンの多くを、DOSプログラムをネイティブに近い速度で実行するためのLinuxネイティブ仮想マシンであるDOSEMUで実行できます。 DOSBoxなどのUnixおよびMicrosoft WindowsのさまざまなバージョンでDOSを実行するためのエミュレータは他にも多数あります。 DOSBoxは、最新のオペレーティングシステムでのレガシーゲーム( King's Quest 、 Doomなど )用に設計されています。
設計
MS-DOSおよびIBM PC DOS関連のオペレーティングシステムは、一般にIntel x86または互換CPU(主にIBM PC互換)を使用するマシンに関連付けられています。 MS-DOSのマシン依存バージョンは、多くの非IBM互換のx86ベースのマシン用に製造され、製造元の名前の下でのMicrosoftディストリビューションのラベル変更から、IBM-PC互換でないハードウェアで動作するように特別に設計されたバージョンまでのバリエーションがあります。アプリケーションプログラムが直接ハードウェアアクセスではなくDOS APIを使用している限り、IBM-PC互換マシンと非互換マシンの両方で実行できます。 1990年代初頭のMotorola 68000シリーズCPUのDOS / NTから派生したオリジナルのFreeDOSカーネル、DOS-C。これらのシステムはDOSアーキテクチャに大まかに似ていますが、これらの非x86-CPUの命令セットに互換性がないため、アプリケーションはバイナリ互換ではありませんでした。ただし、高級言語で書かれたアプリケーションは簡単に移植できます。
DOSは、リエントラントではない基本的なカーネル機能を備えたシングルユーザー、シングルタスクのオペレーティングシステムです。一度に使用できるプログラムは1つだけで、DOSには複数のプログラムを同時に実行できる機能はありません。 DOSカーネルは、文字I / O、ファイル管理、メモリ管理、プログラムのロードと終了など、プログラム( アプリケーションプログラムインターフェイス )にさまざまな機能を提供します。
DOSは、バッチファイル(ファイル名拡張子.BAT)を使用してシェルスクリプトを作成する機能を提供します。バッチファイルの各行は、実行するプログラムとして解釈されます。バッチファイルは、GOTOや条件付きステートメントなどの内部コマンドも利用できます。
オペレーティングシステムは、文字ベースのアプリケーションの開発を可能にするアプリケーションプログラミングインターフェイスを提供しますが、グラフィックカード、プリンター、マウスなどのほとんどのハードウェアへのアクセスはできません。そのため、プログラマはハードウェアに直接アクセスする必要があり、通常、各アプリケーションは各ハードウェア周辺機器用の独自のデバイスドライバーセットを持ちます。ハードウェアメーカーは、一般的なアプリケーションのデバイスドライバーが利用できるように仕様をリリースします。
起動シーケンス
- マスターブートレコードであるPC互換コンピューター上のブートストラップローダーは、ブートディスクの最初のトラック(トラック0)の最初のセクターであるブートセクターから始まります。 ROM BIOSは、このセクタをアドレス0000h:7C00hのメモリにロードし、通常、オフセット+ 1FEhで署名「55h AAh」をチェックします。セクターが有効と見なされない場合、ROM BIOSは行内の次の物理ディスクを試行します。そうでない場合、特定のレジスターがセットアップされたロードアドレスにジャンプします。
- ロードされたブートセクターがパーティションメディアで見つかったマスターブートレコード(MBR)である場合、メモリ内の0000h:0600hに再配置されます。それ以外の場合、この手順はスキップされます。 MBRコードは、アクティブパーティションのこのセクター内にあるパーティションテーブルをスキャンします(ビット7がオフセット+ 1BEh + 10h * nに設定されている場合、最新のMBRはチェックしますが、古いMBRは単に80hの値をチェックします)。そして、見つかった場合は、そのボリュームのボリュームブートレコード(VBR)を保持する対応するパーティションの最初のセクターを、ROM BIOS自体によってロードされたのと同様の方法で0000h:7C00hにメモリにロードします。 MBRは、特定のレジスタを設定して、ロードされた部分に実行を渡します。
- 0000h:7C00hにロードされたセクターコンテンツは、現在VBRを構成しています。 VBRはオペレーティングシステム固有であり、異なるDOSバージョン間で正確な動作が異なるため、一般に異なるDOSバージョン間で交換することはできません。 DOS 1.xなどの非常に古いバージョンのDOSでは、VBRは0000h:0600hにIO.SYS / IBMBIO.COMファイル全体をメモリにロードします。これが機能するためには、これらのセクターをSYSによってディスクに連続した順序で保存する必要がありました。後の問題では、ルートディレクトリの最初の2つのエントリの内容を0000h:0500hに見つけて保存し、VBRに記録された正しいブートファイルを反映する場合、VBRは最初の3つの連続したセクタを読み込みますIO.SYS / IBMBIO.COMファイルを0070h:0000hにメモリに入れます。 VBRは、ディスクパラメータテーブル(DPT)の内容を保持するように注意する必要もあります。最後に、特定のレジスターをセットアップして(異なるDOSバージョン間でかなりの違いがある)エントリー・ポイントにジャンプすることにより、ロードされた部分に制御を渡します。
- VBRがIO.SYS / IBMBIO.COMファイルの最初の3セクターのみをメモリにロードした最新のDOSバージョンでは、ロードされた部分に別のブートローダーが含まれ、ルートを使用して残りの部分をメモリにロードします。 0000h:0500hに保存されているディレクトリ情報。ほとんどのバージョンでは、ファイルの内容をディスクに連続した順序で保存する必要があります。全体としてまだロードされているDOSの古いバージョンでは、この手順はスキップされます。
- DOSシステム初期化コードは、組み込みデバイスドライバーを初期化してから、MS-DOSシステム上のMSDOS.SYSにあるDOSカーネルもメモリにロードします。 Windows 9xでは、DOSシステム初期化コードと組み込みデバイスドライバーおよびDOSカーネルが単一のIO.SYSファイルに結合され、MSDOS.SYSがテキスト構成ファイルとして使用されます。
- CONFIG.SYSファイルが読み取られ、構成パラメーターが解析されます。 SHELL変数は、デフォルトでCOMMAND.COMになるシェルの場所を指定します。
- シェルがロードされ、実行されます。
- 起動バッチファイルAUTOEXEC.BATは、シェルによって実行されます。
ブートセクタによってロードされるDOSシステムファイルは連続しており、最初の2つのディレクトリエントリである必要があります。そのため、このファイルを削除および追加すると、メディアが起動できなくなる可能性があります。ただし、シェルを自由に置き換えることができます。これは、専用アプリケーションの実行をより速く開始するために使用できる方法です。この制限は、システムファイルがルートディレクトリのどこにでも配置でき、連続している必要がない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がサポートする完全修飾ファイル名の最大長は、drive:\ path \ filename.extの後にヌルバイトが続く形式を使用した80文字です。
DOSは、ファイルアロケーションテーブル(FAT)ファイルシステムを使用します。これはもともとFAT12で、ドライブあたり最大4078のクラスターをサポートしていました。 DOS 3.0は、16ビットの割り当てエントリを使用し、ドライブごとに最大65518のクラスターをサポートするFAT16のサポートを追加しました。 Compaq MS-DOS 3.31はFAT16Bのサポートを追加し、32 MBのドライブ制限を削除し、最大512 MBをサポートできました。最後に、MS-DOS 7.1(Windows 9xのDOSコンポーネント)は、32ビットの割り当てエントリを使用し、最大137 GB以上のハードドライブをサポートできるFAT32のサポートを追加しました。
DOS 3.1以降、ファイルリダイレクタのサポートがDOSに追加されました。これは当初、ネットワークをサポートするために使用されていましたが、後にMSCDEXでCD-ROMドライブをサポートするために使用されました。 IBM PC DOS 4.0にも暫定的なインストール可能ファイルシステム(IFS)のサポートがありましたが、これは未使用であり、DOS 5.0では削除されました。 DOSは、ネットワークデバイスをサポートするためにDOSファイルシステムで使用できるCONFIG.SYSからロードされたブロックデバイス(「ディスクドライブ」デバイス)もサポートしていました。
ドライブの命名スキームDOSでは、ドライブは文字を識別することによって参照されます。標準的な方法は、フロッピードライブ用に「A」と「B」を予約することです。フロッピードライブが1つしかないシステムでは、DOSは両方の文字をドライブに割り当て、プログラムがそれらの間の代替アクセスを行うときにディスクを交換するようにユーザーに促します。これにより、フロッピーからフロッピーへのコピーや、あるフロッピーから別のフロッピーのデータにアクセスしながらプログラムを実行することが容易になります。ハードドライブには元々「C」と「D」の文字が割り当てられていました。 DOSは、ドライブごとに1つのアクティブパーティションのみをサポートできます。より多くのハードドライブのサポートが利用できるようになったため、これは最初に各ドライブのアクティブプライマリパーティションにドライブ文字を割り当て、次にドライブを2回パスして拡張パーティションの論理ドライブに文字を割り当て、次に他の非アクティブプライマリパーティションの名前(このような追加のパーティションが存在し、DOSでサポートされているファイルシステムが含まれていた場合)。最後に、DOSは光ディスクドライブ、RAMディスク、およびその他のハードウェアに文字を割り当てます。通常、文字の割り当てはドライバーのロード順に行われますが、ドライバーはDOSに別の文字を割り当てるように指示できます。たとえば、ネットワークドライブのドライバーは、通常、アルファベットの末尾に近い文字を割り当てます。
DOSアプリケーションはこれらのドライブ文字を(Unixライクなシステムの/ devディレクトリとは異なり)直接使用するため、ドライブ文字を必要とする新しいハードウェアを追加することで混乱させることができます。例は、既存のハードドライブに拡張パーティションの論理ドライブが含まれるプライマリパーティションを持つ新しいハードドライブの追加です。新しいドライブには、以前に拡張パーティション論理ドライブのいずれかに割り当てられていた文字が割り当てられます。さらに、拡張パーティションに論理ドライブのみを持つ新しいハードドライブを追加しても、RAMディスクと光学式ドライブの文字は混乱します。この問題は、ユーザーが変更するまで既存のドライブの文字を保持するNT行に基づくバージョンに置き換えられるまで、MicrosoftのDOSベースのWindowsの9xバージョンを通じて持続しました。 DOSでは、SUBSTドライブを定義し、DOSプログラムをこの論理ドライブにインストールすることにより、この問題を回避できます。このドライブの割り当ては、アプリケーションが起動するたびにバッチジョブで変更されます。コンカレントDOSの一部のバージョン、およびマルチユーザーDOS、システムマネージャー、REAL / 32では、予約されたドライブ文字L:は、アプリケーションの起動時に対応するロードドライブに自動的に割り当てられます。
予約済みのデバイス名DOSには予約済みのデバイス名がありますが、拡張子に関係なくファイル名として使用することはできません。これらは組み込みの文字デバイスによって占有されているためです。これらの制限はいくつかのWindowsバージョンにも影響し、場合によってはクラッシュやセキュリティの脆弱性を引き起こします。
予約名は、CON(コンソール用)、AUX(補助用)、PRN(プリンター用)、およびLST(リスター用)です。これらは86-DOS 0.74で導入されました。 86-DOS 1.10およびPC DOS 1.0にNULが追加されました。 LSTを除いて、MS-DOS、PC DOS、およびDR-DOSのすべてのバージョンで引き続きサポートされていました。LSTは一部のOEMバージョンのMS-DOS 1.25でも使用できましたが、MS-DOS 1.25の他のOEMバージョンはすでに使用されていました代わりに、PC DOSで導入されたLPT1(最初のラインプリンター)とCOM1(最初のシリアル通信デバイス)。 LPT1とLPT2、およびCOM1〜COM3に加えて、HP Portable Plus用のHewlett-PackardのMS-DOS 2.11は、LPT2のエイリアスとしてLST、COM2のエイリアスとして82164Aもサポートしていました。また、プロッタのPLTもサポートしていました。それ以外の場合、COM2、LPT2、LPT3およびCLOCK $(MS-DOS 2.11の一部の問題ではまだCLOCKと呼ばれています)クロックデバイスはDOS 2.0で導入され、COM3およびCOM4はDOS 3.3で追加されました。マルチタスクMS-DOS 4のみがKEYBD $とSCREEN $をサポートしました。 DR DOS 5.0以降およびマルチユーザーDOSは、動的アイドル検出用の$ IDLE $デバイスをサポートし、電力を節約し、マルチタスクを改善します。 LPT4は、7.02以降のDR-DOSの一部のバージョンでサポートされている4行目のプリンター用のオプションの組み込みドライバーです。 CONFIG $は、MS-DOS 7.0-8.0のリアルモードPnPマネージャーを構成します。
通常、AUXはCOM1にデフォルト設定され、PRNはLPT1(LST)に設定されますが、DOSの一部のバージョンでは、これらのデフォルトを変更して他のシリアルまたはパラレルデバイスを指すようにすることができます。PLTも再構成可能です。
NUL:などのコロン(:)で終わるファイル名は、従来はデバイス名を示していますが、コロンは実際には組み込みのデバイスドライバーの名前の一部ではありません。コロンは、たとえば次のように入力する必要はありません。
これらの予約されたデバイス名を使用して、ディスクセクターのディレクトリデータ構造を直接編集するなどして、ファイルまたはディレクトリを作成することは引き続き可能です。ファイル名をスペースで始めるなどの名前付けは、これらの場所へのアクセス方法がわからないユーザーからファイルを隠すために、ウイルスやハッキングプログラムによって使用されることがあります。
メモリ管理
DOSはもともとIntel 8086/8088プロセッサ用に設計されていたため、最大1 MBのRAMにのみ直接アクセスできました。 PCアーキテクチャにより、上位384 KBが予約されているため、最大640 KB(コンベンショナルメモリ)しか使用できません。
仕様は、追加のメモリにアクセスできるように開発されました。 1つ目は、拡張メモリ仕様(EMS)で、当初は予約された上位メモリ領域の64 KBページフレームを介してアドオンカードのメモリにアクセスできました。 80386以降のシステムでは、EMM386などの仮想8086モード(V86)モードのメモリマネージャーを使用して、アドオンカードを必要とせずに拡張メモリから拡張メモリを作成できます。 2番目の仕様は、80286以降のシステムの拡張メモリ仕様(XMS)です。これにより、拡張メモリとの間でデータをコピーする方法が提供され、メモリの最初のメガバイトのすぐ上の65520バイトの高メモリ領域(HMA)およびアッパーメモリブロック(UMB)領域にアクセスできます。一般に、XMSサポートは、HIMEM.SYSまたはEMSをサポートするQEMMや386MAXなどのV86モードメモリマネージャーによって提供されました。
DOS 5以降、DOSはCONFIG.SYSのDOS = HIGHステートメントを介してカーネルコードとディスクバッファーをロードすることにより、HMAを直接利用できます。 DOS 5以降では、CONFIG.SYSのDOS = UMBステートメントを介して利用可能なUMBを使用することもできました。
OS / 2およびWindowsでのDOS
OS / 2およびWindowsのDOSエミュレーションは、ネイティブアプリケーションとほぼ同じ方法で実行されます。すべてのドライブとサービスにアクセスでき、ホストのクリップボードサービスも使用できます。ファイルシステムなどのドライバーはホストシステムに存在するため、DOSエミュレーションは、DOS呼び出しをOS / 2またはWindowsシステム呼び出しに変換するDOS API変換レイヤーを提供するだけで済みます。通常、変換レイヤーは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ドライバーがないCDROMドライブにアクセスできます。
1993年以降のWindows NTファミリのすべての32ビット(IA-32)エディションでは、DOSエミュレーションは仮想DOSマシン(NTVDM)によって提供されます。 64ビット(IA-64)バージョンのWindowsはNTVDMをサポートせず、16ビットDOSアプリケーションを直接実行できません。 DOSboxなどのサードパーティエミュレータを使用して、これらのマシンでDOSプログラムを実行できます。
ユーザーインターフェース
DOSシステムはコマンドラインインターフェイスを使用します。コマンドプロンプトでファイル名を入力すると、プログラムが開始されます。 DOSシステムにはユーティリティプログラムが含まれており、プログラムに対応しない内部コマンドを提供します。
よりユーザーフレンドリーな環境を提供するために、多くのソフトウェアメーカーが、ユーザーにメニューおよび/またはアイコンベースのインターフェースを提供するファイル管理プログラムを作成しました。 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シェルが含まれていました。翌年にリリースされたDR DOS 5.0には、GEMに基づくViewMAXが含まれていました。
居住者の終了と滞在
DOSはマルチタスクオペレーティングシステムではありません。ただし、DOSは、プログラムをメモリに常駐させておくことができるTerminate and Stay Resident(TSR)機能を提供していました。これらのプログラムは、システムタイマーやキーボード割り込みをフックして、バックグラウンドでタスクを実行したり、現在実行中のプログラムをプリエンプションしていつでも呼び出すことができ、プログラム固有のマルチタスクの単純な形式を効果的に実装できます。 PRINTコマンドは、バックグラウンド印刷スプールを実装するためにこれを行いました。ポップアップ個人情報マネージャー(PIM)であるBorland Sidekickもこの手法を使用しました。
居住者プログラムの終了および滞在も、デフォルトでは利用できない追加機能を提供するために使用されました。 CEDやDOSKEYなどのプログラムは、COMMAND.COMで利用可能なものを超えるコマンドライン編集機能を提供しました。 Microsoft CD-ROM Extensions(MSCDEX)などのプログラムは、CD-ROMディスク上のファイルへのアクセスを提供しました。
一部のTSRは、基本的なタスクスイッチングを実行することさえできます。たとえば、シェアウェアプログラムBack and Forth(1990)には、現在実行中のプログラムの状態をディスクに保存し、別のプログラムをロードし、それに切り替えるホットキーがあったため、プログラム間を「前後に」切り替えることができました。 、必要なディスクアクセスのためにゆっくりとはなりますが。ただし、Back and Forthはバックグラウンド処理を有効にできませんでした。 DESQviewが必要でした(少なくとも386)。
ソフトウェア
- 16ビットのグラフィカルWebブラウザであるArachne
- dBase、データベースプログラム
- ハーバードグラフィックス、プレゼンテーショングラフィックスデザインプログラム
- Lotus 1-2-3、スプレッドシートは、IBM PCの成功に貢献しています。
- ノートンコマンダーとXTree、ファイル管理ユーティリティ
- PKZIP、すぐにファイル圧縮の標準になった圧縮ユーティリティ
- ProComm、Qmodem、およびTelix、モデム通信プログラム
- Sidekick、他のプログラム内から使用できる個人情報マネージャー
- WordPerfect、1980年代に支配的だったワードプロセッサ
- WordStar、元はCP / M用のワードプロセッサで、IBM PCで人気があった
開発ツール
- BASIC言語インタープリター。 BASICAおよびGW-BASIC
- DJGPP、gccの32ビットDPMI DOSポート
- Microsoft Macro Assembler、Microsoft C、およびMicrosoftのCodeView
- BorlandのTurbo Pascal、Turbo BASIC、Turbo C、Turbo Prolog、Turbo Assembler