Conventional Memory

ここでは,MS-DOSのアプリケーションでMemoryを確保する方法を紹介します.

MS-DOSゲームなどでは,起動したときにメモり不足で起動できないことがあります.と言うよりは,買ってきたままでは,ほとんどのMS-DOSゲームは起動できないはずです.このメモリー不足は物理的にメモリーを増設しただけで解決できるものではありません.この仕組みを私なり説明します.

まず,MS-DOSプロンプトからmemとタイプインしてください.メモリーがどのように使われているか分かります.さらに"/c"のオプションをつけると現在メモリに組み込まれているプログラムを一覧表示し,個々のプログラムがコンベンショナルメモリと上位メモリをどれだけ使用しているかがわかります.コンベンショナルの項目を見てみましょう.空きは何KBでしょうか?これがいわゆるコンベンショナルメモリ(メインメモリ)です.しかし,コンベンショナルメモリだけでは最近の巨大なアプリケーションを動かすには足りませんので,普通の(最近の)パソコンには拡張メモリが増設されています.一般にメモリーを増設するという時は,この拡張メモリのことを指します.MS-DOSで動作するプログラムは,通常,コンベンショナルメモリを使います.しかし,その容量はノーマルモードでは最大640KB,ハイレゾリューションモードでは最大768KBです.(もっとも,今ハイレゾを必要とする場合は少ないと思いますが・・・)ただし,MS-DOSのシステムがコンベンショナルメモリの一部を使いますので,実際に使用する容量はもっと少なくなります.ですがMS-DOS上で動く巨大なゲームはその上限に限りなく近い640KBのメモリーを要求してくるものが少なくありません.Windows上ではこの拡張メモリを思う存分使うことができるのですが,MS-DOSではそういうわけにはいきません.厄介なことに拡張メモリは単にメモリを増設しただけでは使うことはできないのです.

しかしその制約をうち破るためにいろいろな方法が考えれらてきました.その方法が,対応したデバイスドライバを組み込むことです.メモリの拡張方法にはいくつかありそれぞれの方法に応じてXMSドライバ,EMSドライバなどのデバイスドライバが用意されています.



◎XMS(eXtended Memory Specification)メモリを使う.

Config.sysをエディタで開いていください.先頭の行にDEVICE=A:\Windows\himem.sysと書き込みます.これで,XMSメモリを使うことができます.たいていのパソコンにはもうこの記述はあるはずです.

XMSメモリには次の3種類があります.

☆XMSメモリの種類

HMA(High Memory Area)
XMSメモリの最初の約64KBの領域です
EMB(Extended Memory Block)
XMSメモリのうち,HMAを除いた領域です.XMSドライバは,XMS対応のアプリケーションソフトにメモリが必要なときEMBメモリの空き領域からメモリを割り当てます.
UMB(Upper Memory Block)
上位メモリの未使用領域のことです.対応するドライバを使うとコンベンショナルメモリの一部のようにして使うことができます.
☆XMSメモリの利用法
○HMAの利用
通常,MS-DOSのシステムプログラムは,起動時にコンベンショナルメモリ内に読み込まれます.config.sys内に次のように記述すると,MS-DOSシステムの一部をHMA領域に転送することができます.

DOS=HIGH

このためMS-DOSのシステムの分だけコンベンショナルメモリの空き領域が増えます.これで50KBぐらいの空きはできたと思います.

○EMBメモリの利用

この領域は拡張メモリからHMAを除いた領域です.Windowsの快適な動作のためにはこの領域が多く必要です.

○UMBの利用

UMBには,コンベンショナルメモリと同様にデバイスドライバや常駐プログアムを置くことができます.このためUMBを利用するとコンベンショナルメモリの空きが大きくなります. まず,config.sys内に

DOS=UMB

と記述します.これでMS-DOSに上位メモリブロック(UMB)を管理させることができます.次に config.sys内の

DEVICE=

DEVICEHIGH=
に書き換えます.これでかなりコンベンショナルメモリを空けることができるでしょう.

○リアルモード・デバイスドライバ

config.sysによる組み込まれるDOS用のデバイスドライバをリアルモードデバイスドライバといいます.DEVICE=で始まる文字列がそれに当たります.メモリーをできるだけ確保しようと思ったら,これをできるだけはずすのが無難です.例えば,CDROMとかな漢字変換を組み込まないだけでもかなりメモリを開けることができるでしょう.WindowsでCDROMが使えないと困る,という人も心配はありません.Windows95/98で使われる32ビットプロテクトモードでは,これらの32ビットドライバはレジストリから読み込まれるからです.
また,32ビットプロテクトモードから実行されるMS-DOSプロンプトでも仮想デバイスドライバと呼ばれる機構により32ビットデバイスドライバが使用されますから,リアルモードの周辺機器ドライバは不要です.リアルモードドライバが必要となるのは,MS-DOSモードのときだけです.ですからMS-DOSモード時に使わないデバイスドライバ外しておいても問題ありません.

○MEMMAKERの利用

かつては640KBという少ないメモリーですが,その巨大な壁に向かって何度となく再起動しては,その結果を確かめたものでした.
しかし,MS-DOS6.2から便利なコマンドが追加されました.それが”MEMMAKER”コマンドです.これによって比較的,簡単にメモリーを確保できるようになりました.使い方は簡単,MS-DOSモードで起動して,(MS-DOSプロンプトではだめ)コマンドラインからmemmakerと打ち込むだけす.Win95/98でも問題ないです.是非やってみてください.