頁面置換演算法知識回顧和習題

2021-10-05 11:08:29 字數 3830 閱讀 2684

內容:

某頁式虛擬儲存管理系統中,頁面大小為1kb。給某一程序分配的記憶體塊數為3 ,並按下列位址順序引用記憶體單元:

3635、3632、1140、3584、2892、3640、0040、2148、1700、2145、3209、0000、1102、1100。

如果上述數字均為十進位制數,而記憶體中尚未裝入任何頁。

(1) 給出使用lru演算法時的缺頁次數。

(2)用流程圖的方式解釋位址變換的過程。(缺頁時只需指出產生缺頁中斷以請求調頁,具體的中斷處理流程不需畫出)

解答

(1)根據題意,頁面的引用次序為3、3、1、3、2、3、0、2、1、2、3、0、1、1,則根據lru演算法依次訪問各頁,各記憶體塊中的頁面置換情況為(加粗頁面表示剛調入記憶體):

訪問頁面33

1323

0212

3011

記憶體塊1

3333

3333

11

100

0記憶體塊2

1111

0000

3333

記憶體塊3

2222

2222

11

是否缺頁✔❌

✔❌✔❌

✔❌✔❌

✔✔✔❌

故可以看出,lru演算法時的缺頁次數為8次。

ps:解題過程中需要進行淘汰頁面的選擇時,可以通過逆向檢查此時在記憶體中的幾個頁面號,在逆向掃瞄過程中最後乙個出現的頁面就是要淘汰的頁面。

例如此時分析到需要頁面0,而此時記憶體已滿,需要選乙個頁面淘汰,進行頁面置換:那此時記憶體中的頁面是3、1、2,然後逆向掃瞄之前訪問的頁面,三個頁面當中1是最早訪問的,也是最近最久未使用的頁面,故將頁面1淘汰,將需要的頁面0調入。

頁面置換之後:

其他分析過程類似。

題目內容:

在乙個請求分頁系統中,假定分配給乙個程序的物理塊數為3,並且此程序的頁面走向為2、3、2、1、5、2、4、5、3、2、5、2。

試用fifo、lru和opt三種演算法分別計算出在訪問過程所發生的缺頁次數。

解答:

fifo演算法:優先淘汰最早進入記憶體的頁面,可以把進入記憶體的頁面根據調入順序形成乙個佇列,需要置換頁面時將佇列頭淘汰

訪問頁面23

2152

4532

52記憶體塊1

2322

記憶體塊2

33

3記憶體塊3

1

是否缺頁✔✔

✔ 所以把2淘汰,頁面5調入:

訪問頁面23

2152

4532

52記憶體塊1

2322

5

記憶體塊2

3333

記憶體塊3

11

是否缺頁✔✔

✔✔此時應該淘汰頁面3,調入2:

訪問頁面23

2152

4532

52記憶體塊1

2322

55

記憶體塊2

3333

2

記憶體塊3

11

1是否缺頁✔✔

✔✔✔

分析過程就是這樣,所以最後的結果:

訪問頁面23

2152

4532

52記憶體塊1

2322

5555

3333

記憶體塊2

3333

2222

255

記憶體塊3

11

14444

42

是否缺頁✔✔

✔✔✔✔

✔✔✔故使用fifo演算法在訪問過程中所發生的缺頁次數為9次。

lru演算法:

訪問頁面23

2152

4532

52記憶體塊1

2222

2222

3333

記憶體塊2

33

35555

5555

記憶體塊3

11

144

422

2是否缺頁✔✔

✔✔✔✔

故使用lru演算法在訪問過程中所發生的缺頁次數為7次。

opt演算法:

訪問頁面23

2152

4532

52記憶體塊1

2222

2244

422

2記憶體塊2

3333

3333

333記憶體塊3

15555

5555

是否缺頁✔✔

✔✔✔✔

(倒數第三列,後面只會用到頁面5,所以既可以用4號,也可以用3號頁面進行替換,置換為頁面2。)

故可以看出,使用opt演算法在訪問過程中所發生的缺頁次數為6次。

ps:opt演算法淘汰那些永不使用,或者在最長時間內不再被訪問的頁面(預知未來),所以在選擇淘汰哪個頁面時,和lru演算法剛好相反,可以使用前向掃瞄方法,在前向掃瞄過程中最後乙個出現的頁面就是要淘汰的頁面。

比如此時記憶體已滿,存放了2、3、1號頁面,要將5號頁面置換進來,淘汰頁面可以從當前頁面開始前向掃瞄,發現1是後面不會在訪問的(1號是永不再使用的),所以淘汰1。

替換之後,變為:

個人理解,有誤請指正~

頁面置換演算法練習題

例 在乙個請求分頁儲存系統中,乙個程序的頁面走向為4,3,2,1,4,3,5,3,2,1,設分配給該程序的記憶體塊數m 4,採用fifo和lru頁面置換演算法 每調進乙個新頁認為發生一次缺頁中斷 計算缺頁次數和缺頁率 寫出計算過程 下面簡單的把計算方法解釋一下 fifo 先進先出置換演算法 首先要根...

頁面置換演算法

常用的頁面置換演算法有三種 先進先出演算法fifo first in first out 該演算法的基本思想是首先淘汰那些駐留在主存時間最長的頁面。最近最久未用演算法 lru 該演算法的基本思想是 如果某一頁被訪問了,那麼它很可能馬上又被訪問 反之,如果某一頁很久沒被訪問,那麼最近也不會再訪問。lr...

頁面置換演算法

include using namespace std int process 100 頁面佇列 int memory 3 塊數 int optqueue 100 opt演算法的佇列 int fifoqueue 100 fifo演算法佇列 int lruqueue 100 lru演算法佇列 int ...