DOS 保護モード インターフェース

DOS 保護モード インターフェース
略語DPMI
ステータス発行済み
開始年1989 (1989年
組織DPMI委員会
ドメインアプリケーション・プログラミング・インターフェース

コンピューティングにおいて、DOS プロテクトモードインターフェースDPMI)は1989年に導入された仕様であり、DOSプログラムをプロテクトモードで実行できるようにすることで、当時の新しいPCプロセッサのリアルモードでは利用できない多くの機能にアクセスできるようにしています。当初はMicrosoftによってWindows 3.0用に開発されましたが、後にMicrosoftは仕様の管理をオープンメンバーシップの業界委員会に委ねました。[ 1 ] [ 2 ]現代のDOSエクステンダーのほぼすべてはDPMIに基づいており、DOSプログラムはPCで利用可能なすべてのメモリをアドレス指定し、プロテクトモード(主にリング3、最小権限)で実行できます。[ 3 ]

概要

DPMIはDOS Protected Mode Interfaceの略です。これは、 80286シリーズ以降のプロセッサ上でプログラムをプロテクトモードで実行し、 CPUモードを手動で設定することなくリアルモードを呼び出すことを可能にするAPIです。DPMIは、メモリをはじめとする様々なリソースを管理するための機能も提供します。これにより、DPMI対応プログラムは マルチタスクOSで動作し、OSカーネルは複数のアプリケーション間でリソースを分配することができます。DPMIは、スーパーバイザモードで実装する必要がある機能のみを提供します。これはシングルタスクのマイクロカーネルと考えることができます。残りの機能は、リアルモードDOSおよびBIOSサービスへの呼び出しを介してDPMI対応プログラムで利用できるため、DPMI API自体はDOSからほぼ独立したままです。DPMI APIをDOS固有のものにしているのは、DOSメモリを管理するための3つの関数と、「DPMI」の頭字語の文字「D」だけです

DPMIサービスは16ビット、32ビット、または「ユニバーサル」で、DPMIカーネルDPMIホスト、またはDPMIサーバーと呼ばれます。ホストオペレーティングシステム(仮想DPMIホスト)またはDOSエクステンダ実DPMIホスト)によって提供されます。DPMIカーネルは、 DOS/4GWDOS/32AなどのDOSエクステンダの一部となる場合もあれば、 CWSDPMIHDPMIのように独立したサービスとなる場合もあります。

DPMI APIの主な用途は、DOSエクステンダーがホストOSに依存しない環境を提供できるようにすることです。DOSエクステンダーはDPMIカーネルの存在を確認し、インストールされていない場合のみ独自のカーネルをインストールします。これにより、DOS拡張プログラムは、独自のDPMIカーネルを提供するマルチタスクOS、またはベアメタルDOSの直下で実行できます。ベアメタルDOSの直下では、DOSエクステンダーが独自のDPMIカーネルを使用します。Windows 3.xおよび9xのユーザーモード カーネルはDOSエクステンダーを使用して構築されているため、Windowsのリング0カーネルが提供するDPMI APIに完全に依存しています。

歴史

最初の DPMI 仕様草案は、1989 年に Microsoft のRalph Lipeによって公開されました。[ 4 ] [ 1 ] Windows 3.0の 386 拡張モード用の DPMI のプロトタイプ バージョンに基づいていましたが、この実装のいくつかの機能は公式仕様から削除されました。これには、元の草案で Ralph Lipe によって提案されたMS-DOS 拡張機能[ 5 ]またはDOS API 変換と呼ばれる機能が含まれます。 [ 6 ]そのほとんどは DOS および BIOS インターフェイスの実装でした (この履歴により、4Ch などの一部の INT 21h API は、すべての DPMI 実装で実装する必要があります)。DPMI バージョン 0.9 は、新しく形成されたDPMI 委員会によって 1990 年に公開されました。結果として得られた仕様のバージョン番号 0.9 は、DPMI 委員会のメンバーが合意できる、標準の簡素化された性質と不完全な状態を反映するために選択されました。[ 1 ] Windowsは互換性のためにDPMIバージョン0.9を報告していますが、実際にはシステムの重要な部分であるため、他の部分も実装しています。[ 5 ] [ 1 ]この文書化されていないDPMIの完全な性質は、業界では「真のDPMI 」として知られています。 [ 7 ] DPMI標準は、VCPI仕様の欠点を克服するための唯一の取り組みではありませんでした。マイクロソフトがWindows 3.0用にDPMIを開発したのと同時に、インテルのソフトウェアフォーカスグループ[ 8 ] [ 1 ]ロータス[ 8 ]デジタルリサーチインタラクティブシステムなどを含む別の業界団体が、386のメモリ管理とマルチタスク機能を拡張DOSアプリケーションで利用できるように、 Extended VCPIXVCPI )という仕様を開発しました。[ 8 ] [ 1 ] [ 9 ] マイクロソフトのDPMI提案が多くの類似した問題に対処し、Windowsによってサポートされていることが判明すると、これらの取り組みは1990年2月にサンタクララのインテルでの会議中にDPMI委員会の設立につながりました。[ 8 ] [ 1 ]

1991年、DPMI委員会はDPMIをバージョン1.0に改訂し、多くの明確化と拡張を盛り込みましたが、Windowsに実装されていた「真のDPMI」の機能がまだ含まれていませんでした。実際、「真のDPMI」は公式のDPMI仕様には含まれず、Windowsも同様にDPMI 1.0の拡張を実装しませんでした(実装したDPMIホストもそれほど多くありませんでした)。

DPMIは拡張DOSアプリケーションソフトウェアをプロテクトモードおよび拡張メモリで実行するように設計されているが[ 10 ]、常駐システム拡張には特に適していない。 1992年頃にDigital Research / Novellによって開発されたDPMS [ 10 ]という別の仕様は、修正されたDOSドライバソフトウェアを拡張メモリに容易に再配置し、プロテクトモードで実行できるようにすることで、従来のメモリフットプリントを小さなスタブにまで削減するという要件に特化している。これはHelix Cloakingによってもサポートされている。

DPMI「方式」はDOSとIBM PCに特有のものです。他の種類のコンピュータは16ビットから32ビットにアップグレードされ、高度なプログラムサポートは、新しい32ビットAPIと新しいメモリ管理/アドレス指定機能を備えたオペレーティングシステムのアップグレードによって提供されました。例えば、OS/2コアシステムは32ビットプログラムをサポートしており、GUIなしで実行できます。DPMIソリューションは、主要なオペレーティングシステムベンダーであるMicrosoftが32ビットWindowsの将来に対応できるようになる前に、サードパーティがDOSプロテクトモードプログラムをWindows 3.x上で安定して実行できるようにしたいというニーズに応えるために主に必要とされたようです。さらに、Microsoftは32ビット移行の解決策を32ビットDOSではなく、全く異なる(そして互換性のない)APIを備えた32ビットWindowsと考えていました。

互換性

Windows 3.0は「真のDPMI」[ 5 ]を実装し、DPMI 0.9のサポートを報告していますが[ 11 ] 、DPMIバージョン1.0はMicrosoft Windowsに実装されていなかったため、ほとんどのプログラムとDOSエクステンダーはバージョン0.9専用に作成されました。しかし、「真のDPMI」を実装しているエクステンダーはほとんどありません

Qualitas 386MAXのベータ版は「真のDPMI」を実装し、WindowsのKRNL386.EXEをコマンドラインから実行できましたが、社内メールではリリース版では無効になっていると説明されていました。[ 5 ]しかし、DPMIONE(386MAXのコードをベースにBob Smith氏が開発した)では実行可能です。現在、DPMIONE386 MAXは、DPMI 1.0を完全にサポートする唯一のDPMIホスト(例えば、未コミットメモリ)であり、DPMI 1.0の主要なサポーターでもあります。[ 12 ]

1991年から開発が進められているDR DOS「Panther」および「StarTrek」のKRNL386.SYS(別名「MultiMAX」)[注 1 ]と、Novell DOS 7[ 10 ] 、 Caldera OpenDOSDR-DOS 7.02以降のメモリマネージャEMM386.EXEには、オプションを指定してロードするとDPMIのサポートが組み込まれています。KRNL386.SYSには、 DPMI 1.0または0.9のサポートを提供するコマンドラインオプションもありました。 [ 13 ] DOS API変換は、「保護モードから割り込み21を呼び出す」と呼ばれていました。マルチユーザーDOSシステムマネージャ、およびREAL/32もDPMIをサポートしています。 /DPMI[=ON]/VER=0.9|1.0

最も有名な独立したDPMIカーネルはおそらくCWSDPMIでしょう。これはDPMI 0.9をサポートしていますが、文書化されていない「DOS API変換」は含まれていません。「TRAN」ことThomas Pytel氏によるPMODEと呼ばれる別の派生版は、1990年代のデモシーンで32ビットプログラマーの間で人気を博しました。多くのゲームはDOS/4GWを使用していました。これはDOS/4GのサブセットとしてRational Systemsによって開発され、 Watcom Cコンパイラと共に配布されていました。

HDPMI ( HX DOS Extenderの一部) は、「DOS API 変換」とほぼ完全な DPMI 1.0 実装を提供します。

DPMI委員会

DPMI 1.0委員会は1990年から1991年にかけて開催され、12のグループで構成されていました

参照

注記

  1. ^ DR DOS「Panther」のKRNL386.SYSには、著作権文字列「1991,1992」が含まれています

参考文献

  1. ^ a b c d e f g Duncan, Ray (1991-02-12). "Power Programming – An Introduction to the DOS Protected Mode Interface" . PC Magazine . 10 (3). Ziff-Davis Publishing Co. : 367– 371. ISSN  0888-8507 . 2016-05-21閲覧. […] VCPIの開発者たちはその限界を十分に認識しており、 Microsoft がWindows 3.0 のベータテスト版と DPMI を携えて登場した時には、既にExtended VCPI ( XVCPI )と呼ばれる第二世代仕様の開発に取り組んでいました。数ヶ月の間、新興のDOS エクステンダー市場は互いに排他的な二つの方向に分裂するように見えました […] Microsoft は DPMI 仕様の管理をオープンメンバーシップの業界委員会に委ね、XVCPI プロジェクトの支援者たちは DPMI の実現に向けて協力することを決定しました。 […] マイクロソフトは、DPMIのうちDOSエクステンダーの領域にまたがる部分、具体的にはプロテクトモードにおけるDOSおよびROM BIOS割り込みの直接サポートを削除することに同意しました。その結果、1990年5月にDPMI委員会によってリリースされた最初の公開バージョンであるDPMIバージョン0.9では、低レベルまたはビルディングブロック機能のみが定義されています […] 当然のことながら、Windows 3.0の高レベル、つまりDOSエクステンダーインターフェースは依然として存在しますが、文書化されていない機能の薄暗い領域へと消え去っています。文書化されていないとはいえ、決して使えないわけではありません […]
  2. ^ダンカン, レイ;ペッツォルド, チャールズ; シュルマン, アンドリュー; ベイカー, M. スティーブン; ネルソン, ロス P.; デイビス, スティーブン R.;ムート, ロバート(1992). 『DOS の拡張: プロテクトモード DOS プログラマガイド』第 2 版.アディソン・ウェズリー出版. pp.  433– 436. ISBN 0-201-56798-9
  3. ^ Schmit, Michael L. (1995). Pentiumプロセッサ最適化ツール(第1版). 米国マサチューセッツ州ケンブリッジ: Academic Press, Inc. ( AP Professional ). ISBN 0-12-627230-1
  4. ^ Microsoft(1989年秋)、DOS プロテクトモードインターフェイス仕様、リビジョンプレリリース0.04(プレリリース版)
  5. ^ a b c d Cole, Dave (1992-05-04). Neiminen, Bruce (ed.). "Re: MS-DOS DPMI extensions" (PDF) (裁判所文書). Microsoft . pp.  123– 124. MSC 00779372/00779373, MX3232616/3232617, Cole Exhibit 10, 2001-06-21. 2018-09-18にオリジナルからアーカイブ(PDF) 。2018-09-17に取得Comes v. Microsoft - Plaintiff's exhibit 1306より。[…] [Ralph Lipe:] Win386プロジェクトにチェックインされていると思います。ルートMSDOS.DOC(ルート内のすべての.DOCファイルを見てください)[…] いいえ!これは極めてデリケートな問題です。なぜなら、これは基本的に[…] ISV(別名DR-DOSおよびIBM )に標準モードのWindowsの実行方法を伝えるものだからです。配布前にBradSi[lverberg]に確認する必要があります。[Greg Lowney:] SoftNetはリミッターを製造しています。彼らはC7のマニュアルを読んで、リミッターがDPMI仕様のMS-DOS拡張をサポートしていればC7 dos-extendedを実行できると知りました。そこで[…]彼らは我々に連絡し、それらの拡張が正確に何であるかの仕様を入手しようとしました。どうやらそれらは文書化されていないようです。[…] それらはそれほど複雑ではなく、主にアプリケーション用にマッピングするMS-DOSおよびBIOSコールだけなので、Qualitasはそれらをリバースエンジニアリングするのに何の問題もありませんでした。 (新しい386MAXはベータ版ではコマンドラインからKRNL386を実行できましたが、最終製品では我々の足を引っ張らないようにその機能が無効にされたと思います。もちろん、386MAXはC7をサポートしています。)[…] ラルフさん、この仕様はDPMI委員会のメンバーに配布されましたか?[…] [デイブ・コール:] これは絶対に文書化すべきではありません。[…]
  6. ^ Microsoft (1990-10-31). Sokolov, Michael (ed.). "MS-DOS API EXTENSIONS FOR DPMI HOSTS Version Pre-Release 0.02" . ftp.freecalypso.org ( FTP ) (注釈付き再入力予備版) (1999-04-08公開) . 2016-05-23閲覧.(ドキュメントを表示するには、ヘルプ:FTPを参照してください)
  7. ^ Microsoft (1989). Sokolov, Michael (編). 「DOS PROTECTED MODE INTERFACE (DPMI) – SPECIFICATION Protected Mode API For DOS Extended Applications」 . ftp.freecalypso.org ( FTP ) (注釈付き、不完全な再構成版) (1999年4月8日公開) . 2016年5月23日閲覧(ドキュメントを表示するには、ヘルプ:FTPを参照してください)
  8. ^ a b c dゲロルト、ウルスマン;ワッパー、ベルンハルト。ヴィースベック、ヨハン (1991)。 「Die DPMI-Spezifikation – Eine Einführung」[DPMI 仕様の紹介]。Vorträge und Begleittexte zum 2. Entwicklerforum der Design & Elektronik zum Thema: PC-Architektur、1991 年 9 月 17 日、ミュンヘン[ 1991 年 9 月 17 日にミュンヘンで開催された PC アーキテクチャに関する第 2 回開発者フォーラムのプレゼンテーションと補足資料] (書籍) (ドイツ語) (第 1 版)。ミュンヘン、ドイツ: Markt & Technik Verlag Aktiengesellschaft。 p. 223.(注:このフォーラムはドイツの雑誌「Design & Elektronik」とインテルが主催しました。)
  9. ^ DPMI 委員会 (1991-03-12). DOS 保護モード インタフェース (DPMI) 仕様 – バージョン 1.0 – 保護モード DOS アプリケーション用アプリケーション プログラム インタフェース (API) (PDF) . 1.0. Intel . pp.  4– 5. Intel 注文コード 240977-001.オリジナル(PDF)から2013-05-31 日にアーカイブ。 2013-05-24に取得最初の DPMI プロトタイプは、Windows カーネルを拡張メモリで実行できるようにすることで Windows のパフォーマンスを向上させる一般的な取り組みの一環として、Lotus Corporation と Rational Systems からの情報提供を受けて、Microsoft によって Windows バージョン 3.0 用に開発されました。並行して、Intel は、マルチタスク環境、EMS エミュレータ、および DOS エクステンダのメーカーと協力し、拡張 VCPI 仕様で 80386 の仮想化および保護機能をフルに活用できるように取り組んでいました。 1990年2月、上記の活動に携わる関係者はDPMI委員会を設立し、プロテクトモードDOSアプリケーションのための業界標準を策定することに合意しました。委員会は1990年5月に最初の公開DPMI仕様バージョン0.9をリリースしました。
  10. ^ a b cシュナイダー、ステファニー (1994-06-17)。「Das Ende von DOS ist nur noch eine Frage der Zeit」[DOS の終焉は時間の問題]。コンピューターウォッチェ(ドイツ語)。ドイツ、ミュンヘン: IDG Business Media GmbH2022-01-02 のオリジナルからアーカイブされました2022-01-02に取得
  11. ^ 「ファイル: Windows Int 21h および NetBIOS の DPMI サポート」 .ナレッジベース. Microsoft . 2004-08-04 [1999-12-04]. KB65128. Q65128. 2020年2月20日時点のオリジナルからのアーカイブ。 2016年5月21日閲覧
  12. ^ Sokolov, Michael (1998-05-06). 「前回の投稿に対する訂正」 . lynx-dev . 2020年2月20日時点のオリジナルよりアーカイブ。 2020年2月20日閲覧
  13. ^シュルマン, アンドリュー;ブラウン, ラルフ D. ; マクシー, デイビッド; ミシェルズ, レイモンド J.; カイル, ジム (1994) [1993年11月]. 『Undocumented DOS: A programmer's guide to reserved MS-DOS functions and data structures - extending to include MS-DOS 6, Novell DOS and Windows 3.1 (第2版)』. マサチューセッツ州レディング:アディソン・ウェスリー. 194ページ . ISBN 0-201-63287-X(18+856+6ページ、3.5インチフロッピーディスク)正誤表:[1] [2]

さらに詳しい情報