頁面置換演算法

2021-09-27 15:22:58 字數 1022 閱讀 8537

作用:

用於分配給程序記憶體頁面不夠時,決定那個頁面要被置換,好的演算法需要減少頁面的換入換出次數。特殊的對於作業系統的某些關鍵執行記憶體位址需要對頁的鎖定標誌位置為1,防止被置換。

1、最優頁面置換演算法:

當缺頁發生時,對於儲存在記憶體的每乙個邏輯頁面計算在他下一次訪問前需要等待多少時間,從中選擇等待時間最長的那個作為置換的頁面。(很難實現但可以作為標準評價其他演算法)

2、先進先出演算法fifo演算法:

維護乙個鍊錶,舊的鍊錶在頭部,新的頁表插入尾部,要置換時將頭部的舊鍊錶刪除,加入新的頁表。(缺點是調出的頁面可能是經常需要訪問的頁面,並且有belay現象)

3、最近最久未使用演算法:

缺頁時選擇最久未被使用的頁面置換掉。

(實現:1、需要維護頁面鍊錶,訪問到記憶體時將訪問的頁表摘到頭部,缺頁就將末尾的頁表置換。2、使用棧實現,訪問頁面時將相應的頁表從棧中調出,沒有這個頁面就將棧底去掉,壓入新的頁)

4、時鐘頁面演算法(lru的近似實現,因為lru的操作太耗時)

需要使用到頁表項中標誌為叫訪問位 used bit,將所有頁表形成乙個環形鍊錶,訪問過就標誌位置為1,並設定乙個指標指向最老的頁,下一次缺頁要檢視指標的頁的標誌位是不是0,是0就直接替換,否則就置為0讓指嚮往下乙個節點對比直到有0的標記位的頁表給替換掉,指標指向下乙個。

5、二次機會法:

對時鐘頁面演算法的改進,使用頁面標誌為的dirty bit標記讀操作和寫操作(判斷是否需要寫回外存),指標時根據兩個標誌位判斷是否置換,當兩個標誌位都是0時就替換掉,如果user bit是0,dirty bit是1,就將dirty bit置為0再往下走。都是1的話要先將user bit置為0,下一輪再將dirty bit 置為1。

6、最不常用演算法(lfu最小頻次演算法):

選擇訪問次數最少的頁面,維護乙個頁面計數器。缺頁時淘汰次數最小的頁面。

頁面置換演算法

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