【ページフォールト】
ページフォールト とは?
最終更新:
💡 本棚にない本を図書館の倉庫から取り寄せるようなメモリの仕組み
プログラムがアクセスした仮想メモリのページが、そのままでは使えない(物理メモリに対応付けられていない等)ときにCPUが発生させる例外。OSが対応付けやディスクからの読み込みを行えば処理を続行し、不正なアクセスならプログラムを止める。
📌 このページのポイント
ページフォールトって何なの?エラーが起きているの?
エラーというよりは「ちょっと待って、必要なデータがメモリにないから取りに行くね」という合図だよ。図書館で読みたい本が棚になくて、倉庫から取り寄せてもらうような感じだね。
どうしてメモリにデータがないことがあるの?
ページフォールトが起きるとどうなるの?
頻繁に起きると何が問題なの?
ページフォールトを減らす方法ってあるの?
ディスク読み込みを伴うものを減らすなら、一番シンプルなのは物理メモリを増やすことだね。あとはページ置換アルゴリズムの選択も重要で、LRUのように「最近使っていないページ」から追い出す方式だと、頻繁に使うページがメモリに残りやすく、アクセスの傾向によってはフォールトを減らせるよ。プログラム側でもデータのアクセスパターンを局所性が高くなるように工夫すると効果的なんだ。
もっと詳しく知りたい人へ
ページフォールトの回数が多いと、必ずパソコンの調子が悪いということ?
そうとは限らないよ。初めて使うページへの割り当てや、すでにメモリ上にあるページの対応付けなど、ディスクを読まずに済むソフトフォールト(マイナーフォールト)は普段から起きている。性能の目安にするなら、ディスクから読むハードフォールト(メジャーフォールト)が増えていないかを分けて見よう。
まとめ:ざっくりこれだけ覚えればOK!
「ページフォールト」って出てきたら「使おうとしたメモリのページがすぐ使えず、OSが用意しに行く合図」と思えればだいたいOK!
📖 おまけ:英語の意味
「Page Fault」 = ページ障害・ページ不在例外
💬 faultは「障害・欠陥」という意味だよ。ここではエラーそのものより、CPUが「このページはこのままでは使えない」とOSに知らせる例外を指すんだ