Expanded Memory Specification
"EMSマネージャ"を通じてメモリ空間の取得・開放、バンク切り換え等を行う。
16KBytes単位でバンク切替を行い、これをページと呼ぶ。
8086でアクセス可能な1Mbytesの範囲内に"ページフレーム"区画を設ける。
ページフレームは、ほとんどの場合4ページ = 64Kバイト(バージョン4.0)の連続した領域。
EMSマネージャは、要求のあったページをページフレームに出現させる。
そのため、各種操作は隠蔽され、ユーザは気にする必要が無い。
対応するメモリ総量は32Mバイト(2048ページ)まで。
主な版として3.2, Enhanced EMS 3.2, 4.0がある。4.0では特にWindows 2.x向けの拡張を行った。
CPUやメモリバスの変遷に伴い、いくつかの実装方式があった。
80386以降のCPUで使用可能。IA-32の仮想86モードを用いてEMSを実現する。EMSマネージャは、CPUのメモリマッピング機構を用いて、(プログラムから見て)ページフレームにプロテクトメモリ上のページを出現させる。ソフトウェアEMS同様の汎用性があり、ページ切替も高速。また、汎用拡張バスではなくメモリ専用バス上のメモリを使用可能なために最も高速である。ただし、仮想86モードはプロテクトモードの1タスクである(独立した動作モードではない点に注意)ため、プロテクトモードを使用した際に発生するのと同等の処理速度の低下がある。特に割り込みとI/Oポートへのアクセスでこの速度の低下が顕著となる。
MS-DOS用ソフトウェアの互換性のために、Windows 9x系まではMS-DOSモード用にEMM386が用意されていた。また仮想86モードに対応したWindowsのDOSプロンプトでは、Windowsの機能により仮想EMSが提供される。特にMS-DOSモードを持たないWindows NT系ではDOSプロンプト上で動作するアプリケーションに限られるが、その後のWindowsにおいてもEMSの設定項目が存在する。