#171 リソースとの飽くなき戦い(背景編)

2001/06/17

<前目次次>


 その昔、パソコンで広く使われていたOSであるMS-DOSには「640kbyteの壁」というものがあった。これは、MS-DOSが管理できるメインメモリの上限が640kbyteしかなかったため、すべてのプログラムはメインメモリの使用量を640kbyte以内に納めなくてはならなかった、というものである。実際には、OS自身が常駐して使用する部分が少なからずあるため、プログラムが使えるメインメモリはその残りの部分ということになる。

 日本語環境の場合、入力した仮名文字を漢字に変換するIMEが不可欠であったため、これらが常駐する環境ではその制限は更に厳しいものとなった。これらを回避するために、EMSやUMBなどという特別なメモリ領域を利用する方法が開発され、またメインメモリの容量を1kbyteでも大きくするためのテクニックがいろいろと考え出された。それはさながらパズルのようなおもしろさがあり、中にはメインメモリを1kbyteでも広く空けることそのものが目的化しているような人もあったが、いずれにせよ、不自由な環境であることに違いはなかった。

 Windowsが普及した今では、プログラムは640kbyteの制限から解放され、それとともにアプリケーションもどんどん高機能化するとともに肥大化していったのだが、今度は別の制限が問題になってきた。それが「リソース」と呼ばれる特殊なメモリ領域の制限である。

 リソースには大きく分けて、メニューやウィンドウの管理に使用されるUSERリソースと、画面描画のために使用されるGDIリソースと呼ばれるものがあるが、いずれも数十kbyteの大きさしかない。しかもこれらのメモリは各アプリケーション共通で使い回される。各アプリケーションは、これらのリソースの一部を利用し、終了すると同時にOSに返すという仕様になっている、のが建前なのだが、中には使ったリソースを返さない「行儀の悪い」アプリケーションも存在する。(しかも当のMSが作っているアプリケーションがそうだったりするんだなこれが。)このためWindowsは、立ち上げ後ずっと動かし続けている限り少しずつリソースを食いつぶしていく。リソースが極端に不足すると、アプリケーションが強制終了させられたりするなど、システム全体が不安定になってしまう。

 従ってWindowsを安定して使うためには、余計なリソースを消費しないよう気を配る必要がある。ちなみに現在のリソース空き容量を確認するには、マイコンピュータを右クリックし「プロパティ」−「パフォーマンス」でチェックするか、Windowsメニューから「プログラム」−「アクセサリ」−「システムツール」−「リソースメーター」でチェックすることができる(後者はリソースメーターがインストールされている必要あり)。Windows起動直後で最低でも70%の空きは欲しいところだが、ノートパソコン、特にF通やN電製の製品の中には、立ち上げ時ですでに50%を切っているようなものもある。このようなパソコンでは、ウィンドウを数個立ち上げるだけで途端にシステムが不安定になる可能性がある。

 MS-DOSの「640kbyteの壁」と同様、リソースの絶対量を増やす術は残念ながらない。これはたとえメモリを倍に増設してもダメである。これは、Windows3.1からWindows9x・Meまで脈々と引き継がれたWindowsの由緒正しい(!?)アキレス腱である。しかもOSがバージョンアップするとともに、OSそのもののリソース消費量が大きくなってきており、安定性が悪くなってきているという皮肉な事態を招いている。ちなみにWindows2000やNTでは、リソースはアプリケーションごとに割り当てられるため、基本的にリソース不足は発生しない。

 このように、リソースとは文字通りWindowsの有限な「資源」であるので、その資源を無駄に食い潰さない工夫が必要である。ということで、次回はWindows安定稼働に不可欠な、リソース節約の方法をいくつか紹介しようと思う。


<前目次次>