【ページフォールト】

ページフォールト とは?

💡 本棚にない本を図書館の倉庫から取り寄せるようなメモリの仕組み
📌 このページのポイント
ページフォールトの仕組み プロセス ページ参照 ページ テーブル 有効ビット=0 → ページ不在! 物理メモリ ページ1 ページ3 空き ページ5 ⚠ ページフォールト! OS が割り込み処理 ディスク (スワップ領域) 読み込み ロード完了 メモリ上のページ 不在ページ ディスクから読み込み
ページフォールトのイメージ
ひよこ ひよこ

ページフォールトって何なの?エラーが起きているの?

ペンギン先生 ペンギン先生

エラーというよりは「ちょっと待って、必要なデータがメモリにないから取りに行くね」という合図だよ。図書館で読みたい本が棚になくて、倉庫から取り寄せてもらうような感じだね。

ひよこ ひよこ

どうしてメモリにデータがないことがあるの?

ペンギン先生 ペンギン先生

仮想メモリの仕組みで、物理メモリに乗り切らないデータはディスク(スワップ領域)に退避されているんだ。プログラムは仮想アドレスでアクセスするから、実際にそのページが物理メモリにあるかどうかはアクセスしてみないとわからないんだよ。

ひよこ ひよこ

ページフォールトが起きるとどうなるの?

ペンギン先生 ペンギン先生

OSが割り込みを受けて、ディスクから該当ページを物理メモリに読み込むんだ。読み込みが終わったらプログラムは何事もなかったかのように実行を再開するよ。ただし、ディスクアクセスはメモリアクセスの約10万倍遅いから、頻繁に起きると相当遅くなるんだ。

ひよこ ひよこ

頻繁に起きると何が問題なの?

ペンギン先生 ペンギン先生

ページフォールトが連続して起きる状態をスラッシングと呼ぶんだ。CPUがほとんどの時間をページの入れ替え処理に費やして、本来の計算がまったく進まなくなるよ。パソコンが異常に遅くなってディスクがカリカリ鳴り続ける、あの状態だね。

ひよこ ひよこ

ページフォールトを減らす方法ってあるの?

ペンギン先生 ペンギン先生

一番シンプルなのは物理メモリを増やすことだね。あとはページ置換アルゴリズムの選択も重要で、LRUのように「最近使っていないページ」から追い出す方式だと、頻繁に使うページがメモリに残りやすくてフォールトが減るよ。プログラム側でもデータのアクセスパターンを局所性が高くなるように工夫すると効果的なんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ページフォールト」って出てきたら「必要なデータがメモリになくてディスクから取り寄せること」と思えればだいたいOK!
📖 おまけ:英語の意味
「Page Fault」 = ページ障害・ページ不在例外
💬 faultは「障害・欠陥」という意味で、必要なページがメモリに「欠けている」状態を指すんだよ
← 用語集にもどる