12 幾種頁面置換演算法

2021-08-20 06:22:35 字數 2508 閱讀 2751

1

)最佳置換演算法(

opt)(理想置換演算法)

最佳置換法(

opt):選擇將來不再使用或在最遠的將來才被訪問的頁調換出去(不便於實現)

這是一種理想情況下的頁面置換演算法,但實際上是不可能實現的。該演算法的基本思想是:發生缺頁時,有些頁面在記憶體中,其中有一頁將很快被訪問(也包含緊接著的下一條指令的那頁),而其他頁面則可能要到10、

100或者

1000

條指令後才會被訪問,每個頁面都可以用在該頁面首次被訪問前所要執行的指令數進行標記。

最佳頁面置換演算法只是簡單地規定:標記最大的頁應該被置換。這個演算法唯一的乙個問題就是它無法實現

。當缺頁發生時,作業系統無法知道各個頁面下一次是在什麼時候被訪問。雖然這個演算法不可能實現,

但是最佳頁面置換演算法可以用於對可實現演算法的效能進行衡量比較。

2

)先進先出置換演算法(

fifo

最簡單的頁面置換演算法是先入先出(

fifo

)法。這種演算法的實質是,總是選擇在主存中停留時間最長(即最老)的一頁置換,即先進入記憶體的頁,先退出記憶體。理由是:最早調入記憶體的頁,其不再被使用的可能性比剛調入記憶體的可能性大。

建立乙個

fifo

佇列,收容所有在記憶體中的頁。被置換頁面總是在佇列頭上進行。當乙個頁面被放入記憶體時,就把它插在隊尾上。

這種演算法只是在按線性順序訪問位址空間時才是理想的,否則效率不高。因為那些常被訪問的頁,往往在主存中也停留得最久,結果它們因變「老

」而不得不被置換出去

fifo

的另乙個缺點是,它有一種異常現象,即在增加儲存塊的情況下,反而使缺頁中斷率增加了。當然,導致這種異常現象的頁面走向實際上是很少見的。3)

最近最久未使用(

lru)演算法

fifo演算法和opt演算法之間的主要差別是,fifo

演算法利用頁面進入記憶體後的時間長短作為置換依據,而

opt演算法的依據是將來使用頁面的時間。如果以最近的過去作為不久將來的近似,那麼就可以把過去最長一段時間裡不曾被使用的頁面置換掉。它的實質是,當需要置換一頁時,選擇在最近一段時間裡最久沒有使用過的頁面予以置換。這種演算法就稱為最久未使用演算法

leastrecentlyused

,lru

)。lru

演算法是與每個頁面最後使用的時間有關的。當必須置換乙個頁面時,

lru演算法選擇過去一段時間裡最久未被使用的頁面。

4

)最少使用(

lfu)置換演算法

在採用最少使用置換演算法時,應為在記憶體中的每個頁面設定乙個移位暫存器,用來記錄該頁面被訪問的頻率。該置換演算法選擇在之前時期使用最少的頁面作為淘汰頁。由於儲存器具有較高的訪問速度,例如

100 ns

,在1 ms

時間內可能對某頁面連續訪問成千上萬次,因此,通常不能直接利用計數器來記錄某頁被訪問的次數,而是採用移位暫存器方式。每次訪問某頁時,便將該移位暫存器的最高位置

1,再每隔一定時間(例如

100 ns)

右移一次。這樣,在最近一段時間使用最少的頁面將是最小的頁。

lfu

置換演算法的頁面訪問圖與

lru置換演算法的訪問圖完全相同;或者說,利用這樣一套硬體既可實現

lru演算法,又可實現

lfu演算法。應該指出,

lfu演算法並不能真正反映出頁面的使用情況,因為在每一時間間隔內,只是用暫存器的一位來記錄頁的使用情況,因此,訪問一次和訪問

10 000

次是等效的。

5

)第二次機會演算法(類似

lru2

第二次機會演算法的基本思想是與

fifo

相同的,但是有所改進,避免把經常使用的頁面置換出去。當選擇置換頁面時,檢查它的訪問位。如果是

0,就淘汰這頁;如果訪問位是

1,就給它第二次機會,並選擇下乙個

fifo

頁面。當乙個頁面得到第二次機會時,它的訪問位就清為

0,它的到達時間就置為當前時間。如果該頁在此期間被訪問過,則訪問位置

1。這樣給了第二次機會的頁面將不被淘汰,直至所有其他頁面被淘汰過(或者也給了第二次機會)。因此,如果乙個頁面經常使用,它的訪問位總保持為

1,它就從來不會被淘汰出去。

第二次機會演算法可視為乙個環形佇列。用乙個指標指示哪一頁是下面要淘汰的。當需要乙個儲存塊時,指標就前進,直至找到訪問位是

0的頁。隨著指標的前進,把訪問位就清為

0。在最壞的情況下,所有的訪問位都是

1,指標要通過整個佇列一周,每個頁都給第二次機會。這時就退化成

fifo

演算法了。

幾種頁面置換演算法

位址對映過程中,若在頁面中發現所要訪問的頁面不再記憶體中,則產生缺頁中斷。當發生缺頁中斷時作業系統必須在記憶體選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做頁面置換演算法。常見的置換演算法有 1 最佳置換演算法 opt 理想置換演算法 這是一種理想情況下的頁...

幾種常見頁面置換演算法分析

評價乙個演算法的優劣,可通過在乙個特定的儲存訪問序列 頁面走向 上執行它,並計算缺頁數量來實現。1 先入先出法 fifo 最簡單的頁面置換演算法是先入先出 fifo 法。這種演算法的實質是,總是選擇在主存中停留時間最長 即最老 的一頁置換,即先進入記憶體的頁,先退出記憶體。理由是 最早調入記憶體的頁...

頁面置換演算法

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