FIFO和LRU計算缺頁中斷
阿新 • • 發佈:2018-10-31
本文參考一點選
參考二點選
在一個請求分頁面管理中,一個程式的頁面走向為1、2、3、4、1、2、5、1、2、3、4、5。
當記憶體塊數量為3時,試問使用
(1)FIFO頁面置換演算法
(2)LRU頁面置換演算法
(開始時沒有裝入頁面)時的缺頁中斷次數是多少()
FIFO: 頁 4 1 2 5 1 2 3 4 5 記憶體 423 413 412 512 no no 532 534 no LRU: 頁 4 1 2 5 1 2 3 4 5 記憶體 423 413 412 512 no no 312 342 345 (缺頁發生 也就是需要進行交換,初始裝入記憶體的三個頁是不發生缺頁的 所以從4開始) 上面是裝入的頁面 下面是裝入後記憶體的狀態 (no代表不缺頁) FIFO是先進先出,總是淘汰最先進入記憶體的頁面,即選擇在記憶體中駐留時間最久的頁面進行淘汰。(此演算法是基於記憶體塊的順序, 按訪問的時間先後順序連結成一個佇列,並設定一個指標,該指標始終指向“最老“的頁面。) LRU 是更新最長未使用的頁面,這個演算法是根據頁面值來交換的。 也就是新裝入的頁面值如果在記憶體塊裡面有,就會更新這個頁面的某個標記狀態(標記其多久未使用,其實就是個變數,很容易實現) 顯然一直到5都是和FIFO演算法是一樣的,為什麼呢,因為前幾頁都是缺頁的,並沒有改變標記變數,所以就先裝入,則距今未使用時間最長,則先交換的原則啦 開始需要 1(5後面那個) 那麼記憶體目前狀態時 512, 1是在記憶體中的不發生缺頁,所以更新標記變數(標明 1剛被使用過)。 然後需要 2 記憶體中依然存在,則更新2的 標記變數,現在記憶體中仍然是 512 ,但是標記變數已經變了, 2最新,1次之,5最久(最久未使用),所以下次交換就先換 5,記憶體變為 321 。現在 3最新,2次之,1最久,下次缺頁就換1。 思路就是這樣啦,由於我也是剛學,可能分析中也有錯誤,如果發現,請見諒。希望有幫助http://zhidao.baidu.com/link?url=T9qi3oc38yEsYUtDHztLSVq7F2EgSdzJ9gI-cgXkBc4MW6g8RTF88xLQM9Fq7D-r2JX0by2Xx6uLJL0xDjCO_q
在一個虛擬儲存管理系統中,假如系統分配給一個作業的記憶體物理塊數是3,並且此作業的頁面使用順序為2,3,2,1,5,2,4,5,3,2,5,2,若採用FIFO和LRU置換演算法,其產生的缺頁次數分別為( )和( ) 。
答案是這樣的:
題目中當採用FIFO時,其頁面排程過程如下:
2 3 2 1 5 2 4 5 3 2 5 2
――――――――――――――
2 2 2 2 5 5 5 5 3 3 3 3
3 3 3 3 2 2 2 2 2 5 5
1 1 1 4 4 4 4 4 2
可知缺頁次數為9。同樣若採用LRU演算法,可計算其缺頁次數為7。
關於這個建議你看下作業系統的相關知識.
以下給出我的演算法:
FIFO:
當前所需:
2 3 2 1 5 2 4 5 3 2 5 2
----------------------
當前記憶體:
2 2 2 2 5 5 5 5 3 3 3 3
3 3 3 3 2 2 2 2 2 5 5
1 1 1 4 4 4 4 4 2
---------------------
是否缺頁:
* * * * * * * * *
(FIFO)=9次
LRU:
當前所需:
2 3 2 1 5 2 4 5 3 2 5 2
----------------------
當前記憶體:
2 2 3 3 2 1 5 2 4 5 3 3
3 2 2 1 5 2 4 5 3 2 5
1 5 2 4 5 3 2 5 2
---------------------
是否缺頁:
* * * * * * *
(LRU)=7次