メインコンテンツへ
ソフトウェアページング方式

ページフォルト(Page Fault)が発生する原因として正しいものはどれか。

ア.CPUのキャッシュミスが発生してメモリアクセスが遅延する状態。
イ.ページテーブルが破損してアドレス変換ができなくなった状態。
ウ.物理メモリが不足して、スワップ領域にもページが存在しない状態。
エ.アクセスしようとした仮想アドレスのページが現在物理メモリ上に存在しない状態。正解

解説

ページフォルトは「本棚(物理メモリ)に本がない!倉庫(ディスク)から取ってきて!」という状態。仮想記憶の仕組みで必然的に発生する正常な割り込みです。

なぜ エ が正解か

ページングでは仮想アドレス空間をページ単位に分割し、必要なページのみを物理メモリにロードします。プロセスが参照しようとしたページが「物理メモリに存在しない」とき、MMU(Memory Management Unit)がページフォルト例外を発生させます。OSはこれを受けてディスク(スワップ領域や実行ファイル)から該当ページを物理メモリにロードし、ページテーブルを更新して処理を再開します。これは仮想記憶の正常な動作です。

なぜ ア は間違いか

CPUキャッシュミスはページフォルトとは別の階層の事象です。キャッシュミスでは物理メモリ(DRAM)へのアクセスが発生しますが、OS割り込みは生じません。ページフォルトはMMU/OS割り込みが発生する事象です。

なぜ イ は間違いか

ページテーブルの破損によるアドレス変換失敗は「セグメンテーション違反(Segmentation Fault)」などのより深刻なエラーです。ページフォルトはテーブルが正常でも「ページが物理メモリにない」だけで発生します。

なぜ ウ は間違いか

スワップ領域にもページが存在せずメモリが完全に不足した状態はページフォルトではなく「OOMキラー(Out Of Memory Killer)」が発動するような重大な状態です。ページフォルトはスワップからロードできる正常範囲の事象です。

出典: AI生成問題(学習用)