QEMM
QEMM (Quarterdeck Expanded Memory Manager) は、クォーターデックが開発したMS-DOS用メモリマネージャであり、サードパーティー製のこの類のプログラムとしては(海外では)最も広く使われた。
製品
[編集]当初はQEMM-386と呼ばれ、これを補完する製品としてQRAMがあった。QRAMはIntel 80286を使いチップス・アンド・テクノロジーズの特定のチップセットを使ったマシンで同様の機能を提供した。Pentium が登場すると386は名称から消えた。QEMM-386とDESQviewは連携して動作し、同梱して販売される場合はDESQview 386という製品名になっていた。
QEMMは、UMA、EMS、XMSへのアクセスを提供する。DOSプログラムは大量のコンベンショナルメモリを必要とすることが多く、QEMMはプログラムをUMBやHMAにロードすることでコンベンショナルメモリを空けることができる。Lotus 1-2-3、初期のMicrosoft Windows、各種ゲームなど多数のプログラムがEMSやXMSメモリを使っていた。
競合製品
[編集]主な競合製品としては、海外ではBlueMax/386MAX、HeadRoom/NetRoomなどがあった。
1987年11月にリリースされたコンパックのDOS 3.31は、DOSとして初めてQEMM-386のような技術を導入した。これをCEMMと呼んでいる。QEMMは世界初の仮想86モードを使ったメモリマネージャ製品であった。
DOSにおける同等機能
[編集]マイクロソフトは同等のやや単純化したメモリマネージャを1989年のMS-DOS 4.01でリリースした。XMS用のHIMEM.SYSとEMS 用のEMM386.EXEである。それ以前のWindows/386 2.1にもEMS機能は組み込まれていたが、Windowsセッション内でのDOSウィンドウでのみ使えるようになっていた。これらのバージョンではUMBを生成できなかった。ベンダー固有でないDOSとして初めてUMB技術を提供したのは、デジタルリサーチのDR-DOS 5.0(1990年)であった。MS-DOSがUMBを提供したのは、1991年の5.0が最初である。MS-DOSのEMM386は先にHIMEMをロードしておく必要があるが、DR-DOSのEMM386は両方の機能を備えており、独立したXMSドライバを必要としなかった。ただし、80286ベースのマシンではXMSドライバ (HIDOS.SYS) が必要とされていた。
DR-DOSとMS-DOSのメモリマネージャはどちらもQEMMに比較すると貧弱だった。例えば、どちらもUMBは手作業で発見して含める必要があったが、QEMMは自力でこれを行っていた。QEMMはEMSとXMSへのメモリ割り当てを事前に設定する必要がなく、立ち上げ時の設定をいじる必要がなかった。しかし、マイクロソフトはMS-DOS 6でUMBの最適化を自動化し、これによってQEMMの市場シェアは低下していった。
Windowsへの移行
[編集]DOSプログラムが主流の時代はQEMMはよく使われたが、Windowsが主流になるにつれてあまり使われなくなっていった。最終版のQEMM 97はWindows 95や後のWindows 98/MEとも互換性を保っていたが、DOSアプリケーションそのものがほとんど使われなくなっていたため、DOS用のメモリマネージャもほとんど使われなくなった。
Windows 3.0以降、386エンハンストモードで起動されるようになったため、メモリマネージャはWindows起動時にシャットダウンされる。実際、複数のプロテクトモードのカーネルが同時に動作することはできない。従って、QEMMはWindowsと同時に動作しているわけではない。Windows立ち上げ時のシャットダウンシーケンスの中で、メモリマネージャはWindowsに対して特定のVxD型デバイスドライバのロードを指示し、それがWindowsセッション内でのメモリマネージャ機能を提供する。例えば、QEMMにはWINHIRAM.VXDとWINSTLTH.VXDが同梱されていた。これらはWindowsに対して確立したメモリマッピング情報を通知し、Windowsがそれをインポートするようになっていた(これをGlobal EMM importと呼ぶ)。
QEMM 97では、Magna RAMというメモリ圧縮ソフトのサブセットが搭載されており、物理メモリの圧縮に加え、データを圧縮した状態でスワップアウトさせCPU負荷はかかるがバス帯域消費量は減るというアーキテクチャを採用していた。
また、Live Updateと呼ばれる自動オンラインアップデート機能は、その後CleanSweepを介してノートン・インターネットセキュリティなどに搭載され、今なお活躍している。