基本情報技術者 2017年 秋期 午前(科目A) 問20
問題文
ページング方式の仮想記憶において、ページフォールトの発生回数を増加させる要因はどれか。
選択肢
ア:主記憶に存在しないページへのアクセスが増加すること(正解)
イ:主記憶に存在するページへのアクセスが増加すること
ウ:主記憶のページのうち、更新されたページの比率が高くなること
エ:長時間アクセスしなかった主記憶のページをアクセスすること
ページング方式の仮想記憶において、ページフォールトの発生回数を増加させる要因はどれか。【午前2 解説】
要点まとめ
- 結論: ページング方式では、主記憶に存在しないページへのアクセスが増えるとページフォールトが直接増加し、置換やディスクI/Oを頻発させます。
- 根拠: ページフォールトは参照ページが主記憶に無い場合に発生し、ページのロードと必要に応じた置換処理が発生するため回数が増えます。
- 差がつくポイント: 更新や古いページ参照の話と混同せず、「主記憶に無いアクセスの割合」を把握して対策(フレーム増加や局所性改善)を選ぶことです。
正解の理由
正解は ア です。ページフォールトは「参照したページが主記憶に存在しない」ことによって発生します。したがって、主記憶に存在しないページへのアクセスが増えると、そのままページフォールトの発生回数が増加します。ディスクからページを読み込み、必要ならば別のページを置換する処理が都度発生するため、回数とシステム負荷が直結します。
よくある誤解
- 「主記憶に存在するページへのアクセスが増えるとフォールトも増える」と誤解するケース: 主記憶内のアクセス増加自体はフォールト減少につながることが多いです。
- 「更新(dirty)ページが多いとページフォールトが増える」と考える誤り: 更新ページは置換時の書き戻しコストを増やしますが、ページフォールトの発生そのものを直接増やすわけではありません。
- 「長時間アクセスしなかったページをアクセスしたら必ず正答だ」と短絡的に判断するミス: 長時間未参照のページがスワップアウトされているとフォールトになりますが、問題が問う「要因」としてはより一般的なアが直接的です。
解法ステップ
- ページフォールトの定義を確認する(参照ページが主記憶になければ発生)。
- 各選択肢が「主記憶にないアクセス」を増やすかどうかを検討する。
- 直接的にフォールト回数を増やす要因を選ぶ(最も直接的なものが正解)。
- 他の選択肢はコスト増(I/O量や書き戻し)や特定ケースを述べているか確認する。
選択肢別の誤答解説
- ア: 正解。主記憶に存在しないページへのアクセス増加はページフォールトを直接増やします。
- イ: 誤り。主記憶に存在するページへのアクセスが増えると、通常はフォールトは発生しにくくなり、フォールト回数は増えません。
- ウ: 誤り。更新(dirty)ページの比率が高いと置換時の書き戻しコストは増えますが、フォールトの発生頻度そのものを必ずしも増やすわけではありません。
- エ: 一見正しそうですが不適切。長時間未参照のページの参照はスワップアウトされていればフォールトを生じますが、本問題では「フォールト発生回数を増加させる要因」としてより一般的かつ直接的なアを選びます。
補足コラム
ページフォールト対策には主に次の手段があります。フレーム数(物理メモリ)の増加、ワーキングセットの最適化(プログラムの局所性を考慮した設計)、プリフェッチ/読み込み戦略、適切なページ置換アルゴリズム(LRUやCLOCKなど)選択です。フォールト回数そのものを下げるには「主記憶に存在する割合」を高めることが最も直接的で、コードの局所性改善やメモリ割当の調整が有効です。スラッシング(頻繁なページ交換でCPU効率低下)が起きるとシステム全体の性能が著しく低下します。
FAQ
Q: 更新(dirty)ページが多いとページフォールトは必ず増えますか?
A: いいえ。更新ページは置換時の書き戻しI/Oを増やしますが、フォールト発生の原因そのものではありません。フォールトはページが主記憶に無いことが直接原因です。
A: いいえ。更新ページは置換時の書き戻しI/Oを増やしますが、フォールト発生の原因そのものではありません。フォールトはページが主記憶に無いことが直接原因です。
Q: 長時間アクセスしなかったページをアクセスすること(選択肢エ)は間違いですか?
A: 完全に間違いではありません。スワップアウトされている場合はフォールトを生じますが、設問の最も直接的な要因は「主記憶に存在しないページへのアクセス増加(ア)」です。
A: 完全に間違いではありません。スワップアウトされている場合はフォールトを生じますが、設問の最も直接的な要因は「主記憶に存在しないページへのアクセス増加(ア)」です。
Q: 実務でフォールトを減らす最も効果的な方法は?
A: 優先度は、①物理メモリ増設、②プログラムの局所性改善(参照パターンの見直し)、③適切なページ置換アルゴリズムの採用、の順です。
A: 優先度は、①物理メモリ増設、②プログラムの局所性改善(参照パターンの見直し)、③適切なページ置換アルゴリズムの採用、の順です。
関連キーワード: ページング、ページフォールト、ワーキングセット、LRU、スラッシング、仮想記憶、参照局所性、置換アルゴリズム

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

