ITパスポート 2009年 春期 問85
問題文
ファイルを4冊だけ置くことができる机で、A~Fの6冊のファイルを使って仕事をする。机上に5冊目のファイルを置きたいとき、机上の4冊のファイルのうち、最後に参照してから最も時間が経過しているファイルを引き出しにしまうことにする。ファイルがA, B, C, D, B, A, E, A, B, Fの順で必要になった場合、最後に引き出しにしまうファイルはどれか。
選択肢
ア:A
イ:B
ウ:D(正解)
エ:E
🔒 解説は解答すると表示されます
LRU置換法【ITパスポート解説】
正解の理由
この問題は「LRU(Least Recently Used:最近最も利用されていない)置換法」の適用例です。LRUでは、参照(アクセス)されたファイルを「最も最近使った(MRU:Most Recently Used)」として前に置き、机が満杯で新しいファイルを置くときは「最後に参照してから最も時間が経っている(LRU)」ファイルを取り除きます。与えられた参照順をLRUルールで追うと、最後に引き出しにしまわれるのは D になります。したがって正解はウの D です。
解法ステップ
やさしい手順で考えます。
- 状態表示は「MRU → LRU(最も最近使った順から最も古く使った順)」で統一して書く。これが混乱を防ぎます。
- 参照が来たら:
- 机にあればそのファイルを先頭(MRU)に移動する。
- 机に無くて空きがあれば追加して先頭にする。
- 机に無くて空きがないときは、末尾(LRU)を取り除き、新しいファイルを先頭にする。
- 与えられた参照順 A, B, C, D, B, A, E, A, B, F を順に処理し、各ステップで MRU→LRU を書き出す。
実際の追い方(各ステップで MRU→LRU の順で表示):
- A → A
- B → B, A
- C → C, B, A
- D → D, C, B, A (ここで机は満杯)
- B → B, D, C, A (B を先頭に移動)
- A → A, B, D, C (A を先頭に移動)
- E → E, A, B, D (机が満杯なので末尾 C を追い出す)
- A → A, E, B, D (A を先頭に移動)
- B → B, A, E, D (B を先頭に移動)
- F → F, B, A, E (机が満杯なので末尾 D を追い出す)
最後に追い出されたのは D です。
選択肢別の誤答解説
- ア: A
9手目で B が MRU、8手目で A は MRU になっているため、10手目時点では A は最近参照されており LRU ではありません。よって誤りです。 - イ: B
9手目で B が直前に参照され MRU に位置しています。直後の置換で追い出されるような最も古い候補ではありません。 - ウ: D
正解。10手目で机の末尾(LRU)になっており、F を置くために取り除かれます。 - エ: E
E は7手目で置かれ、その後 8手目・9手目で A, B が参照されたため E は完全に最下位ではなく、10手目時点では D の方が古くなっています。
よくある誤解
- FIFO と混同する
FIFO(First In First Out:先に入れたものから出す)は入れた順で追い出します。LRU は「最後に参照された時刻」を基準に追い出すので結果が異なります。 - 表示順の不統一で間違う
MRU→LRU の順で一貫して表示すると見落としが減ります。途中で表示順を変えると誰でも混乱します。 - 「参照した順=入れた順」と考える誤り
既に机にあるファイルを参照しても「新たに入れる」のではなく位置を変える(MRU に移動)点を忘れると誤答します。
補足コラム
LRU はキャッシュ管理や仮想記憶(ページ置換)の基本アルゴリズムです。理想的には各ファイルの最新参照時刻を記録すれば正確に実装できますが、現実のシステムではコスト(時刻記録や更新の手間)を下げるために近似アルゴリズム(CLOCK 法など)が使われることがあります。問題を解くときは「参照が来たら先頭に移す」「新規は満杯なら末尾を削除」のルールを確実に適用することが重要です。
FAQ
Q. 「参照」とは具体的に何を指しますか?
A. ファイルを読む・使う・アクセスするなど、そのファイルが必要になった瞬間を指します。参照された時点で MRU にします。
A. ファイルを読む・使う・アクセスするなど、そのファイルが必要になった瞬間を指します。参照された時点で MRU にします。
Q. 同じファイルが連続して参照されたらどうする?
A. 何度参照されても常に先頭(MRU)を維持します。連続参照があっても末尾に影響はありません。
A. 何度参照されても常に先頭(MRU)を維持します。連続参照があっても末尾に影響はありません。
Q. 表示をどう書けば間違いにくいですか?
A. 常に「MRU → LRU」の順に並べて書くこと。初めにそのルールを明記してから各ステップを追うと安全です。
A. 常に「MRU → LRU」の順に並べて書くこと。初めにそのルールを明記してから各ステップを追うと安全です。
関連キーワード: LRU, 置換アルゴリズム, MRU, ページ置換, キャッシュ管理, FIFO, CLOCK

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

