頁面三大置換演算法

2021-10-24 02:47:21 字數 2860 閱讀 3068

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

這是一種理想情況下的頁面置換演算法,但實際上是不可能實現的。該演算法的基本思想是:發生缺頁時,有些頁面在記憶體中,其中有一頁將很快被訪問(也包含緊接著的下一條指令的那頁),而其他頁面則可能要到10、100或者1000條指令後才會被訪問,每個頁面都可以用在該頁面首次被訪問前所要執行的指令數進行標記。

最佳頁面置換演算法只是簡單地規定:標記最大的頁應該被置換。這個演算法唯一的乙個問題就是它無法實現。當缺頁發生時,作業系統無法知道各個頁面下一次是在什麼時候被訪問。雖然這個演算法不可能實現,但是最佳頁面置換演算法可以用於對可實現演算法的效能進行衡量比較。

7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1

演算法執行如下操作步驟:

程式執行時,先將7,0,1三個頁面裝入記憶體。(最開始的時候記憶體不為空)

之後,當程序要訪問頁面2的時候,將會產生缺頁中斷。此時根據最佳置換演算法,因為頁面7要在第18次才能訪問,頁面0在第5次訪問,頁面1在第14次訪問,頁面7最久不被使用,所以將頁面7淘汰;

當程序0要訪問時,因為它已存在在記憶體所以不必產生缺頁中斷; 當頁面3要訪問時,又引起缺頁中斷淘汰1;

依次類推直到最後乙個頁面訪問完。下圖為採用最佳置換演算法的置換圖。由圖可得,採用最佳置換演算法發生了6次缺頁中斷。

最簡單的頁面置換演算法是先入先出(fifo)法。這種演算法的實質是:總是選擇在主存中停留時間最長(即最老)的一頁置換,即先進入記憶體的頁,先退出記憶體。理由是:最早調入記憶體的頁,其不再被使用的可能性比剛調入記憶體的可能性大。建立乙個fifo佇列,收容所有在記憶體中的頁。被置換頁面總是在佇列頭上進行。當乙個頁面被放入記憶體時,就把它插在隊尾上。

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

fifo的另乙個缺點是,它有一種異常現象,即在增加儲存塊的情況下,反而使缺頁中斷率增加了。當然,導致這種異常現象的頁面走向實際上是很少見的。(先進先出的效能最差,因為與通常頁面的使用規則不符合,所以實際應用少)

演算法執行如下操作步驟:

程式執行時,先將4,3,2三個頁面裝入記憶體。

之後,當程序要訪問頁面1的時候,將會產生缺頁中斷此時根據先進先出置換演算法,因為頁面4是最先進入記憶體的,所以將頁面4換出;同理4 3 2分別替換3,2,1。

當程序4要訪問時,因為它已存在在記憶體所以不必產生缺頁中斷; 當頁面2要訪問時,又引起缺頁中斷淘汰4;

依次類推直到最後乙個頁面訪問完。圖為採用先進先出置換演算法的置換圖。由圖可得,採用先進先出置換演算法發生了9次缺頁中斷。先進先出的頁面置換比最佳置換演算法的頁面置換正好多了一倍; 4

3214

5432

1544

4321

4532

3321

4532

1214

5321

5 缺頁次數=總列數-空白列數=7

缺頁率=缺頁數/總列數=87.5%

fifo演算法和opt演算法之間的主要差別是,fifo演算法利用頁面進入記憶體後的時間長短作為置換依據,而opt演算法的依據是將來使用頁面的時間。如果以最近的過去作為不久將來的近似,那麼就可以把過去最長一段時間裡不曾被使用的頁面置換掉。它的實質是:當需要置換一頁時,選擇在之前一段時間裡最久沒有使用過的頁面予以置換。這種演算法就稱為最久未使用演算法(least recently used,lru)。

lru演算法是與每個頁面最後使用的時間有關的。當必須置換乙個頁面時,lru演算法選擇過去一段時間裡最久未被使用的頁面。(lru演算法是經常採用的頁面置換演算法)

演算法執行如下操作步驟:

程式執行時,先將7,0,1三個頁面裝入記憶體。

之後,當程序要訪問頁面2的時候,將會產生缺頁中斷。此時根據最近最久未使用置換演算法,因為頁面7是最近最久未被使用的的,所以將頁面7淘汰;

當程序0要訪問時,因為它已存在在記憶體所以不必產生缺頁中斷;

在程序要訪問頁面3的時候,因為頁面1是最近最久未被使用的,所以將頁面1淘汰;

依次類推直到最後乙個頁面訪問完。下圖為採用最近最久未使用的置換演算法的置換圖。由圖可得,採用最近最久未使用置換演算法發生了3次缺頁中斷。

在虛擬儲存系統中,若程序在記憶體中佔三塊(開始時為空),採用先進先出頁面淘汰演算法,當執行訪問頁號序列為1、2、3、4、1、2、5、1、2、3、4、5、6時,將產生()次缺頁中斷。

a. 7

b. 8

c. 9

d. 10

正確答案:d

答案解析:

最開始記憶體塊是空的,即會產生三次中斷。

訪問頁號序列號:1、2、3、4、1、2、5、1、2、3、4、5、6

第一次(1):1

第二次(2):1 2

第三次(3):1 2 3

第四次(4):2 3 4

第五次(1):3 4 1

第六次(2):4 1 2

第七次(5):1 2 5

未改變(1)

未改變(2)

第八次(3):2 5 3

第九次(4):5 3 4

未改變(5)

第十次(6):3 4 6

總共10次

頁面置換演算法

常用的頁面置換演算法有三種 先進先出演算法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 ...

頁面置換演算法

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