最終更新日:2026年8月19日
fe fe-technology computer-system algorithm
まず結論
FIFO方式とは、ページ置換が必要になったときに、主記憶に先に入ったページから順に追い出す方式です。
FIFOは、First In First Out の略です。
基本情報技術者試験では、FIFO方式は 「先に入ったものを先に出す」ページ置換方式 と考えると判断しやすいです。
特に重要なのは、ページが途中で再び参照されても、主記憶に入った順番は更新しないことです。
FIFO
→ 入った順番を見る
LRU
→ 最後に使った時刻を見る
LRUのページ参照列の追い方は、LRUページ置換とは?最後に参照した時刻で置換ページを決めるで確認できます。
直感的な説明
FIFO方式は、行列に並ぶイメージです。
先に並んだ人から順番に呼ばれるように、FIFO方式では、先に主記憶へ入ったページから順番に置き換えられます。
先に入ったページ → 先に出る
あとから入ったページ → あとで出る
例えば、ページ枠に次の順でページが入ったとします。
2 → 5 → 7
ここでページ5をもう一度参照しても、
2 → 5 → 7
という入った順番は変わりません。
その後、新しいページ9を入れる必要があれば、最初に入ったページ2を置き換えます。
2 → 5 → 7
↓
9を読み込む
↓
9 → 5 → 7
この「ヒットしても順番を変えない」が、LRUとの大きな違いです。
定義・仕組み
仮想記憶では、プログラムが使うページの一部だけを主記憶に置きます。
主記憶のページ枠がいっぱいの状態で、主記憶にないページを読み込む必要があると、どれかのページを置き換える必要があります。
このとき、どのページを追い出すかを決める方法が、ページ置換アルゴリズムです。
| 用語 | 意味 |
|---|---|
| ページ | 仮想記憶で扱う固定サイズの単位 |
| ページ枠 | 主記憶上でページを入れる場所 |
| ページフォールト | 必要なページが主記憶にない状態 |
| ページ置換 | 主記憶のページを入れ替えること |
| FIFO方式 | 最初に主記憶へ入ったページを最初に置き換える方式 |
FIFO方式では、ページ枠にページが入った順番を記録します。
ページ枠がいっぱいの状態で新しいページを入れるときは、最も古く主記憶に入ったページを置き換えます。
ヒットしたときは何もしない
参照したページがすでに主記憶にある状態を、ここでは「ヒット」と考えます。
FIFOでは、ヒットしても置換は発生しません。
さらに、
ヒットした
↓
ページ枠の中身はそのまま
↓
入った順番もそのまま
です。
つまり、FIFOでは「最後に参照された順番」ではなく「最初に入った順番」だけを追います。
このテーマは、基本情報技術者試験の「コンピュータシステム」や「オペレーティングシステム」と関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験から確認できます。
科目Aでどう出る?
科目Aでは、FIFO方式の説明や、ページ参照列を使った計算問題として出題されやすいです。
判断するときは、次の表現を見ます。
| 表現 | 判断 |
|---|---|
| 最初に主記憶へ入ったページを置き換える | FIFO方式 |
| 先入れ先出し | FIFO方式 |
| 最後に参照されてから最も時間がたったページを置き換える | LRU方式 |
| これから最も長く使われないページを置き換える | OPT方式 |
| 使用頻度が最も低いページを置き換える | LFU方式 |
特に、LRU方式との違いが大切です。
| 方式 | 見るもの | ヒットしたとき | 置き換えるページ |
|---|---|---|---|
| FIFO | 主記憶に入った順番 | 順番を更新しない | 最初に入ったページ |
| LRU | 最後に参照された時刻 | 最近使った扱いに更新 | 最も長く使われていないページ |
計算問題の基本手順
- ページ参照列を左から順に見る
- 参照ページがページ枠にあれば、置換しない
- FIFOでは、ヒットしても入った順番を更新しない
- 参照ページがページ枠になければ、ページフォールトになる
- 空き枠があれば、そのまま入れる
- 空き枠がなければ、最初に入ったページを置き換える
典型的な追い方
ページ枠が3つで、次の参照列を考えます。
2, 5, 7, 5, 2, 9
途中の状態は次のようになります。
| 参照 | ページ枠 | 判断 |
|---|---|---|
| 2 | 2 | 空き枠に入れる |
| 5 | 2, 5 | 空き枠に入れる |
| 7 | 2, 5, 7 | 空き枠に入れる |
| 5 | 2, 5, 7 | ヒット。順番は更新しない |
| 2 | 2, 5, 7 | ヒット。順番は更新しない |
| 9 | 9, 5, 7 | 最初に入った2を置き換える |
最後にページ9を参照した時点では、ページ2が最も古く主記憶に入ったページです。
途中でページ2が再参照されても、FIFOでは入った順番は変わりません。
したがって、
[2, 5, 7]
↓ 9を参照
[9, 5, 7]
となります。
どんな場面で使う?
問題文では、ページ参照列を順に追って、ページ枠の中身やページフォールト回数を求める問題でFIFO方式の考え方が役立ちます。
実際に追跡するときは、ページ枠の中身だけでなく、どのページが最初に入ったかを示す待ち行列もメモすると安全です。ヒットしたページを待ち行列の末尾へ移してはいけません。
よくある誤解・混同
FIFO方式でよくある誤解は、途中で参照されたページを新しい扱いにしてしまうことです。
| 誤解 | 正しい理解 |
|---|---|
| 参照されたページは順番が新しくなる | FIFOでは順番を更新しない |
| 最近使っていないページを追い出す | それはLRU方式 |
| ページ番号が小さいものを追い出す | ページ番号の大小は関係ない |
| 最後に入ったページを追い出す | FIFOは最初に入ったページを追い出す |
| FIFOとLRUは同じ結果になる | 参照順によって結果が変わることがある |
特に、次の切り分けを覚えておくと強いです。
FIFO
→ 入った順番を見る
LRU
→ 最後に使った時刻を見る
「参照された順」と「入った順」を混同しない
FIFOでは、
2, 5, 7
の順に入ったあと、
5, 2
と再参照されても、
入った順
2 → 5 → 7
のままです。
ここを、
5や2を参照したから新しくなった
と考えると、LRUの考え方と混ざってしまいます。
まとめ(試験直前用)
- FIFO方式は、最初に主記憶へ入ったページを最初に置き換える
- FIFOは First In First Out の略
- ページ番号の大小では判断しない
- ヒットしても、主記憶に入った順番は更新しない
- FIFOは「参照された順」ではなく「入った順」を見る
- LRUは最後に使った時刻を見る
- 計算問題では、参照列を左から順に追う
関連記事
- LRUページ置換とは?最後に参照した時刻で置換ページを決める — FIFOと対比してページ参照列を確認
- LRUとは?FIFO・LFU・NRUとの違い — 置換方式全体の切り分け
- ページング方式とは?ページとフレームで主記憶を管理する考え方