記事一覧へ戻る

ページフォールト

初級エンジニア想定レベル |

1. ページフォールトとは

**ページフォールト(Page Fault)**とは、

仮想記憶方式において、CPUが参照しようとしたページが主記憶(RAM)上に存在しない場合に発生する例外(割込み)

のことです。

OSが管理する仮想アドレス空間物理メモリの不一致が原因で発生します。



2. 前提:仮想記憶とページング方式

仮想記憶の概要

  • プロセスには大きな仮想アドレス空間が割り当てられる

  • 実際に物理メモリに置くのは「使用中の一部だけ」

  • 未使用部分は**補助記憶装置(HDD/SSD)**に退避

ページング方式

  • 仮想アドレス空間を固定長のページに分割

  • 物理メモリ側はページフレームに分割

  • 対応関係はページテーブルで管理


3. ページフォールト発生の流れ(超重要)

試験でよく問われる処理手順です。

  1. CPUが仮想アドレスを生成

  2. MMU(Memory Management Unit)がページテーブルを参照

  3. 該当ページが主記憶に存在しないことを検出

  4. ページフォールト割込み発生

  5. OSが制御を取得

  6. 必要なページを補助記憶から主記憶へロード

  7. ページテーブルを更新

  8. 中断していた命令を再実行

👉 ポイント
ページフォールトはエラーではなく正常な制御処理


4. ページフォールトの種類(試験頻出)

① メジャーページフォールト(Major Page Fault)

  • ページが補助記憶装置に存在

  • ディスクI/Oが発生

  • 処理が遅い

② マイナーページフォールト(Minor Page Fault)

  • ページは既に主記憶上に存在

  • ただしページテーブルに未登録

  • ディスクI/Oなし

  • 比較的高速

※ 応用情報では「ディスクI/Oが発生するかどうか」が判断軸


5. ページフォールトとスラッシング

スラッシング(Thrashing)

  • ページフォールトが頻発

  • CPUがほぼページ入替処理だけを行う

  • 実質的な処理性能が極端に低下

原因

  • 主記憶容量不足

  • 同時実行プロセス過多

  • 作業セットが主記憶に収まらない


6. ページフォールトを減らす工夫

OS側の対策

  • 作業セット方式

  • ページ置換アルゴリズム(LRUなど)

  • プロセス数の制御

ページ置換アルゴリズム例(超頻出)

アルゴリズム内容
FIFO最初に入ったページを追い出す
LRU最も長く使われていないページ
LFU使用回数が最少のページ

👉 ページフォールト削減に有効なのは LRU


7. 応用情報試験での典型的な問われ方

よくある設問パターン

  • 「ページフォールトが発生する条件はどれか」

  • 「ページフォールト発生時の処理順」

  • 「スラッシングの説明として正しいもの」

  • 「ディスクI/Oが発生するのはどれか」

キーワード暗記用まとめ

  • 仮想記憶

  • ページテーブル

  • 主記憶に存在しない

  • 割込み

  • 補助記憶装置

  • 再実行


8. 一文で説明できるように(試験用)

ページフォールトとは、仮想記憶方式において、CPUが参照したページが主記憶上に存在しない場合に発生する割込みであり、OSが補助記憶からページを読み込むことで処理を継続する。