---
title: "FIFO方式とは？先に入ったページを先に置き換える方法【基本情報技術者試験】"
description: "FIFO方式を「主記憶に先に入ったページから順に置き換えるページ置換アルゴリズム」として整理し、LRU方式との違い、参照時に順番を更新しない点、FE試験での計算手順を解説します。"
last_modified_at: "2026-07-25"
canonical_url: "https://stemtazoo.github.io/fe/fifo-page-replacement/"
section: "fe"
---

## まず結論

FIFO方式とは、ページ置換が必要になったときに、**主記憶に先に入ったページから順に追い出す方式**です。

FIFOは、First In First Out の略です。

基本情報技術者試験では、FIFO方式は **「先に入ったものを先に出す」ページ置換方式** と考えると判断しやすいです。

LRU方式と違って、ページが途中で参照されても、**主記憶に入った順番は更新しない** ところが重要です。

## 直感的な説明

FIFO方式は、行列に並ぶイメージです。

先に並んだ人から順番に呼ばれるように、FIFO方式では、先に主記憶へ入ったページから順番に置き換えられます。

```text
先に入ったページ → 先に出る
あとから入ったページ → あとで出る
```

例えば、ページ枠に次の順でページが入ったとします。

```text
1 → 2 → 3 → 4
```

ページ枠がいっぱいの状態で新しいページ5を入れる必要がある場合、FIFO方式では、最初に入ったページ1を置き換えます。

ここで、途中でページ2やページ3が参照されても、FIFOでは「入った順番」だけを見ます。

## 定義・仕組み

仮想記憶では、プログラムが使うページの一部だけを主記憶に置きます。

主記憶のページ枠がいっぱいの状態で、主記憶にないページを読み込む必要があると、どれかのページを置き換える必要があります。

このとき、どのページを追い出すかを決める方法が、ページ置換アルゴリズムです。

| 用語 | 意味 |
|---|---|
| ページ | 仮想記憶で扱う固定サイズの単位 |
| ページ枠 | 主記憶上でページを入れる場所 |
| ページフォールト | 必要なページが主記憶にない状態 |
| ページ置換 | 主記憶のページを入れ替えること |
| FIFO方式 | 最初に主記憶へ入ったページを最初に置き換える方式 |

FIFO方式では、ページ枠にページが入った順番を記録します。

ページ枠がいっぱいの状態で新しいページを入れるときは、**最も古く主記憶に入ったページ** を置き換えます。

このテーマは、基本情報技術者試験の「コンピュータシステム」や「オペレーティングシステム」と関係する内容です。公式の出題範囲やシラバスは、[IPA：基本情報技術者試験](https://www.ipa.go.jp/shiken/kubun/fe.html) から確認できます。

## 科目Aでどう出る？

科目Aでは、FIFO方式の説明や、ページ参照列を使った計算問題として出題されやすいです。

判断するときは、次の表現を見ます。

| 表現 | 判断 |
|---|---|
| 最初に主記憶へ入ったページを置き換える | FIFO方式 |
| 先入れ先出し | FIFO方式 |
| 最後に参照されてから最も時間がたったページを置き換える | LRU方式 |
| これから最も長く使われないページを置き換える | OPT方式 |
| 使用頻度が最も低いページを置き換える | LFU方式 |

特に、LRU方式との違いが大切です。

| 方式 | 見るもの | 置き換えるページ |
|---|---|---|
| FIFO | 主記憶に入った順番 | 最初に入ったページ |
| LRU | 最後に参照された時刻 | 最近使われていないページ |

FIFOでは、ページが参照されても、入った順番は変わりません。

LRUでは、ページが参照されると「最近使ったページ」として扱いが更新されます。

## どんな場面で使う？

問題文では、ページ参照列を順に追って、ページ枠の中身を更新する問題でFIFO方式の考え方が役立ちます。

基本手順は次のとおりです。

1. ページ参照列を左から順に見る
2. 参照ページがページ枠にあれば、置換はしない
3. FIFOでは、ヒットしても入った順番は更新しない
4. 参照ページがページ枠になければ、ページフォールトになる
5. 空き枠があれば、そのまま入れる
6. 空き枠がなければ、最初に入ったページを置き換える

例えば、ページ枠が3つで、次の順に参照するとします。

```text
1, 2, 3, 2, 4
```

途中の状態を簡単に追うと、次のようになります。

| 参照 | ページ枠 | 考え方 |
|---|---|---|
| 1 | 1 | 空き枠に入れる |
| 2 | 1, 2 | 空き枠に入れる |
| 3 | 1, 2, 3 | 空き枠に入れる |
| 2 | 1, 2, 3 | ヒット。順番は更新しない |
| 4 | 4, 2, 3 | 最初に入った1を置き換える |

この例では、途中でページ2を参照しています。

しかし、FIFO方式ではページ2を「最近使った」として順番更新しません。

ここがLRU方式との大きな違いです。

## よくある誤解・混同

FIFO方式でよくある誤解は、**途中で参照されたページを新しい扱いにしてしまうこと** です。

| 誤解 | 正しい理解 |
|---|---|
| 参照されたページは順番が新しくなる | FIFOでは順番を更新しない |
| 最近使っていないページを追い出す | それはLRU方式 |
| ページ番号が小さいものを追い出す | ページ番号の大小は関係ない |
| 最後に入ったページを追い出す | FIFOは最初に入ったページを追い出す |
| FIFOとLRUは同じ結果になる | 参照順によって結果が変わることがある |

特に、次の切り分けを覚えておくと強いです。

```text
FIFO：入った順番を見る
LRU：最後に使った時刻を見る
```

FIFOでは、ページ枠にヒットしたときは「置換しない」だけです。

LRUのように、最近使ったページとして順番を並べ替える必要はありません。

## まとめ（試験直前用）

- FIFO方式は、最初に主記憶へ入ったページを最初に置き換える
- FIFOは First In First Out の略
- ページ番号の大小では判断しない
- ヒットしても、主記憶に入った順番は更新しない
- LRUは最後に使った時刻を見る
- 計算問題では、参照列を左から順に追う
