MS-DOSコマンド(コマンドプロンプト)の使い方のメモです。パソコンがトラぶったときは、なにかと重宝なコマンドライン操作。忘れないようにメモっています。

拡張メモリ(XMS・EMS)

| コメント(0) | トラックバック(0)

 Windows をはじめ、大きなプログラムを実行するためには、コンベンショナルメモリだけでは少なすぎて、メモリを増設する必要がありました(ソフトがどんどん進化したので、そういう要請もありましたし)。この増設したメモリが「拡張メモリ」と呼ばれるもので、メモリを増設したら同時に「対応したドライバの組み込み」を必要とする、ちょっとややこしいメモリです。

 どこがややこしいかというと、メモリの拡張方法にもいくつか種類があり、それぞれの方法に応じて「XMSドライバ」「EMSドライバ」というような、デバイスドライバを用意して、組み込まないと動かないからなんですね。

 ちなみに Windows 3.1では......というか、Windows では「拡張メモリ」は必須で、これがないと動きません。それこそ十年くらい前の、かわいらしい機能しかもっていなかったソフトじゃない以外、機能強化のためにアプリケーション・ソフト側が要請するメモリも大きくなっているので、拡張メモリの大きさが、ソフトの使い勝手のよさを、ある程度規定しているといってもいいんじゃないでしょうか。

XMSメモリ(eXtended Memory Specification) 

 このメモリは、拡張メモリをEMSメモリやコンベンショナルメモリの一部のように扱うことができます。このメモリには、三つの種類があります。

  • HMA (High Memory Area) :XMSメモリの最初の約64KB
  • EMB (Extended Memory Block) :XMSメモリから、HMAを除いた領域
  • UMB (Upper Memory Block) :上位メモリの未使用領域  

※MS-DOS6.2から追加された「MemMaker」機能は、UMBを効率的に利用するように設定してくれるという優れもの。でも、Windows95以降は、MS-DOSがベースじゃなくなったので、この便利な機能は姿を消しました。そういえば、コンピュータのシステム状況を詳しく調べる「MSD」コマンドも、今では使えないんですよね。(T_T)

XMSメモリドライバ:HIMEM.SYS
  •  DEVICE=A:\DOS\HIMEM.SYS と config.sys に記述する。

 ※SMARTDRV.EXE や EMM386.EXE などの他のメモリドライバを組み込む場合は、XMSメモリを確保してから、各種ドライバを組み込む必要があります。ということで、この HIMEM.SYS の組み込みは、config.sys の DEVICE 行の最初に記述する必要があるわけです。これを忘れるとひどい目にあうので、お忘れなく。

EMSメモリ(Expanded Memory Specification) 

 拡張メモリを使用するための規格の一つで、システム領域の上位メモリにページフレームという領域を作って、これを通じてXMSメモリの一部を1ページ16KB単位で使用することができます。要はEMSを使用することにより、システム領域のページフレームを経由して、XMSメモリのEMBを使う......みたいな感じですね。イメージわきますか?

 もともと、EMS ドライバは、一度コンピュータ起動時に設定した EMS のサイズは変更出来ないので、ソフトが使う最大容量を確保しなくちゃいけない運命を背負っていました。これじゃ大変なので(MS-Windows登場の際には足枷になった)、UMB + EMS という形で使うことになり、XMSってことで完全に統合された......らしいと聞きました。(^ ^;)

 MS-DOS対応のソフトだと、ちょっと使えるソフトはみんなEMS対応のソフトで、インストール時に config.sys に、EMSドライバを入れた覚えがあります。一太郎だとVer5とか6の頃ですね。Windows の時代に入ると、EMSメモリより、XMSメモリしか聞かなくなりました。

EMSメモリドライバ:EMM386.EXE
  •  DEVICE=A:\DOS\EMM386.EXE /P=64 /UMB /T=A:\DOS\EXTDSWAP.SYS  

 みたいに、必要に応じてEMM386.EXEを組み込んでもらえればOK。その際、まず最初に「XMSメモリ:HIMEM.SYS」を組み込まないと意味がないのでご注意を。なにはともあれ、config.sys にDEVICEで組み込めばいいわけです。

 ちなみに、「EMM386.EXE」は仮想8086モード用のEMSドライバで、「EMM.SYS」は汎用のEMSドライバ。同時に使用することはできません。

仮想86メモリドライバ(VMM386.EXE)

 ......というのもあった気がする。64MB以上だとこっちを使ったような気もする。んで、対応メモリはプロテクトメモリ......ということしか覚えていません。忘れました、前のことなんで。(^ ^;)

Growボタンをとりつけました(管理人からのお知らせ)




トラックバック(0)

トラックバックURL: http://www.causu.com/mt/mt-tb.cgi/50

コメントする


twitter




OpenID対応しています OpenIDについて