內容:
某頁式虛擬儲存管理系統中,頁面大小為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 ...