在位址對映過程中,若在頁面中發現所要訪問的頁面不在記憶體中,則產生缺頁中斷。當發生缺頁中斷時,如果作業系統記憶體中沒有空閒頁面,則作業系統必須在記憶體選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做頁面置換演算法。
頁面置換演算法種類:
(1)fifo -- 先進先出
思路:選擇在記憶體駐留時間最長的頁面進行置換
實現:維護乙個記錄所有位於記憶體中的邏輯頁面鍊錶,鍊錶元素按駐留記憶體的時間排序,鏈首最長,鏈尾最短,出現缺頁時,選擇鏈首頁面進行置換,新頁面加到鏈尾
特點:實現簡單;效能較差,調出的頁面可能是經常訪問的
(2)lru -- 最近最久未使用
思路:選擇最長時間沒有被引用的頁面進行置換,因為如果某些頁面長時間未被訪問,則它們在將來還可能會長時間不會訪問
特點:可能達到最優的效果,維護這樣的訪問鍊錶開銷比較大
(3)lfu -- 最近最少使用
思路:缺頁時,置換訪問次數最少的頁面
實現:每個頁面設定乙個訪問計數,訪問頁面時,訪問計數加1,缺頁時,置換計數最小的頁面
特點:演算法開銷大,開始時頻繁使用,但以後不使用的頁面很難置換
(4)時鐘(clock)置換演算法
思路:僅對頁面的訪問情況進行大致統計
實現:在頁表項中增加訪問位,描述頁面在過去一段時間的內訪問情況,將各頁面組織成環形鍊錶,指標指向最先調入的頁面,訪問頁面時,在頁表項記錄頁面訪問情況,缺頁時,從指標處開始順序查詢未被訪問的頁面進行置換
特點:時鐘演算法是lru和fifo的折中
(5)最佳置換演算法(opt)
最佳置換演算法,其所選擇的被淘汰的頁面將是以後永不使用的,或是在最長(未來)時間內不再被訪問的頁面。採用最佳置換演算法通常可保證最低的缺頁率。但是人們目前還無法與之,乙個程序在記憶體的若干個頁面中,哪乙個頁面是未來最長時間內不再被訪問的,因而該演算法是無法實現的,但是可以利用該演算法取評價其他的演算法。
頁面置換演算法
常用的頁面置換演算法有三種 先進先出演算法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 理想置換演算法 這是一種理想情況下的頁...