操作系統--總結幾種常見的頁面置換算法

什麼是頁面置換算法?

在地址映射過程中,若在頁面中發現所要訪問的頁面不在內存中,則產生缺頁中斷。
當發生缺頁中斷時,如果操作系統內存中沒有空閒頁面,則操作系統必須在內存選擇一個頁面將其移出內存,以便爲即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做頁面置換算法。

常見的頁面置換算法?

理想頁面置換算法(OPT)

理想頁面置換算法(OPT)
這是一種理想情況下的頁面置換算法,但實際上是不可能實現的。該算法的基本思想是:發生缺頁時,有些頁面在內存中,其中有一頁將很快被訪問(也包含緊接着的下一條指令的那頁),而其他頁面則可能要到10、100或者1000條指令後纔會被訪問,每個頁面都可以用在該頁面首次被訪問前所要執行的指令數進行標記。最佳頁面置換算法只是簡單地規定:標記最大的頁應該被置換。這個算法唯一的一個問題就是它無法實現。當缺頁發生時,操作系統無法知道各個頁面下一次是在什麼時候被訪問。雖然這個算法不可能實現,但是最佳頁面置換算法可以用於對可實現算法的性能進行衡量比較。

先進先出置換算法(FIFO)

先進先出置換算法(FIFO)
最簡單的頁面置換算法是先入先出(FIFO)法。這種算法的實質是,總是選擇在主存中停留時間最長(即最老)的一頁置換,即先進入內存的頁,先退出內存。理由是:最早調入內存的頁,其不再被使用的可能性比剛調入內存的可能性大。建立一個FIFO隊列,收容所有在內存中的頁。被置換頁面總是在隊列頭上進行。當一個頁面被放入內存時,就把它插在隊尾上。
這種算法只是在按線性順序訪問地址空間[1] 時纔是理想的,否則效率不高。因爲那些常被訪問的頁,往往在主存中也停留得最久,結果它們因變“老”而不得不被置換出去。
FIFO的另一個缺點是,它有一種異常現象,即在增加存儲塊的情況下,反而使缺頁中斷率增加了。當然,導致這種異常現象的頁面走向實際上是很少見的。

最近最少使用算法(LRU)

FIFO算法和OPT算法之間的主要差別是,FIFO算法利用頁面進入內存後的時間長短作爲置換依據,而OPT算法的依據是將來使用頁面的時間。如果以最近的過去作爲不久將來的近似,那麼就可以把過去最長一段時間裏不曾被使用的頁面置換掉。它的實質是,當需要置換一頁時,選擇在之前一段時間裏最久沒有使用過的頁面予以置換。這種算法就稱爲最久未使用算法。

一般常見的就是這三種頁面置換算法,當然還有一些其他的。
比如:Clock置換算法,NRU(最近未使用)算法,最少使用(LFU)置換算法等。

一般的題都是求缺頁次數。

FIFO:先進來的要先出去,每次換先進來的,若不缺頁則原頁不變。

LRU:最近最少使用的,把剛使用的放到第一個。當不缺頁時把原有的這個頁放到最上面。是一個實現起來比較簡單的頁面置換算法,其基本原則是“選擇最早進入主存的頁面淘汰”,理由是最早進入的頁面,其不再使用的可能性比最近調入的頁面要大。

OPT:根據未來實際使用情況將未來的近期裏不用的頁替換出去。這種算法是用來評價期它替換算法好壞的標準。不可能實現。所選擇的被淘汰頁面將是以後永不使用的,或者是在最長時間內不再被訪問的頁面,這樣可以保證獲得最低的缺頁率。

1.某程序在內存中分配3頁,初始爲空,頁面走向爲4,3,2,1,4,3,5,4,3,2,1,5。給出LRU,OPT,FIFO的缺頁次數。
這裏寫圖片描述
共發生9次缺頁中斷。

這裏寫圖片描述
共發生10次缺頁中斷。

這裏寫圖片描述
共發生7次缺頁中斷。

2.在一個請求頁式存儲管理中,一個程序的頁面走向爲3,4,2,1,4,5,4,3,5,1,2,並採用LRU算法。社分配給該程序的存儲塊數 S 分別爲 3 和 4,在該訪問中發生的缺頁次數 F 是()。
以下用x表示缺頁的情況

當S=3時

LRU 3 4 2 1 4 5 3 4 5 1 2
頁1 3 4 2 1 4 5 3 4 5 1 2
頁2 3 4 2 1 4 5 3 3 5 1
頁3 3 4 2 1 4 5 4 3 5
x x x x y x x y y x x
所以F=8

當S=4時
LRU 3 4 2 1 4 5 3 4 5 1 2
頁1 3 4 2 1 4 5 3 4 5 1 2
頁2 3 4 2 1 4 5 3 4 5 1
頁3 3 4 2 1 4 5 3 4 5
頁4 3 3 2 1 1 1 3 4
x x x x y x x y y y x
所以F=7

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章