■ MS-DOS補足(メモリについて)
パソコンは、とにかく「メモリ」にプログラムやデータを読み込んで(展開して)仕事をします。だからこそ、メモリをどう使うかが重要になり、その割り振りなどを「config.sys」や「autoexec.bat」などで、起動のたびに整える必要があったわけです。
MS-DOS とメモリの関係
具体的に、MS-DOSが活用するメモリにはどのようなものがあり、それぞれどんな役目を担っているのでしょうか? 大きく大別すると、「コンベンショナルメモリ(メインメモリ)」と「拡張メモリ」に分類できます。
※システムで使用されているメモリについて、利用可能なメモリ領域や現在の利用状況などを確認したい場合は、「mem」コマンドを使用してください。(Windows 95 以降だと、MS-DOSがベースじゃないから、MEM コマンドで表示される情報に、一部、MS-DOS 時代とは異なる表記がありますが、大まかな点では同じなので、見方はわかると思います。Windows XPだと、「MS-DOSプロンプト」じゃないと使えませんが……一応、何とか使えます。制限あるけど。
< SMARTDrive >
MS-DOSで標準サポートされている、メモリの有効利用のための「ディスキャッシュ」機能で、これは、XMSメモリを一時的にディスクキャッシュ用メモリとして使用し、処理効率をぐう−ん高めるという優れものです。
ディスクキャッシュというのは、ディスクから読み込んだデータをメモリに蓄えることにより、次に同じデータが必要になったとき、ディスクからじゃなくメモリから直接読み込むため、データの読み書きがものすごく早くなるというもの。SMARTDRV.EXEを組み込むことにより、この機能を使うことができます。ただ、Windows の時代になり、MS-DOSをベースに動く時代じゃなくなったので、今ではこの機能もなくなってしまいました。
コンベンショナルメモリ(メインメモリ)
コンベンショナルメモリは、デバイスドライバを組み込まなくても使用できるメモリで、容量はノーマルモードで最大640KB、ハイレゾリューションモードでは最大768KBなんですが……MS-DOSのシステムがここのメモリを一部使用しているので、実際使用できるのは、もうちょっと少ない容量になってしまいます。MS-DOSで動作するプログラムは、通常このメモリを使っています。
※こういう「メインとなるべきメモリ」なので、コンベンショナルメモリの節約に、config.sys に「DOS=HIGH,UMB」などの一文を入れたりして、なるべくこのメモリを広く使おうと、格闘しているわけですね(この一文を入れると、MS-DOSのシステムが、XMSメモリのHMA領域に移動してくれる)。
拡張メモリ
Windows をはじめ、大きなプログラムを実行するためには、コンベンショナルメモリだけでは少なすぎて、メモリを増設する必要がありました(ソフトがどんどん進化したので、そういう要請もありましたし)。この増設したメモリが「拡張メモリ」と呼ばれるもので、メモリを増設したら同時に「対応したドライバの組み込み」を必要とする、ちょっとややこしいメモリです。
どこがややこしいかというと、メモリの拡張方法にもいくつか種類があり、それぞれの方法に応じて「XMSドライバ」「EMSドライバ」というような、デバイスドライバを用意して、組み込まないと動かないからなんですね。
ちなみに Windows 3.1では……というか、Windows では「拡張メモリ」は必須で、これがないと動きません。それこそ十年くらい前の、かわいらしい機能しかもっていなかったソフトじゃない以外、機能強化のためにアプリケーション・ソフト側が要請するメモリも大きくなっているので、拡張メモリの大きさが、ソフトの使い勝手のよさを、ある程度規定しているといってもいいんじゃないでしょうか。
< XMSメモリ(eXtended Memory Specification) >
このメモリは、拡張メモリをEMSメモリやコンベンショナルメモリの一部のように扱うことができます。このメモリには、三つの種類があります。