原文在這裡
程序執行時,若其訪問的頁面不在記憶體而需將其調入,
但記憶體已無空閒空間時,就需要從記憶體中調出一頁程式或資料,
送入磁碟的對換區,
選擇調出頁面的演算法就稱為頁面置換演算法。
1.最佳置換演算法:
最佳(optimal, opt)置換演算法所選擇的被淘汰頁面將是以後永不使用的,或者是在最長時間內不再被訪問的頁面,這樣可以保證獲得最低的缺頁率。但由於人們目前無法預知程序在記憶體下的若千頁面中哪個是未來最長時間內不再被訪問的,因而該演算法無法實現。
最佳置換演算法大概就是,已經知道了未來那些頁需要使用,當發生頁面置換時,
選擇未來最晚被使用的頁,將他換出記憶體。
2.先進先出置換演算法fifo:
見名知意,當發生頁面置換時,選擇最先進入記憶體的頁面,將其換出。
效能較差。
3.最近最久未使用演算法lru
選擇最近最長時間未訪問過的頁面予以淘汰,它認為過去一段時間內未訪問過的頁面,在最近的將來可能也不會被訪問。該演算法為每個頁面設定乙個訪問字段,來記錄頁面自上次被訪問以來所經歷的時間,淘汰頁面時選擇現有頁面中值最大的予以淘汰。
lru的實現:為每乙個記憶體中的頁面加乙個字段儲存未訪問的次數,
當發生頁面置換時,
如果頁已經存在,則存在的頁次數變成0,其他頁面次數加1,
如果不存在,選擇次數最多的頁面,將其換出,換入的頁次數初始化為0。
lru的效能接近opt,實現困難。
4.時鐘置換演算法clock
lru效能好,但實現困難,
fifo實現簡單,但效能不好,
所以就有了clock。
clock演算法:
給每一幀(頁所在的記憶體)加乙個使用位,當頁載入到此幀時使用位設為1,
當該頁再次被訪問時,頁的使用位頁設為1,
當發生置換時,用於置換的候選幀集合看做乙個迴圈緩衝區,並且有乙個指標與此相關聯。
當某一頁被置換時,該指標指向緩衝區的下一幀。
當需要置換頁時,作業系統掃瞄緩衝區,查詢使用位被置為0的一幀,
當遇到使用位為1的幀時,作業系統將其使用位設為0,
如果這個過程開始前,緩衝區所有幀使用位都為0,則選擇遇到的第乙個幀置換,
如果所有幀的使用位都為1,則指標在緩衝區中完整的迴圈一周,把所有的使用位都置為0,
並留在最初的位置上,替換該幀中的頁。
效能接近lru。
大概就是,先考慮所有使用位是1還是0的情況,然後考慮普通情況,遇到0就將頁換出。
頁面置換演算法
常用的頁面置換演算法有三種 先進先出演算法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 理想置換演算法 這是一種理想情況下的頁...