2GBのメモリを積んだノートで出る「システムリソースが不足するため、APIを終了できません。」とはなんぞや

XWIN II Web Page (2006年3月の巻頭言)

メモリを2GB搭載したノート(PX/410DL)を休止状態にしようとすると、時たま表示されその後休止状態が利用できなくなる謎のエラーシステムリソースが不足するため、APIを終了できませんの正体が分かったというお話。ちょっと長いけれど引用させてもらいます。

この問題が、Windows XP以前のWindows 2000では発生するのかどうかを今さら検証する元気はない。ただ、確実に言えることは、Windows XPとWindows 2000のハイバネーションの実装は異なっており、かなりトリッキーなことをWindows XPが行っている可能性が高いということが、この問題を解くヒントとなる。

その間接的証拠は、Windows XPの方が圧倒的にハイバネーション処理の時間が短くなっているという点にある。Windows 2000は、物理メモリの内容をほぼそのままHDDに記録したのに対し、Windows XPは、物理メモリの内容を圧縮し、コンパクトな状態にしてHDDに記録している。その他にも、利用していないメモリ内容の記録はしない等、ハイバネーションを高速化するための様々な工夫を行っている。無論、細分化された物理メモリ領域をひとまとめにするようなことも、処理の高速化のために行われているに違いない。

そうなると、2GBもの物理メモリを搭載したPCにおいては、ハイバネーション処理の過程で実行されるであろう、「物理メモリの内容を圧縮し、コンパクトな状態にしてHDDに記録」するという流れの中で、圧縮したデータを一時的に物理メモリに展開する際、長大な連続した物理メモリ領域が必要になる。それほど多くのメモリを搭載していなければ、連続した物理メモリ領域をあまり必要としない。少ないメモリであっても、連続したメモリ領域をあまり確保しなくてよいので、このような問題は起こりにくい。

しかし、物理メモリが2GBもあると、当たり前だが仮想メモリ(=HDD)を使うよりも物理メモリにプログラムやデータがより多く展開されるようになる。そのため、それらは長大で連続した物理メモリ領域がなければ、その内容を圧縮することが結果としてできなくなり、HDDに記録すべきデータも用意できない。つまり、ハイバネーション処理ができなくなる、というわけである。やたらと広大な物理メモリ空間をたくさん利用したはいいが、それを圧縮するのに必要となる長大な連続物理メモリ空間が確保できないというジレンマに陥っているのだろう。そう、エラーメッセージ中にいうシステムリソースとは、物理メモリそのもの、より具体的にいえば、連続した物理メモリ領域というわけである。

なるほど。こういう説明を見ると何とも納得できますね。Microsoft:KB909095にも同様の説明が変な日本語で書かれてますし(笑)
修正は、そのページから辿って、Download details: Update for Windows XP (KB909095)をダウンロード。これをインストールすれば解消されるのかな。
結構気になっていたので、これで解消されると非常に嬉しいです。