| 開発者 | Microsoft、IBM、DR、Datalight、FreeDOS チーム |
|---|---|
| 初回リリース | 1988年、35~36年前 |
| オペレーティング·システム | MS-DOS、PC DOS、DR DOS、ROM-DOS、FreeDOS |
| プラットフォーム | インテル 80386 |
| タイプ | 拡張メモリマネージャ、コマンド |
EMM386は、MicrosoftのMS-DOS、IBMのPC DOS、Digital ResearchのDR-DOS、DatalightのROM-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 アプリケーションには上位領域のメモリのように見えますが、実際には 1 MB を超える物理メモリ位置にマップされています。
386 拡張モードでの Windows セッション中は一時的にシャットダウンし、Windows の保護モードカーネルがその役割を引き継ぎます。
Windows は GEMMIS API を使用して EMM386.EXE からメモリ管理を引き継ぎます。グローバル EMM インポート仕様(GEMMIS) は、一部のメモリ マネージャ ベンダーが利用できるドキュメント (「Windows/386 ページング インポート仕様」) によってサポートされています。[3] [4] [5] [6]
GEMMIS APIを実装したメモリマネージャはごくわずかで、それを含むものとしてはEMM386.EXE、Quarterdeck QEMM、Qualitas 386MAX、Helix Netroom [3]、DOSBox組み込みDOSなどがあります。注目すべきはFreeDOSのメモリマネージャが欠けていることです。
FreeDOS メモリ マネージャ (HIMEMX.EXE、JEMM386.EXE、JEMMEX.EXE) はいずれも GEMMIS API を実装しておらず、Windows はメモリ管理の役割を引き継ぐことができないため、JEMMxxx と連動して実行しているときに Windows の起動に失敗します。Windows ME、Windows 98、Windows 95、Windows for Workgroups 3.1x、およびWindows 3 .xx はすべて失敗し、JEMMxxx には次のメッセージが表示されます。
現在インストールされている保護モードソフトウェアが動作している間はWindowsを実行できません 実行中。
保護モードのソフトウェアを終了してから、もう一度試してください。 コンピュータを再起動する必要があるかもしれません。
JEMMxx を使用すると、Windows に標準モード (つまり、80386 拡張モードではなく 80286 保護モード) の使用を強制することで、Windows 3.x および Windows for Workgroups 3.1x を制限された機能で実行できます。次の 3 つの条件が必要です。
- XMSの合計を64MBに制限する
- EMS を有効にする必要があり、NOEMS オプションは使用できません。例: JEMMEX X2MAX=65422
- Windowsは標準モード、WIN /SまたはWIN /2でのみ動作します
標準モードの Windows は機能が制限されており、仮想メモリが不足しており、SYSTEM.INI の [386Enh] セクションがスキップされ、[386Enh] 内のデバイス ドライバーは読み込まれないことに注意してください。
歴史
参照
参考文献
- ^ 「Datalight ROM-DOS ユーザーズ ガイド」(PDF) . www.datalight.com .
- ^ Platt, Robert; Spiegl, W. (2008) [2003]. 「コマンド: EMM386」。2017年8月23日時点のオリジナルよりアーカイブ。2015年10月21日閲覧。
- ^ ab Okazaki, Taku; Schulman, Andrew (1994-09-01). 「Windows グローバル EMM インポート インターフェイス」。Dr . Dobb's Journal。Undocumented Corner (9)。2017-08-23 のオリジナルからアーカイブ。2015-10-21に取得。[1] 2014年5月29日にarchive.todayにアーカイブされました[2] [3]
- ^ Brown, Ralf D. ; Schulman, Andrew (1994 年 7 月). 「QPI: The QEMM-386 Programming Interface」. Dr. Dobb's Journal . Undocumented Corner. サンマテオ、カリフォルニア州: 123–131. 2017 年 8 月 23 日時点のオリジナルよりアーカイブ。2017 年 8月 23 日閲覧。
- ^ Lespinasse, Michel. 「メモリ マネージャーをキックアウトする方法」。フランス、アミアン: Walken / Impact Studios。2017 年 1 月 4 日時点のオリジナルよりアーカイブ。2015年 10 月 21 日閲覧。
- ^ ポール、マティアス R. (2002-08-13)。 「Suche freien Speicherbereich unterhalb von 1 MB, der nicht von OS überschrieben wird」(ドイツ語)。ニュースグループ: de.comp.lang.assembler.x86。 2017-09-04 のオリジナルからアーカイブ。2017 年 9 月 3 日に取得。
- ^ 「Q98768 - MS-DOS 6.x および EMM386.EXE のトラブルシューティング」。
- ^ 「EMM386 トラブルシューティングおよび技術情報 (78557)」。
- ^ 「EMM386 および HIMEM.SYS の初期バージョン (74977)」。
