ITパスポート 2009年 春期 問85
問題文
ファイルを4冊だけ置くことができる机で、A~Fの6冊のファイルを使って仕事をする。机上に5冊目のファイルを置きたいとき、机上の4冊のファイルのうち、最後に参照してから最も時間が経過しているファイルを引き出しにしまうことにする。ファイルがA, B, C, D, B, A, E, A, B, Fの順で必要になった場合、最後に引き出しにしまうファイルはどれか。
選択肢
ア:A
イ:B
ウ:D(正解)
エ:E
🔒 解説は解答すると表示されます
4冊しか置けない机での「最後に引き出しにしまうファイル」はどれか【ITパスポート 解説】
正解の理由
この問題は「最後に参照してから最も時間が経過しているファイルを引き出しにしまう」というルール、つまり LRU(Least Recently Used:最も最近使われていないものを置き換える手法)を使います。参照列(アクセスの順番)を順にたどり、机に4冊まで置ける状態を更新していくと、最後に5冊目(この問題では F)を置くときに引き出しにしまわれるのは ウ(D)になります。理由は D が他のファイルよりも最後に参照された時刻が最も古く、F を置く直前の時点で LRU(最も古い)になっているためです。
解法ステップ
手順は次の通りです。机の中身は「左が最も最近参照(MRU:Most Recently Used)、右が最も古い(LRU)」という順に示します。
参照列:A, B, C, D, B, A, E, A, B, F
- A → 机に A を置く
状態: A - B → B を追加
状態: A, B - C → C を追加
状態: A, B, C - D → D を追加(満杯)
状態: A, B, C, D (MRU→LRU:D, C, B, A) - B → B はすでに机上にある(ヒット)。B を最新扱いにする
状態: B, D, C, A (MRU→LRU) - A → A はヒット。A を最新扱いにする
状態: A, B, D, C - E → 新しいファイル。満杯なので LRU(最も古い)= C を引き出しにしまう。C を外して E を置く
状態: E, A, B, D (C が排除) - A → A はヒット。A を最新扱いにする
状態: A, E, B, D - B → B はヒット。B を最新扱いにする
状態: B, A, E, D - F → 新しいファイル。満杯なので LRU = D(最後に参照されたのが最も古い)を引き出しにする。よって D を引き出しにしまう。
以上より、最後に引き出しにしまわれるのは D(ウ)です。
選択肢別の誤答解説
- ア: A
誤り。A は 10 ステップ直前(ステップ8)に参照されており、D よりも新しい参照なので最後に引き出される候補にはなりません。 - イ: B
誤り。B はステップ9で参照され、直前に使用されているため最後に引き出す対象にはなりません。 - ウ: D
正解。D はステップ4で参照された後、ステップ7以降は参照されておらず、F を置く直前の時点で最も「古く」なっているため引き出されます。 - エ: E
誤り。E はステップ7に置かれ、その後ステップ8・9でも D よりは新しい状態なので、最後に引き出されるのは D です。
よくある誤解
- FIFO(先入れ先出し)と混同する
- FIFO は「先に入れたもの」を出す方式です。LRU は「最後に使われた時間」を基準にします。初期の4つ(A, B, C, D)のうち最初に入れた C を追い出すのではなく、実際の参照履歴で判断します。
- 「最後に参照した」の意味を取り違える
- 「最後に参照してから最も時間が経過している」とは、直近の参照時刻が一番古いものを指します。逆に「最後に参照したもの」を出す(最新を出す)わけではありません。
- ヒット(既に机上にあるファイルを参照した)時に更新を忘れる
- ファイルが机にあった場合、その参照で「最新(MRU)」になることを必ず反映させないと誤答になります。
補足コラム
- LRU(Least Recently Used)はコンピュータのキャッシュや仮想記憶(ページ置換:メモリ管理でページを入れ替える方法)でよく使われるアルゴリズムです。考え方は「しばらく使われていないものは今後も使われない可能性が高い」と仮定する点にあります。
- 他の代表的な置換アルゴリズム:FIFO(先入れ先出し)、LFU(Least Frequently Used:参照頻度が最も低いものを置換)など。問題文の条件(「最後に参照してから最も時間が経過」)は LRU を指しています。
試験のコツ:参照列を手で追うときは、机(キャッシュ)の中身を「最新版←古い」の順で書き、参照があればその要素を一番左に移動する(ヒット時)。新規要素は満杯なら右端(最も古い)を消して左端に追加する、という操作を繰り返すとミスが減ります。
FAQ
Q1. 「机上に5冊目を置きたいとき」は何回起きますか?
A1. この参照列では、新しいファイル(机にないファイル)が現れるたびに「置きたい」となります。具体的には E(7回目)と F(10回目)の2回です。
A1. この参照列では、新しいファイル(机にないファイル)が現れるたびに「置きたい」となります。具体的には E(7回目)と F(10回目)の2回です。
Q2. もし机が3冊しか置けなかったらどうなりますか?
A2. 同じ方法で追えば、参照列ごとに LRU を排除します。机の容量が小さくなるほど、排除(ページフォルト)が増えるのが一般的です。
A2. 同じ方法で追えば、参照列ごとに LRU を排除します。机の容量が小さくなるほど、排除(ページフォルト)が増えるのが一般的です。
Q3. LRU を簡単に覚えるコツは?
A3. 「最近使ったものは残す。古いものを出す」──日常生活でよく使うものを手元に置いて、しばらく使っていないものをしまうイメージで覚えるとよいです。
A3. 「最近使ったものは残す。古いものを出す」──日常生活でよく使うものを手元に置いて、しばらく使っていないものをしまうイメージで覚えるとよいです。
関連キーワード: LRU、最も最近使われていない、キャッシュ置換、ページ置換、参照列、ヒットとミス、アルゴリズム

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

