1. 程式人生 > 其它 >並行多核體系結構基礎——第五章需要掌握的頁面替換演算法

並行多核體系結構基礎——第五章需要掌握的頁面替換演算法

作業系統裡的一些頁面替換演算法

1、OPT(Optimal Replacement Algorithm)演算法

一句話概括:替換後置位最久會被訪問到的元素

由Belady提出,並行書上喜歡稱Belady最優演算法,又稱理想淘汰演算法、最佳頁面演算法等。其基本思想是:總選擇那些以後不再需要的或將來最長時間之後才會用到的頁面進行淘汰。

例:設系統為某程序分配3個物理塊,並且該程序執行的過程中,對頁面的訪問序列為:2、3、4、5、2、3、1、2、3、4、5、1。

解:
首先把2、3、4三個頁面裝入記憶體中。當訪問到5的時候,發現它不在記憶體中,於是產生頁面中斷。再根據OPT演算法將頁面4淘汰,因為4是最長時間之後才會被訪問到的頁面。依此類推,此程序執行中產生了4次中斷,其中斷率4/12=33%

技巧:從頁面走向序列中當前訪問頁面開始順著數,淘汰掉在頁架的頁面中最長訪問的一個,然後把當前訪問頁面補如進去。
你可以理解為:”向後看“/”向後數“/”順著數“

2、FIFO(First Input First Output)演算法

一句話概括:先進先出

是最早出現的頁面置換演算法,也是最直觀的置換演算法。演算法的思想是淘汰最先進入記憶體的頁面,也就是選擇一個在記憶體中駐留時間最久的頁面予以淘汰。

以上題的要求為例

解:
首先把2、3、4三個頁面裝入記憶體,根據FIFO演算法淘汰掉頁面2,因為頁面2是最先進入記憶體的,然後裝入頁面5……以此類推。

技巧:數每個頁架中的頁面出現次數,即是它駐留的時間,淘汰次數最多的一個即可,然後裝入新的頁面。

分配3個物理塊時,命中3次。

Belady現象:FIFO置換演算法會出現一種異常現象,即在相同的程序頁面訪問次序下,程序得到的物理塊數增多時,命中(要訪問的頁面在記憶體裡)次數有時不但不隨之增加,反而會有所下降

分配4個物理塊時,命中2次。

3、LRU(Least Recently Used)演算法

一句話概括:替換最近最久未被訪問的元素

LRU(Least recently used,最近最少使用)演算法根據資料的歷史訪問記錄來進行淘汰資料,其核心思想是“如果資料最近被訪問過,那麼將來被訪問的機率也更高”。

是最佳置換演算法的一種近似演算法。該演算法淘汰的頁面是在最近一段時間裡較久未被訪問的那一頁。它的基本思想是根據程式執行時所體現出的區域性性來考慮的,即那些剛被使用過的頁面,可能馬上還要被使用,而那些在較長時間裡未被使用的頁面,一般說可能不會馬上使用到。

例:設系統分配給某程序3個物理塊,頁面訪問序列為:4、3、2、1、4、3、5、4、3、2、1、5。

解:
首先,該程序執行時先將4、3、2三個頁面裝入記憶體,隨後根據LRU演算法淘汰頁面4,裝入頁面1。這是因為4是最久未被訪問到的頁面。

技巧:沿著頁面走向在當前訪問頁面的位置開始逆著數,最後一個就是淘汰的一個頁面。
例如:4、3、2、1,當訪問到頁面1時,淘汰頁面4。

4、MRU(Most Recently Used)演算法

一句話概括:替換前一個被訪問過的元素

並行多核處理書中稱該演算法為偽LRU演算法,轉自百度貼吧:【技術】關於MRU(Most recently used)演算法【雨停的天吧】_百度貼吧 (baidu.com)

首先,什麼是MRU? 說白了就是,當有一個新的頁要儲存的時候,把最後一個 命中 或 上一個進入 記憶體的東西 替換掉。 再直接點就是,把它前面一個要訪問的資料踢出去,然後儲存自己.

舉個例子, 有這麼一個 記憶體,大小為3, 而 9,36,3,13,9,36,25 為儲存佇列。

剛開始,記憶體未滿,9,36,3 依次儲存沒問題。 當13來的時候,要把3替換掉(注意,是要把最後一個儲存的替換掉!), 此時記憶體內為9,36,13。 然後9,36,依次命中。 再然後25來了,要替換的是36!而不是13!(雖然13是最後一個被儲存的,但36是最後一個被訪問的!),所以,記憶體的序列此時為 9,13,25。

另一個抽象點的例子,比如一個序列a,b,c,d,e,f,…… 如果b要被儲存,而空間已滿就把a踢出去(無論A是早就被儲存,這次命中 還是 這次剛被儲存),如果C要被儲存,而空間已滿就把b踢出去,以此類推