戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2017年 春期 午前(科目A)19


問題文

仮想記憶方式のコンピュータにおいて、実記憶に割り当てられるページ数は3とし、追い出すページを選ぶアルゴリズムは、FIFOとLRUの二つを考える。あるタスクのページのアクセス順序が
 1, 3, 2, 1, 4, 5, 2, 3, 4, 5
のとき、ページを置き換える回数の組合せとして、適切なものはどれか。
基本情報技術者 2017年 春期 午前(科目A) 問19の選択肢の画像

選択肢

(正解)

🔒 解説は解答すると表示されます

ページ置換アルゴリズムの比較【午前解説】

正解の理由

正解は (FIFO = 3 回、LRU = 6 回)です。実フレーム数を 3 として、それぞれのアルゴリズムで参照列を順に処理すると、FIFO では実際にページを追い出す(置き換える)回数が 3 回、LRU では 6 回になります。両アルゴリズムを具体的にシミュレーションして、追い出しが発生したタイミングを数えればこの数値になるため、選択肢イが正しいと判断できます。

解法ステップ

  1. 問題の定義を確認:実記憶フレーム数 = 3、参照列 = 1,3,2,1,4,5,2,3,4,5、置換回数は「追い出し(eviction)の回数」か確認。
  2. FIFO のシミュレーション:挿入順をキューとして管理し、参照ごとにフレーム内かを確認。満杯でミスならキューの先頭を追い出して新しいページを入れ、追い出し回数をカウント。
  3. LRU のシミュレーション:最近参照された順(MRU)を更新して管理し、満杯でミスなら最も古く参照された(LRU)ページを追い出して新しいページを入れ、追い出し回数をカウント。
  4. 両者の追い出し回数を比較して選択肢と照合する。
(シミュレーションの要点)
  • FIFO は挿入順 [1,3,2] が中盤以降に 1→3→2 の順で追い出され、追い出しは合計 3 回。
  • LRU は参照更新により最終的に頻繁に「もっとも古い」ページが入れ替わり続け、追い出しは合計 6 回。

選択肢別の誤答解説

  • ア:FIFO = 3、LRU = 2
    • FIFO の 3 は正しいが、LRU = 2 は過小評価です。中盤以降のミス連続で少なくとも 6 回の追い出しが発生するため誤りです。
  • イ:FIFO = 3、LRU = 6(正解)
    • FIFO は挿入順管理により追い出し 3 回、LRU は参照で再配置するため追い出し 6 回になります。
  • ウ:FIFO = 4、LRU = 3
    • FIFO の 4 はシミュレーションと合わず過大評価、LRU の 3 は過小評価です。どちらも参照の順序変化を正確に追えていません。
  • エ:FIFO = 5、LRU = 4
    • 両方とも過大評価/過小評価が混在しており、実際の逐次シミュレーション結果とは一致しません。特に FIFO の 5 は明らかに多すぎます。

よくある誤解

  • 「ページフォールト=置き換え回数」と考える誤り:空フレームに初回ロードされるときのフォールトは置き換え(追い出し)には含めない問題設定が多く、問題文の意図を確認する必要があります。
  • 「ヒットで順序が変わるのは FIFO だ」と勘違いする人がいる:ヒット時に参照順を更新するのは LRU であり、FIFO はヒットでも挿入順を変えません。
  • 参照履歴を追わずに直感で判断する:短い列でも挿入順や最終参照順が複雑に絡むため、必ずステップごとに状態を追うことが必要です。

補足コラム

  • Belady の異常(Belady's anomaly):FIFO はフレーム数を増やしてもページフォールトが増える場合があり得る(Belady の異常)。一方、LRU はスタック制約を満たすためそのような異常は起きません。本問はフレーム数固定の比較問題であり、異常の有無を尋ねるものではありませんが、アルゴリズムの性質を理解する上で重要な概念です。
  • 「置換回数」に関しては、問題によっては初期ロードもカウントする場合があるため、設問文や採点基準に合わせて扱いを確認してください。本問は「追い出すページを選ぶアルゴリズム」であるため、実質的に追い出しの回数を数えます。

FAQ

Q1. 「ページフォールト」と「ページ置換(追い出し)」は同じですか?
A1. 完全に同じではありません。ページフォールトは参照したページがメモリ内にない状態で発生しますが、空きフレームがある場合は単純にロードして置換(追い出し)は発生しません。問題が「置き換える回数」を求めている場合は、追い出し(eviction)の回数を数えます。
Q2. LRU の実装が難しいと言われますが、試験ではどう扱うべきですか?
A2. 理論的な挙動(直近参照を最優先で残す)を理解して逐次シミュレーションできれば十分です。実装の詳細(スタックやカウンタ)は出題範囲外のことが多いです。
Q3. FIFO と LRU、どちらが常に優れている?
A3. 一般的には LRU が実務的な局面でヒット率が良いことが多いですが、参照パターン次第で FIFO が有利になる場合や Belady の異常が発生する場合もあります。設問では具体的な参照列で比較してください。

関連キーワード: ページ置換、FIFO、LRU、仮想記憶、ページフォールト、Beladyの異常、キャッシュ管理、メモリ管理
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について