キャッシュアルゴリズムは喫茶店で考えるとすぐ分かる!

広告

FIFO・LRU・LFUを3人席で理解しよう

基本情報技術者試験では、キャッシュメモリの置換アルゴリズムとして

  • FIFO
  • LRU
  • LFU

がよく登場します。

名前だけを暗記しようとすると、どれも似ていて混乱してしまいます。

そこで今回は、3人席しかない喫茶店を例に考えてみましょう。


コンピュータにも席数がある

喫茶店に席数があるように、コンピュータのキャッシュメモリにも容量があります。

今回は、席が3席しかない喫茶店を考えます。

最初は3人のお客さんが座っています。

席1 Aさん
席2 Bさん
席3 Cさん

そこへDさんが来店しました。

しかし、席は満席です。

誰か一人に席を譲ってもらわなければなりません。

この**「誰に席を譲ってもらうか」**を決めるルールが、キャッシュの置換アルゴリズムです。


FIFO(First In, First Out)

FIFOは

「一番早く来た人が席を譲る」

というルールです。

来店順が

① Aさん
② Bさん
③ Cさん
④ Dさん(新しく来店)

だった場合、

一番早く来たAさんが席を譲ります。

退席:Aさん

残る人
Bさん
Cさん
Dさん

FIFOでは、途中で何回コーヒーを飲んだか、最近飲んだかは関係ありません。

来店した順番だけで決まります。


LRU(Least Recently Used)

LRUは

「一番最近利用していない人が席を譲る」

というルールです。

例えば、それぞれ最後にコーヒーを飲んだ時刻が

Aさん 10分前
Bさん 1分前
Cさん 今飲んだ

だったとします。

ここでDさんが来店すると、

一番長い間コーヒーを飲んでいないAさんが席を譲ります。

退席:Aさん

もし来店順が一番古くても、最近コーヒーを飲んでいたなら退席しません。

LRUでは、

最後に利用した時刻

だけを見ています。


LFU(Least Frequently Used)

LFUは

「利用回数が一番少ない人が席を譲る」

というルールです。

例えば、

Aさん 10杯飲んだ
Bさん 3杯飲んだ
Cさん 1杯飲んだ

だった場合、

Dさんが来店すると、

利用回数が最も少ないCさんが席を譲ります。

退席:Cさん

LFUでは、

最近飲んだかどうかではなく、

これまで何回利用したか

だけを見ています。


違いを整理すると

方式何を基準にする?
FIFO一番早く来た人
LRU最後に利用した時刻
LFUこれまでの利用回数

基本情報技術者試験ではここを覚える

試験では、英語の略称を覚えるよりも、

「何を基準に入れ替えるのか」

を理解することが大切です。

  • FIFO:来た順番を見る
  • LRU:最後に使った時刻を見る
  • LFU:利用回数を見る

この違いを理解できれば、問題文を読んでも迷いにくくなります。


まとめ

キャッシュの置換アルゴリズムは難しそうな名前ですが、考え方は意外とシンプルです。

3人席の喫茶店を思い浮かべれば、

「誰に席を譲ってもらうか」

というルールの違いだけだと理解できます。

試験では英語の略称を丸暗記するよりも、この場面をイメージしながら考えるほうが、ずっと記憶に残りやすくなります。

訪問数 5 回, 今日の訪問数 5回

広告