頁面置換演算法的功能:當出現缺頁異常,需調入新頁面而記憶體已滿時,置換演算法選擇被置換的物理頁面。
頁面置換演算法的設計目標:盡可能減少頁面的調入調出次數,把未來不再訪問或短期內不訪問的頁面調出。
接下來,我們介紹幾種常用的頁面置換演算法:
先進先出演算法(first-in first-out, fifo)
思路:選擇在記憶體駐留時間最長的頁面進行置換
實現:維護乙個記錄所有位於記憶體中的邏輯頁面鍊錶,鍊錶元素按駐留記憶體的時間排序,鏈首最長,鏈尾最短,出現缺頁時,選擇鏈首頁面進行置換,新頁面加到鏈尾
特點:實現簡單;效能較差,調出的頁面可能是經常訪問的
詳細的置換過程可以通過下圖進行理解,圖中共產生了5次缺頁
最近最久未使用演算法 (least recently used, lru)
思路:選擇最長時間沒有被引用的頁面進行置換,因為如果某些頁面長時間未被訪問,則它們在將來還可能會長時間不會訪問
實現:缺頁時,計算記憶體中每個邏輯頁面的上一次訪問時間,選擇上一次使用到當前時間最長的頁面
特點:可能達到最優的效果,維護這樣的訪問鍊錶開銷比較大
詳細的置換過程見下圖,圖中只產生了3次缺頁
最不常用演算法(least frequently used, lfu)
思路:缺頁時,置換訪問次數最少的頁面
實現:每個頁面設定乙個訪問計數,訪問頁面時,訪問計數加1,缺頁時,置換計數最小的頁面
特點:演算法開銷大,開始時頻繁使用,但以後不使用的頁面很難置換
詳細的置換過程見下圖:執行在4個頁幀中,假定最初的訪問次數a->8 b->5 c->6 d->2
時鐘置換演算法(clock)
思路:僅對頁面的訪問情況進行大致統計
實現:在頁表項中增加訪問位,描述頁面在過去一段時間的內訪問情況,將各頁面組織成環形鍊錶,指標指向最先調入的頁面,訪問頁面時,在頁表項記錄頁面訪問情況,缺頁時,從指標處開始順序查詢未被訪問的頁面進行置換
特點:時鐘演算法是lru和fifo的折中
時鐘置換演算法過程如下圖:
作業系統 頁面置換演算法
1 最佳頁面置換演算法 opt 其所選擇的被淘汰頁面,將是以後永不再用的,或許是在最長 未來 時間內不再被訪問的頁面。最佳置換演算法是一種理想化的演算法,具有最好的效能,但難於實現。先進先出置換演算法最直觀,但可能性能最差,故應用極少。優點 保證獲得最低的缺頁率 缺點 無法預知乙個程序在記憶體的若干...
作業系統 頁面置換演算法
我在很多地方遇到了這個問題,所以想寫來看看,避免在以後換回再次的遇到這個問題,就在今天進行深入的了解下這個問題,我先它會對我以後的生活工作會有很大的幫助的。在位址對映過程中,若在頁面中發現所要訪問的頁面不再記憶體中,則產生缺頁中斷。當發生缺頁中斷時作業系統必須在記憶體中選擇乙個頁面將其移出記憶體,以...
作業系統 頁面置換演算法
作業系統將記憶體按照頁的進行管理,在需要的時候才把程序相應的部分調入記憶體。當產生缺頁中斷時,需要選擇乙個頁面寫入。如果要換出的頁面在記憶體中被修改過,變成了 髒 頁面,那就需要先寫會到磁碟。頁面置換演算法,就是要選出最合適的乙個頁面,使得置換的效率最高。頁面置換演算法有很多,簡單介紹幾個。首先介紹...