在位址對映過程中(虛擬記憶體機制),若在頁面中發現所要訪問的頁面不在記憶體中,則產生缺頁中斷。當發生缺頁中斷時,如果作業系統記憶體中沒有空閒頁面,則作業系統必須在記憶體選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做頁面置換演算法。
1、最佳置換演算法:只具有理論意義的演算法,用來評價其他頁面置換演算法。置換策略是將當前頁面中在未來最長時間內不會被訪問的頁置換出去。
2、先進先出fifo置換演算法:簡單粗暴的一種置換演算法,沒有考慮頁面訪問頻率資訊。每次淘汰最早調入的頁面。該演算法存在belady現象,即可能出現隨著分配的物理頁面數增加,缺頁率反而提高的異常現象。
3、最近最久未使用演算法lru:演算法賦予每個頁面乙個訪問字段,用來記錄上次頁面被訪問到現在所經歷的時間t,每次置換的時候把t值最大的頁面置換出去(實現方面可以採用暫存器或者棧的方式實現)。
4、時鐘演算法clock(也被稱為是最近未使用演算法nru):頁面設定乙個訪問位,並將頁面鏈結為乙個環形佇列,頁面被訪問的時候訪問位設定為1。頁面置換的時候,如果當前指標所指頁面訪問為0,那麼置換,否則將其置為0,迴圈直到遇到乙個訪問為位0的頁面。
5、改進型clock演算法(二次機會法):在clock演算法的基礎上新增乙個修改位(用來判斷當前記憶體中的資料是否有修改),替換時根據訪問位和修改位綜合判斷。優先替換訪問位和修改位都是0的頁面,其次是訪問位為0修改位為1的頁面。時鐘多次經過時:
1,1->0,1->0,0->置換出去
1,0->0,0->置換出去
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 理想置換演算法 這是一種理想情況下的頁...