ページ置換アルゴリズム計算(FIFO・LRU・Optimal)
FIFO・LRU・Optimal・LFU・Clockのページ置換をシミュレートし、参照ごとのフレーム、ヒットとページフォルト、ヒット率、ベレイディの異常のチェックまで表示します。
この範囲ではベレイディの異常は起きていません。フレームを増やしてフォルトが増えたアルゴリズムはありません。
LRUは、最後に使われてから最も時間が経っているページを置換します。
- FIFO
- LRU
- Optimal
- LFU
- Clock
| # | ページ | フレーム1 | フレーム2 | フレーム3 | 結果 | 追い出したページ |
|---|---|---|---|---|---|---|
| 1 | 7 | 7 | フォルト | |||
| 2 | 0 | 7 | 0 | フォルト | ||
| 3 | 1 | 7 | 0 | 1 | フォルト | |
| 4 | 2 | 2 | 0 | 1 | フォルト | 7 |
| 5 | 0 | 2 | 0 | 1 | ヒット | |
| 6 | 3 | 2 | 0 | 3 | フォルト | 1 |
| 7 | 0 | 2 | 0 | 3 | ヒット | |
| 8 | 4 | 4 | 0 | 3 | フォルト | 2 |
| 9 | 2 | 4 | 0 | 2 | フォルト | 3 |
| 10 | 3 | 4 | 3 | 2 | フォルト | 0 |
| 11 | 0 | 0 | 3 | 2 | フォルト | 4 |
| 12 | 3 | 0 | 3 | 2 | ヒット | |
| 13 | 2 | 0 | 3 | 2 | ヒット | |
| 14 | 1 | 1 | 3 | 2 | フォルト | 0 |
| 15 | 2 | 1 | 3 | 2 | ヒット | |
| 16 | 0 | 1 | 0 | 2 | フォルト | 3 |
| 17 | 1 | 1 | 0 | 2 | ヒット | |
| 18 | 7 | 1 | 0 | 7 | フォルト | 2 |
| 19 | 0 | 1 | 0 | 7 | ヒット | |
| 20 | 1 | 1 | 0 | 7 | ヒット |
| フレーム数 | FIFO | LRU | Optimal | LFU | Clock |
|---|---|---|---|---|---|
| 1 | 20 | 20 | 20 | 20 | 20 |
| 2 | 15 | 17 | 13 | 15 | 15 |
| 3 | 15 | 12 | 9 | 13 | 14 |
| 4 | 10 | 8 | 8 | 9 | 9 |
| 5 | 9 | 7 | 7 | 7 | 9 |
| 6 | 6 | 6 | 6 | 6 | 6 |
| 7 | 6 | 6 | 6 | 6 | 6 |
メモリがいっぱいなのに、プログラムが読み込まれていないページを必要とすると、OSは追い出すページを選ばなければなりません。この選択が、ページフォルトの発生回数を左右します。この計算ツールは、代表的な置換アルゴリズムであるFIFO・LRU・Optimal・LFU・Clock(セカンドチャンス)を参照列に適用し、参照ごとのフレーム、ヒット・フォルトを表示し、ヒット率を求め、すべてのアルゴリズムをフレーム数ごとに比較して、ベレイディの異常が起きていればそれを示します。
使い方
- 参照列を入力します。使われる順に並べたページ番号です。
- フレーム数を設定します。
- アルゴリズムを選びます。
- フレームの表、フォルト回数、フレーム数ごとの比較を確認します。
計算式
ヒット率 = ヒット ÷ 参照数 · フォルト率 = フォルト ÷ 参照数 · フォルトには空きフレームへの最初の読み込みも含む
FIFOは最も早く読み込まれたページを、LRUは最後の使用が最も古いページを、Optimalは次の使用が最も遠い(または二度と使われない)ページを、LFUは読み込み後の使用回数が最も少ないページ(同数なら先に読み込まれたもの)を追い出します。Clockはフレームを巡って参照ビットを消しながら進み、すでにビットが落ちている最初のページを追い出します。どのアルゴリズムも、教科書と同様に最初の読み込みをフォルトとして数えます。比較表は、フレーム1個から12個まで繰り返し実行した結果です。
計算例
教科書の参照列7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1とフレーム3個では、LRUのページフォルトは12回、ヒットは8回(ヒット率40%)で、FIFOは15回、Clockは14回、Optimalは下限の9回です。参照列1 2 3 4 1 2 5 1 2 3 4 5では、FIFOはフレーム3個でフォルト9回、4個で10回となります。これがベレイディの異常です。
よくある質問
ベレイディの異常とは何ですか?
一部の参照列では、FIFOにフレームを多く与えると、かえってページフォルトが増えます。LRUとOptimalはスタックアルゴリズム、つまりkフレーム内のページが常にk + 1フレーム内のページの部分集合になるため、この現象は起きません。
Optimalが実際のシステムで使われないのはなぜですか?
今後のページ参照の順序を知っている必要があるためです。基準として使われ、同じ参照列では、これより少ないフォルトのアルゴリズムは存在しません。
最初の読み込みもフォルトに数えますか?
はい。メモリにないページは、空きフレームがあるかどうかにかかわらずフォルトを起こします。これは強制ミス(コンパルソリミス)またはコールドミスと呼ばれます。
出典
最終更新:
この入力内容のページアドレス: https://kakao.mobile/ja/tools/page-replacement-simulator/
このツールを引用する
kakaoCalc. (2026, November 8). ページ置換アルゴリズム計算(FIFO・LRU・Optimal). https://kakao.mobile/ja/tools/page-replacement-simulator/
“ページ置換アルゴリズム計算(FIFO・LRU・Optimal).” kakaoCalc, 8 Nov. 2026, kakao.mobile/ja/tools/page-replacement-simulator/.