頁面置換演算法

2021-08-02 04:47:20 字數 1656 閱讀 2090

作業系統頁面置換演算法:

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

目標:盡可能減少頁面的調動次數。

fifo

先進先出:置換先進來的頁面

lru最近最久未使用:選擇最長時間沒被引用的頁面

lfu最不常用:置換訪問次數最少的頁面

頁面的頻繁更換,導致整個系統效率急劇下降,這個現象稱為記憶體抖動。

抖動一般是記憶體分配演算法不好,記憶體太小引或者程式的演算法不佳引起的頁面頻繁從記憶體調入調出。

belady』s anomaly

: 所謂belady現象是指:採用fifo演算法時,如果對—個程序未分配它所要求的全部頁面,有時就會出現分配的頁面數增多但缺頁率反而提高的異常現象。因此根據定義,可知belady』s anomaly是記憶體換頁演算法。只有fifo演算法可能出現belady 異常,而lru和opt演算法永遠不會出現belady異常。

1.最佳置換演算法(opt)(理想置換演算法):從主存中移出永遠不再需要的頁面;如無這樣的頁面存在,則選擇最長時間不需要訪問的頁面。於所選擇的被淘汰頁面將是以後永不使用的,或者是在最長時間內不再被訪問的頁面,這樣可以保證獲得最低的缺頁率。 最佳置換演算法可以用來評價其他演算法。

2.先進先出置換演算法(fifo):是最簡單的頁面置換演算法。這種演算法的基本思想是:當需要淘汰乙個頁面時,總是選擇駐留主存時間最長的頁面進行淘汰,即先進入主存的頁面先淘汰。其理由是:最早調入主存的頁面不再被使用的可能性最大。 

注意:記憶體的頁面中「最老「的頁面,會被新的網頁直接覆蓋,而不是「最老「的頁面先出隊,然後新的網頁從隊尾入隊。

3.最近最久未使用(lru)演算法:這種演算法的基本思想是:利用區域性性原理,根據乙個作業在執行過程中過去的頁面訪問歷史來推測未來的行為。它認為過去一段時間裡不曾被訪問過的頁面,在最近的將來可能也不會再被訪問。所以,這種演算法的實質是:當需要淘汰乙個頁面時,總是選擇在最近一段時間內最久不用的頁面予以淘汰。 

lru演算法根據各頁以前的情況,是「向前看」的,而最佳置換演算法則根據各頁以後的使用情況,是「向後看」的。

4. lfu(least frequently used)最近最少使用演算法。它是基於「如果乙個資料在最近一段時間內使用次數很少,那麼在將來一段時間內被使用的可能性也很小」的思路。

注意lfu和lru演算法的不同之處,lru的淘汰規則是基於訪問時間,而lfu是基於訪問次數的。舉個簡單的例子:

假設快取大小為3,資料訪問序列為set(2,2),set(1,1),get(2),get(1),get(2),set(3,3),set(4,4),

則在set(4,4)時對於lfu演算法應該淘汰(3,3),而lru應該淘汰(1,1)。

例子:假定系統為某程序分配了三個物理塊,並考慮有以下頁面號引用串:    7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1  每種置換方式所產生的缺頁數和置換數:

opt:發生缺頁中斷的次數為9,頁面置換的次數為6。

fifo:頁面置換次數為12。

lru:置換次數為9.

頁面置換演算法

常用的頁面置換演算法有三種 先進先出演算法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 理想置換演算法 這是一種理想情況下的頁...