lru(least recently used)最少使用頁面置換演算法,顧名思義,就是替換掉最少使用的頁面。
fifo(first in first out,先進先出)頁面置換演算法,這是的最早出現的置換演算法。該演算法總是淘汰最先進入記憶體的頁面,即選擇在記憶體中駐留時間最長的頁面給予淘汰。
fifo置換演算法有這樣乙個奇怪現象:記憶體空間塊數越多,缺頁中斷率可能相反的越高(缺頁中斷次數越高)。
lfu(least frequently used)最近最少使用演算法,它是基於「如果乙個資料在最近一段時間內使用次數很少,那麼在將來一段時間內被使用的可能性也很小」的思路。
注意lfu和lru演算法的不同之處,lru的淘汰規則是基於訪問時間,而lfu是基於訪問次數的。
不可能實現的理想演算法:是指選擇的淘汰頁面,將是以後不再使用或未來最長時間內不再被訪問的頁面。來保證最低的缺頁率。
例子: 假定系統為某程序分配了三個物理塊,並考慮有以下的頁面號引用串:
(1)程序執行時,先將7,0,1 三個頁面裝入記憶體。
(2)當程序要訪問頁面2 時,將會產生缺頁中斷。此時os根據最佳置換演算法,將選擇頁面7 予以淘汰。這是因為頁面0 將作為第5 個被訪問的頁面,頁面1 是第14 個被訪問的頁面,而頁面7 則要在第18 次頁面訪問時才需調入。
(3)下次訪問頁面0時,因它已在記憶體而不必產生缺頁中斷。同理類推
由圖可看出,採用最佳置換演算法發生了6 次頁面置換。
置換最先調入記憶體的頁面,即置換在記憶體中駐留時間最久的頁面。即先進入主存的頁面先淘汰(換的位置依次前進)
按照進入記憶體的先後次序排列成佇列,從隊尾進入,從隊首刪除。
但是該演算法會淘汰經常訪問的頁面,不適應程序實際執行的規律,目前已經很少使用。
參考
演算法的實質是:當需要淘汰乙個頁面時,總是選擇在最近一段時間內最久不用的頁面予以淘汰。
它認為過去一段時間裡不曾被訪問過的頁面,在最近的將來可能也不會再被訪問
再對上面的例項釆用lru演算法進行頁面置換,如圖所示。
程序第一次對頁面2訪問時,將最近最久未被訪問的頁面7置換出去。
然後訪問頁面3時,將最近最久未使用的頁面1換出。
lru演算法的效能接近於opt,但是實現起來比較困難,且開銷大;fifo演算法實現簡單,但效能差。所以作業系統的設計者嘗試了很多演算法,試圖用比較小的開銷接近lru的效能,這類演算法都是clock演算法的變體。又稱最近未用(not recently used, nru)演算法
clock演算法的效能比較接近lru,而通過增加使用的位數目,可以使得clock演算法更加高效。在使用位的基礎上再增加乙個修改位,則得到改進型的clock置換演算法。這樣,每一幀都處於以下四種情況之一:
最近未被訪問,也未被修改(u=0, m=0)。
最近被訪問,但未被修改(u=1, m=0)。
最近未被訪問,但被修改(u=0, m=1)。
最近被訪問,被修改(u=1, m=1)。
演算法執行如下操作步驟:
從指標的當前位置開始,掃瞄幀緩衝區。在這次掃瞄過程中,對使用位不做任何修改。選擇遇到的第乙個幀(u=0, m=0)用於替換。
如果第1)步失敗,則重新掃瞄,查詢(u=0, m=1)的幀。選擇遇到的第乙個這樣的幀用於替換。在這個掃瞄過程中,對每個跳過的幀,把它的使用位設定成0。
如果第2)步失敗,指標將回到它的最初位置,並且集合中所有幀的使用位均為0。重複第1步,並且如果有必要,重複第2步。這樣將可以找到供替換的幀。
作業系統 頁面置換演算法
1 最佳頁面置換演算法 opt 其所選擇的被淘汰頁面,將是以後永不再用的,或許是在最長 未來 時間內不再被訪問的頁面。最佳置換演算法是一種理想化的演算法,具有最好的效能,但難於實現。先進先出置換演算法最直觀,但可能性能最差,故應用極少。優點 保證獲得最低的缺頁率 缺點 無法預知乙個程序在記憶體的若干...
作業系統 頁面置換演算法
我在很多地方遇到了這個問題,所以想寫來看看,避免在以後換回再次的遇到這個問題,就在今天進行深入的了解下這個問題,我先它會對我以後的生活工作會有很大的幫助的。在位址對映過程中,若在頁面中發現所要訪問的頁面不再記憶體中,則產生缺頁中斷。當發生缺頁中斷時作業系統必須在記憶體中選擇乙個頁面將其移出記憶體,以...
作業系統 頁面置換演算法
作業系統將記憶體按照頁的進行管理,在需要的時候才把程序相應的部分調入記憶體。當產生缺頁中斷時,需要選擇乙個頁面寫入。如果要換出的頁面在記憶體中被修改過,變成了 髒 頁面,那就需要先寫會到磁碟。頁面置換演算法,就是要選出最合適的乙個頁面,使得置換的效率最高。頁面置換演算法有很多,簡單介紹幾個。首先介紹...