EMM386

EMM386
開発者MicrosoftIBMDRDatalight、FreeDOS チーム
初回リリース1988年、37~38年前
オペレーティング·システムMS-DOSPC DOSDR DOSROM-DOSFreeDOS
プラットフォームインテル 80386
タイプ拡張メモリマネージャ、コマンド

EMM386は、 MicrosoftMS-DOSIBMPC DOSDigital ResearchDR-DOSDatalightROM-DOS [ 1 ]の拡張メモリマネージャであり、 Intel 80386 CPUの拡張メモリを使用して拡張メモリを作成するために使用されます。FreeDOSでもEMM386.EXEが利用可能です。[ 2 ]

概要

EMM386.EXE は、メモリを上位メモリ領域(UMA)内の未使用ブロックにマップできるため、デバイス ドライバーと常駐プログラムを「上位にロード」して、従来のメモリを保持できます。

この技術は、おそらく 1986 年にCompaq Deskpro 386用のCompaq OEM MS-DOSに含まれていたCEMMの開発で初めて登場しました。Microsoftのバージョンは、1987 年にWindows/386 2.0に組み込まれて初めて登場し、1988 年にはMS-DOS 4.0でスタンドアロンの EMM386.SYS として登場しました。より柔軟な EMM386.EXE バージョンは、 1991 年にMS-DOS 5.0で登場しました。

EMM386はプロセッサの仮想8086モードを使用します。これにより、DOSアプリケーションによるメモリアクセスはプロセッサのMMU(386で導入)を経由するようになり、MMUが使用するページテーブルエントリはEMM386によって、上位メモリの特定の領域を拡張メモリ(EMM386が拡張メモリマネージャHIMEM.SYSを介して取得)にマッピングするように設定されます。この技術により、EMS(拡張メモリ)とUMBの両方が使用可能になりました。どちらもDOSアプリケーションからは上位メモリのように見えますが、実際には1MBを超える物理メモリ位置にマッピングされています。

386 拡張モードでの Windows セッション中は一時的にシャットダウンし、Windows の保護モードカーネルがその役割を引き継ぎます。

WindowsはGEMMIS APIを使用してEMM386.EXEからメモリ管理を引き継ぎます。グローバルEMMインポート仕様(GEMMIS)は、一部のメモリ管理ベンダーが利用できるドキュメント(「Windows/386ページングインポート仕様」)によってサポートされています。[ 3 ] [ 4 ] [ 5 ] [ 6 ]

GEMMIS APIを実装したメモリマネージャはごくわずかで、EMM386.EXE、Quarterdeck QEMM、Qualitas 386MAXHelix Netroom [ 3 ]DOSBox built-in DOSなどが含まれています。注目すべきはFreeDOSのメモリマネージャが欠けていることです。

FreeDOS のメモリマネージャ (HIMEMX.EXE、JEMM386.EXE、JEMMEX.EXE) はいずれも GEMMIS API を実装しておらず、JEMMxxx と連携して Windows を実行すると、メモリ管理の役割を引き継ぐことができないため、Windows の起動に失敗します。Windows MEWindows 98Windows 95Windows for Workgroups 3.1xWindows 3.xxはすべて起動に失敗し、JEMMxxx には以下のメッセージが表示されます。

現在インストールされている保護モードソフトウェアが動作している間はWindowsを実行できません 実行中。 
保護モードのソフトウェアを終了してから、もう一度試してください。 コンピュータを再起動する必要があるかもしれません。 

JEMMxxを使用すると、Windowsを強制的に標準モード(つまり、80386拡張モードではなく80286保護モード)に設定することで、Windows 3.xおよびWindows for Workgroups 3.1xを限定的な機能で実行できます。ただし、以下の3つの条件を満たす必要があります。

  1. XMSの合計サイズを64MBに制限
  2. EMSが有効になっている必要があります。NOEMSオプションは使用できません。例:JEMMEX X2MAX=65422
  3. Windowsは標準モード(WIN /SまたはWIN /2)でのみ動作します。

標準モードの Windows は機能が制限されており、仮想メモリが不足しており、SYSTEM.INI の [386Enh] セクションがスキップされ、[386Enh] 内のデバイス ドライバーは読み込まれないことに注意してください。

歴史

EMM386 バージョン履歴[ 7 ] [ 8 ] [ 9 ]
同梱日付ファイル名バージョン
MS-DOS 4.011988年11月EMM386.SYS4.00
ウィンドウズ 3.01990年5月EMM386.SYS4.10.0419
MS-DOS 5.01991年6月EMM386.EXE4.20.06x
IBM PC DOS 5.01991年6月EMM386.EXE4.20.06x
IBM PC DOS 5.021992年9月EMM386.EXE4.33
MS-DOS 5.00a1992年11月EMM386.EXE4.33
ウィンドウズ 3.11992年4月EMM386.EXE4.44
Windows for Workgroups 3.11992年10月EMM386.EXE4.44
MS-DOS 6.01993年3月EMM386.EXE4.45
IBM PC DOS 6.11993年6月EMM386.EXE4.45
MS-DOS 6.21993年9月EMM386.EXE4.48
ウィンドウズ3.111993年11月EMM386.EXE4.48
Windows for Workgroups 3.111993年11月EMM386.EXE4.48
MS-DOS 6.211994年3月EMM386.EXE4.48
IBM PC DOS 6.31994年4月EMM386.EXE4.48
MS-DOS 6.221994年6月EMM386.EXE4.49
IBM PC DOS 7.01995年4月EMM386.EXE4.50
IBM PC DOS 20001998年5月EMM386.EXE4.50
ウィンドウズ951995年8月EMM386.EXE4.95
ウィンドウズ981998年6月EMM386.EXE4.95

参照

参考文献

  1. ^ 「Datalight ROM-DOS ユーザーズガイド」(PDF) . www.datalight.com .
  2. ^ Platt, Robert; Spiegl, W. (2008) [2003]. 「コマンド: EMM386」 . 2017年8月23日時点のオリジナルよりアーカイブ2015年10月21日閲覧。
  3. ^ a b Okazaki, Taku; Schulman, Andrew (1994-09-01). 「Windows Global EMM Import Interface」 . Dr. Dobb's Journal . Undocumented Corner (9). 2017年8月23日時点のオリジナルよりアーカイブ。 2015年10月21日閲覧[1] 2014年5月29日archive.todayアーカイブ[2] [3]
  4. ^ Brown, Ralf D. ; Schulman, Andrew (1994年7月). 「QPI: The QEMM-386 Programming Interface」 . Dr. Dobb's Journal . Undocumented Corner. San Mateo, California: 123– 131. 2017年8月23日時点のオリジナルよりアーカイブ。 2017年8月23日閲覧
  5. ^ Lespinasse, Michel. 「メモリマネージャをキックアウトする方法」 . アミアン、フランス: Walken / Impact Studios. 2017年1月4日時点のオリジナルよりアーカイブ。 2015年10月21日閲覧
  6. ^ポール、マティアス R. (2002-08-13)。「Suche freien Speicherbereich unterhalb von 1 MB, der nicht von OS überschrieben wird」 (ドイツ語)。ニュースグループde.comp.lang.assembler.x862017-09-04 のオリジナルからアーカイブ2017 年 9 月 3 日に取得
  7. ^ 「Q98768 - MS-DOS 6.x および EMM386.EXE のトラブルシューティング」
  8. ^ 「EMM386 トラブルシューティングおよび技術情報 (78557)」
  9. ^ 「EMM386 および HIMEM.SYS の初期バージョン (74977)」