2010年12月9日木曜日

ページファイルって何?

この頃、調査し続けている内容からです。

windowsの話でMacやUNIX系のユーザの皆さんには申し訳ないのですが、
ページファイルというものがあります。

簡単に言いますと、メモリ上のデータをファイルに退避させておくようなものです。
実際には、メモリ領域不足などの状況が発生した時に、メモリ上のデータをページファイルに退避させることでメモリ領域を確保し、
退避させたデータが必要になったら戻す(またはページファイルからデータを読み込む?)ということをしています。

これだけ見ると、メモリ容量の少ないマシンでもハードディスクの容量が十分にあればよい(ページファイルは特殊なファイル⇒ハードディスクの容量に余裕があれば大きなページファイルも作れる)わけで、
古いマシンや安価なマシンを利用している人には福音と言えます。


ところが、このページファイルが壊れることがあります。
この場合がかなり原因特定が厄介です。
というのも、メモリとページファイルは同じように扱っているのは上述したとおりです。
同じように扱っているということは、どちらが原因でエラーが発生しているかの特定が難しいということになります。

さらに困るのがメモリというシステム上重要な部分のエラーに直結するということ。
ページファイル破損から、すぐにブルースクリーン(デスブルー)が出てしまうのです。

何故か? 不正なメモリ情報をプログラムに与えると、最悪の一例としてプログラムの暴走というものが発生します。
さすがにwindowsもその辺はある程度防いでくれるのですが、防いだ結果がブルースクリーンに・・・
折角作ったデータがパァ になるわけです。
(データが飛ぶくらいで助かる、という考え方ができる方は少ないと思いますし・・・)


では、ページファイルの破損を防ぐ方法はあるのか?
2通りほど方法はあります。

一つ目は、そもそもページファイルを使わないことです。
メモリ上で全ての処理を行わせることになるので、メモリ容量は要求されますが、高速な処理が期待できます。

二つ目は、シャットダウン時にページファイルを削除してしまうことです。
これは、レジストリの設定変更だけでできますので(それも1つのキーの設定だけで)比較的容易です。ただし、シャットダウン(電源をOFFにする)前にページファイルが壊れると・・・ ブルースクリーンが出る可能性があります。


・・・と、ページファイルに着目して軽く書いてみたわけですが、調査対象は広がる一方でかなり困っていたりします。
メモリ関連のトラブルというのは再現性が低いのが特徴なのです。
再現性=こうすれば必ず現象が起こる! というのがないので・・・
想定される問題に対する対策を行って経過観察してみるくらいしかないのですよねぇ・・・

さて、やってみた対策が効を奏していることを祈りたいと思います。

0 件のコメント:

コメントを投稿