FIFO、LRU、OPT頁面排程演算法及例子
網上很多介紹3種頁面置換演算法的例子和過程是不正確的, 本文根據《作業系統概念》第七版對三種演算法做介紹,並給出正確的例子以驗證演算法。
一、FIFO先進先出頁面置換演算法,建立一個FIFO佇列來管理記憶體中的所有頁。在計算缺頁率的時候最好把每一次頁面排程的佇列寫出來,這樣不容易出錯。
下面舉例說明:
假設頁幀為3,引用串為:7,0,1,2,0,3,0,4,2
頁面走向:7,0,1,2,0,3,0,4,2,
-----------------------------------------------
物理頁: 7,7,7,2,2,2,2,4,4,
0,0,0,0,3,3,3,2,
1,1,1,1,0,0,0,
FIFO佇列:7, 7,7,0,0,1,2,3,0,
0,0,1,1,2,3,0,4,
1,2,2,3,0,4,2,
首先7,0,1頁面依次進入頁幀,佇列變為7,0,1,下一個引用2要調入,則佇列頭部的7出隊,佇列變為0,1,2,物理頁內將7換成2,下一個引用0調入,已經存在頁幀中,佇列不變,下一個3調入,佇列頭的0出隊,3入佇列尾,佇列變為1,2,3,頁幀將0變為3。後面同理依次進行。
二、LRU是Least Recently Used 近期最少使用演算法 ( 待更新 )
三、OPT是最佳頁面替換演算法(待更新)
下面舉一些例子及答案,可根據上述演算法驗證排程演算法的正確性。
1、在一個請求分頁系統中,假如一個作業的頁面走向為:1,2,3,6,4,7,3,2,1,4,7,5,6,5,2,1。當分配給該作業的物理塊數為4時,分別採用最佳置換演算法、LRU和FIFO頁面置換演算法,計算訪問過程中所發生的缺頁次數和缺頁率。
答:最佳置換演算法的情況如下表
頁面走向 |
1 |
2 |
3 |
6 |
4 |
7 |
3 |
2 |
1 |
4 |
7 |
5 |
6 |
5 |
2 |
1 |
物理頁0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
物理頁1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
物理頁2 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
4 |
4 |
5 |
5 |
5 |
5 |
5 |
||
物理頁3 |
6 |
4 |
7 |
7 |
7 |
7 |
7 |
7 |
7 |
6 |
6 |
6 |
6 |
|||
缺頁否 |
Y |
Y |
Y |
Y |
Y |
Y |
N |
N |
N |
Y |
N |
Y |
Y |
N |
N |
N |
缺頁次數為9,缺頁率為9/16
LRU演算法的情況如下表:
頁面走向 |
1 |
2 |
3 |
6 |
4 |
7 |
3 |
2 |
1 |
4 |
7 |
5 |
6 |
5 |
2 |
1 |
物理頁0 |
1 |
1 |
1 |
1 |
4 |
4 |
4 |
4 |
1 |
1 |
1 |
1 |
6 |
6 |
6 |
6 |
物理頁1 |
2 |
2 |
2 |
2 |
7 |
7 |
7 |
7 |
4 |
4 |
4 |
4 |
4 |
2 |
2 |
|
物理頁2 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
7 |
7 |
7 |
7 |
7 |
1 |
||
物理頁3 |
6 |
6 |
6 |
6 |
2 |
2 |
2 |
2 |
5 |
5 |
5 |
5 |
5 |
|||
缺頁否 |
Y |
Y |
Y |
Y |
Y |
Y |
N |
Y |
Y |
Y |
Y |
Y |
Y |
N |
Y |
Y |
缺頁次數為14,缺頁率為14/16
FIFO演算法的情況如下表:
頁面走向 |
1 |
2 |
3 |
6 |
4 |
7 |
3 |
2 |
1 |
4 |
7 |
5 |
6 |
5 |
2 |
1 |
物理頁0 |
1 |
1 |
1 |
1 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
5 |
5 |
5 |
5 |
5 |
物理頁1 |
2 |
2 |
2 |
2 |
7 |
7 |
7 |
7 |
7 |
7 |
7 |
6 |
6 |
6 |
6 |
|
物理頁2 |
3 |
3 |
3 |
3 |
3 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
||
物理頁3 |
6 |
6 |
6 |
6 |
6 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|||
缺頁否 |
Y |
Y |
Y |
Y |
Y |
Y |
N |
Y |
Y |
N |
N |
Y |
Y |
N |
N |
N |
缺頁次數為10,缺頁率為10/16
二、在一個請求分頁系統中,假如一個作業的頁面走向為:4,3,2,1,4,3,5,4,3,2,1,5。當分配給該作業的物理塊數M為4時,分別採用最佳置換演算法、LRU和FIFO頁面置換演算法,計算訪問過程中所發生的缺頁次數和缺頁率。
答:最佳置換演算法的情況如下表:
頁面走向 |
4 |
3 |
2 |
1 |
4 |
3 |
5 |
4 |
3 |
2 |
1 |
5 |
物理頁0 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
1 |
1 |
物理頁1 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
|
物理頁2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
||
物理頁3 |
1 |
1 |
1 |
5 |
5 |
5 |
5 |
5 |
5 |
|||
缺頁否 |
Y |
Y |
Y |
Y |
N |
N |
Y |
N |
N |
N |
Y |
N |
缺頁次數為6,缺頁率為6/12
LRU置換演算法的情況如下表:
頁面走向 |
4 |
3 |
2 |
1 |
4 |
3 |
5 |
4 |
3 |
2 |
1 |
5 |
物理頁0 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
5 |
物理頁1 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
|
物理頁2 |
2 |
2 |
2 |
2 |
5 |
5 |
5 |
5 |
1 |
1 |
||
物理頁3 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
|||
缺頁否 |
Y |
Y |
Y |
Y |
N |
N |
Y |
N |
N |
Y |
Y |
Y |
缺頁次數為8,缺頁率為8/12
FIFO演算法的情況如下表:
頁面走向 |
4 |
3 |
2 |
1 |
4 |
3 |
5 |
4 |
3 |
2 |
1 |
5 |
物理頁0 |
4 |
4 |
4 |
4 |
4 |
4 |
5 |
5 |
5 |
5 |
1 |
1 |
物理頁1 |
3 |
3 |
3 |
3 |
3 |
3 |
4 |
4 |
4 |
4 |
5 |
|
物理頁2 |
2 |
2 |
2 |
2 |
2 |
2 |
3 |
3 |
3 |
3 |
||
物理頁3 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
|||
缺頁否 |
Y |
Y |
Y |
Y |
N |
N |
Y |
Y |
Y |
Y |
Y |
Y |
缺頁次數為10,缺頁率為10/12