情報処理試験を勉強していると、「ページフォールトって何が起きてるの?」と引っかかる場面があります。この記事では、ページフォールトの意味・発生時の処理の流れ・試験での出題パターンまでを一気に整理します。
対象試験と出題頻度
ページフォールトは、基本情報技術者・応用情報技術者で出題されるテーマです。
OSの仮想記憶管理に関する問題の中核となるキーワードであり、ページ置換アルゴリズムやスラッシングとセットで出題されます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★☆☆
ランクB(標準)覚えておくと有利
用語の定義
ページフォールト(Page Fault)とは、一言で言うと
「プログラムがアクセスしようとしたページが主記憶上に存在しないときに発生する割込み」
のことです。
イメージとしては、「本棚に目的の本がなくて、倉庫まで取りに行くこと」です。
手元の本棚(=主記憶)に読みたい本(=ページ)がない。
そこで倉庫(=補助記憶装置)まで取りに行く必要が生じます。この「本棚にない!」と気づいた瞬間がページフォールトです。
📊 ページフォールトの基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Page Fault |
| 割込みの分類 | 内部割込み(プログラムの実行が原因で発生) |
| 発生条件 | 仮想記憶のページング方式で、アクセス先ページが主記憶に存在しない |
| 関連キーワード | ページイン、ページアウト、ページ置換アルゴリズム(FIFO / LRU)、スラッシング |
解説
仮想記憶(ページング方式)では、プログラムの全ページを主記憶に載せきれないため、必要なページだけを主記憶に配置し、残りは補助記憶に退避しています。
CPUがあるページにアクセスしたとき、そのページが主記憶上に存在しなければ、OSに「このページをロードしてほしい」と通知する必要があります。この通知の仕組みがページフォールトです。
発生時の処理フロー
ページフォールトが起きると、OSは以下の順で処理を行います。
ページフォールト発生時の処理フロー
※ 主記憶に空きがある場合は③④のページアウトをスキップし、直接ページインのみ行う
ここで重要なのは、「ページフォールト=ページイン」は必ず1対1で発生するが、ページアウトはページフォールトのたびに必ず起きるわけではないという点です。
主記憶に空きページ枠があればページアウトは不要です。そのため、回数の関係は「ページフォールト=ページイン≧ページアウト」になります。
図解:主記憶と補助記憶の関係
図解:主記憶と補助記憶の関係
主記憶(RAM)
補助記憶(HDD/SSD)
▲ ページCが主記憶にない → ページフォールト発生 → 補助記憶からページインで読み込む
頻発するとスラッシングに陥る
ページフォールトが頻発すると、CPUは本来のプログラム実行ではなくページの入れ替え作業に時間を取られ、システム全体の処理能力が急激に低下します。
この現象をスラッシングと呼びます。原因は主記憶の容量不足で、対策としては物理メモリの増設や、同時実行プログラム数(多重度)の削減が有効です。
多重度とスラッシングの関係イメージ
※ 多重度を上げすぎると主記憶が足りなくなり、ページフォールトが頻発してCPU利用率が急落する
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 ページフォールトの核心を3行で
・アクセス先のページが主記憶にないときに発生する内部割込み
・発生後は置換対象の決定 → ページアウト → ページインの順で処理される
・頻発するとスラッシング(処理能力の急低下)を引き起こす
試験ではこう出る!
ページフォールトは、FE・APの科目A(午前)問題で繰り返し出題されています。出題パターンは大きく3つに分かれます。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| FE H29秋 問20 |
ページフォールトの発生回数を増加させる要因を選ぶ | ・正解は「主記憶に存在しないページへのアクセスが増加すること」 ・「更新されたページの比率」「長時間アクセスしなかったページ」がひっかけ |
| AP R3秋 問17 |
ページフォールトの許容発生率を計算する | ・1命令あたりの平均アクセス回数とオーバーヘッド時間から発生率の上限を求める計算問題 |
| AP R5秋 問16 |
ページフォールト発生時の平均処理時間からページインだけの処理割合を求める | ・ページアウトを伴う場合と伴わない場合の処理時間を加重平均する計算問題 |
| AP R3春 問19 |
ページフォールト・ページイン・ページアウトの回数の大小関係を問う | ・正解は「ページフォールト=ページイン≧ページアウト」 |
📝 IPA試験での出題パターン
パターン1:「発生要因・定義を選べ」(FE頻出)
ページフォールトが何をきっかけに発生するかを4択で問う形式。「主記憶に存在しないページへのアクセス」が正解。「ページの更新有無」や「アクセスしなかった時間」は発生要因ではないので除外する。
パターン2:「発生率やオーバーヘッドの計算」(AP頻出)
1命令あたりの主記憶アクセス回数・オーバーヘッド時間・許容遅延から、発生率の上限を求める計算問題。立式の型は「アクセス回数×オーバーヘッド×発生率=許容遅延」で固定されている。
パターン3:「ページフォールト・ページイン・ページアウトの大小関係」
3事象の回数順を問う問題。ページフォールト1回につきページインは必ず1回だが、ページアウトは空き枠があればスキップされるため、「ページフォールト=ページイン≧ページアウト」が正解。
試験ではここまででOKです。ページフォールトハンドラの内部実装やTLBミスとの違いまで深追いする必要はありません。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. ページング方式の仮想記憶において、ページフォールトの説明として最も適切なものはどれか。
- A. プログラムがアクセスしようとしたページが主記憶上に存在しないときに発生する割込みであり、OSはページインによって必要なページを補助記憶から読み込む。
- B. ページ置換えが頻発してCPU利用率が急激に低下し、システムの処理能力が落ちる現象。
- C. 主記憶上の不要なページを補助記憶に退避させて、空きページ枠を確保する処理。
正解と解説を見る
正解:A
解説:
ページフォールトは、プログラムが必要とするページが主記憶に存在しないときにOSへ通知される内部割込みです。この割込みを受けてOSが補助記憶からページを読み込む処理(ページイン)を行います。
選択肢Bはスラッシングの説明です。ページフォールトが頻発した結果として起こる現象であり、ページフォールトそのものの定義ではありません。選択肢Cはページアウトの説明です。ページアウトは主記憶の空き枠を作る処理であり、ページフォールト発生後に必要に応じて実行される手順の一部です。
よくある質問(FAQ)
Q. ページフォールトは内部割込みと外部割込みのどちらですか?
内部割込みです。「メモリ関連だからハードウェア(外部割込み)では?」と迷う受験者が多いですが、原因は「プログラムが存在しないページにアクセスした」という命令実行の結果なので、プログラム起因の内部割込みに分類されます。FE H29秋 問10でも、ページフォールトを外部割込みのひっかけ選択肢として配置した問題が出題されています。
Q. ページフォールトとページミスは同じ意味ですか?
実質的に同じ事象を指しています。IPA試験の公式用語では「ページフォールト」が使われます。「ページミス」はキャッシュメモリの「キャッシュミス」と混同しやすいため、試験対策ではページフォールトという用語で統一して覚えてください。
Q. ページ置換アルゴリズムのFIFOとLRUの違いは?
FIFOは「最も早くページインしたページ」を追い出す方式で、LRUは「最も長い間参照されていないページ」を追い出す方式です。FIFOは実装が単純ですが、頻繁に使われるページまで追い出す可能性があります。LRUは実際のアクセス状況を反映するため効率が良く、IPA試験ではFIFOとLRUの両方でページ置換回数を数えさせる問題が定番です(FE H29春 問19など)。
Q. 実務でページフォールトが多発したらどう対処しますか?
まず物理メモリの増設が最も直接的な対策です。メモリ増設が難しい場合は、不要なプロセスの停止やメモリリークの調査を行います。Linuxであれば vmstat コマンドや sar -B コマンドでページフォールトの発生頻度をリアルタイムに監視できます。Windowsではパフォーマンスモニター(perfmon)の「Memory > Page Faults/sec」カウンターで確認できます。