基本情報 平成29年度 春期 問29:テクノロジ系に関する問題
ページング方式の仮想記憶において, ページフォールトの発生回数を増加させる 要因はどれか。
- a主記憶に存在しないページへのアクセスが増加すること正答
- b主記憶に存在するページへのアクセスが増加すること
- c主記憶のページのうち, 更新されたページの比率が高くなること
- d長時間アクセスしなかった主記憶のページをアクセスすること
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは a です。
ページング方式の仮想記憶は、メモリを「ページ」という小箱に区切って管理し、よく使うページだけ主記憶(机の上)に置き、残りは補助記憶(引き出し)にしまっています。
ページフォールト=必要なページが机の上になく、引き出しから取りに行く事態。これが多いと処理が止まる時間が増えます。
👉 覚え方:主記憶にない=取りに行く=ページフォールト発生!
ほかの選択肢:b は主記憶にあるページにアクセス→フォールトしない/c は更新の有無は発生要因ではない/d は時間経過は直接の発生要因ではなく、アクセス自体が引き金。
なぜこれが正解か
正解は a。ページング方式の仮想記憶では、要求されたページが主記憶(物理メモリ)に存在しない場合にページフォールトが発生し、補助記憶(スワップ領域)から該当ページを読み込む。よって主記憶に存在しないページへのアクセスが増えれば、フォールト発生回数も比例して増加する。
各選択肢の解説
- a:主記憶不在ページへのアクセス増加=フォールト直接要因 → 正解。
- b:主記憶にあるページへのアクセス(ヒット)はフォールトを起こさない。
- c:ページが更新されたかどうかは、置換時の書き戻し(ダーティビット)に影響するだけでフォールト発生数とは無関係。
- d:「長時間アクセスしなかった主記憶のページ」はLRU等で追い出される候補ではあるが、追い出された後の再アクセスが起きて初めてフォールト。アクセス自体が直接要因ではない。
覚え方・ひっかけ注意
「主記憶にない→取りに行く→フォールト」の3段論法。dの「長時間アクセスしなかった」は紛らわしいが、ページが主記憶にあるうちはアクセスしてもフォールトしない。スラッシングはフォールトが多発しすぎてCPUがほぼ全部入出力待ちになる現象、と関連付けて覚える。
理論的背景
ページフォールト発生率はワーキングセット(プログラムが直近アクセスしたページ集合)と物理メモリ容量の関係で決まる。Denningのワーキングセットモデルでは、各プロセスのワーキングセット合計が物理メモリを超えるとフォールトが急増しスラッシングに移行する。フォールト処理コストはL1ヒット(数ns)と比較すると100万倍以上(数ms=ディスクI/O)の差があり、性能への影響は甚大。
ページ置換アルゴリズム
どのページを追い出すかで以降のフォールト回数が変わる:
- OPT(理論最適):以後最も長く使われないページを追い出す。実装不可だが評価基準。
- LRU:最近最も使われていないもの。実装には参照ビットの周期スキャンやclock algorithmを使う。
- FIFO:実装簡単だがBeladyの異常(メモリを増やしてもフォールトが増える)が起きうる。
- NRU / 二次チャンス:参照ビット+ダーティビットによる近似LRU。
試験での位置づけ
FE「OS/メモリ管理」分野で頻出。フォールト発生要因、置換アルゴリズム、スラッシング、TLBミス、ページサイズのトレードオフはセットで問われる。応用情報以降ではマルチレベルページテーブル、逆ページテーブル、Huge Pageまで踏み込む。
実務での重要性
- DBMSのバッファプール設計、Linuxのvm.swappiness調整、JVMのヒープサイズ設定はすべてフォールト最小化が目的。
- コンテナ環境ではmemory cgroupによる制限がフォールト多発の原因になりがち。kubernetesのOOM Killer発火パターン理解に必要。
- SSDスワップは従来HDDより高速だが、依然L1/L2キャッシュとの差は5〜6桁あり、最小化が原則。
選択肢の発展補足
cの「更新されたページの比率」はページ置換時のディスク書き戻しコスト(dirty page writeback)に影響する。Linuxでは`dirty_ratio`や`pdflush/bdflush`がこれを制御。dの「長時間アクセスしないページ」はLRU/clock方式での追い出し対象となる重要概念で、フォールトの間接要因。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成29年度 春期 問29/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。