MS-DOSでは1MBytesのメモリー空間しかアクセスできません。ところがソフトによっては、
それ以上のメモリーを使いたい場合があります。そこで考え出されたのがEMSです。
MS-DOSではユーザーが使えるメモリーは640KBytesで、それ以降1MBytesまでの空間は
VRAMやROMなどが割り当てられています。そこで、CPUが管理するメモリーとは別に
メモリーを増設し、それを640KBytes以降のROM空間に割り当てます。しかしROM空間
といえども小さい領域なので、これを切り替えて使おうというわけです。これは
ノートにたとえられます。つまり、人間はノートの1ページしか見ることができません。
しかしページを切り替えることで、1ページ以上の紙面にメモしたり、読んだりすることが
可能になるわけです。
上図のように、EMSの論理ページをコンピュータ上の物理ページに割り当てます。
するとこのページを通して、EMSのメモリーにアクセスすることができます。CPUは
特に、EMSにアクセスしているとは意識しません。そして、別の論理ページにページを
めくると、また新たなページにアクセスすることができるようになります。この
ページは16KBytesの大きさで、変えることはできません。また、EMSのバージョンが
4.0未満は、物理ページは4ページ連続していなければなりませんが、4.0以降は、
離れたところに論理ページをとることもできます。
物理ページを実際のどの部分に置くかは、コンピュータの種類、拡張の仕方などに
よって異なります。なぜならばROMがどの部分にあるかによって、物理ページをどこに
置くことができるかが変わってくるからです。
なお、物理ページの場所のことをページフレームと呼びます。例えば、「ページフレーム
はC0000h番地から」などのように使います。
このようなEMSをハードウェアーEMSといいます。80286以降は、特別なEMSメモリーを
増設しなくても、CPUが1MBytes以上のメモリーを操作できますので、これをEMSのように
使うこともできます。これを仮想EMSといいます。ハードウェアーEMSは、EMSのために作られた
メモリーなのでEMSとしてしか使用できませんが、仮想EMSはXMSなど他の用途にも使用できます。
どちらのEMSも使い方の仕様は同じなので、ドライバーのバージョンが同じならば、
プログラマーは意識せずに使用できます。