操作系统:几种页面置换算法
1)最優置換算法(OPT)(理想置換算法)
最佳置換法(OPT):選擇將來不再使用或在最遠的將來才被訪問的頁調換出去(不便于實現)
這是一種理想情況下的頁面置換算法,但實際上是不可能實現的。該算法的基本思想是:發生缺頁時,有些頁面在內存中,其中有一頁將很快被訪問(也包含緊接著的下一條指令的那頁),而其他頁面則可能要到10、100或者1000條指令后才會被訪問,每個頁面都可以用在該頁面首次被訪問前所要執行的指令數進行標記。最佳頁面置換算法只是簡單地規定:標記最大的頁應該被置換。這個算法唯一的一個問題就是它無法實現。當缺頁發生時,操作系統無法知道各個頁面下一次是在什么時候被訪問。雖然這個算法不可能實現,但是最佳頁面置換算法可以用于對可實現算法的性能進行衡量比較。
2)先進先出置換算法(FIFO)
最簡單的頁面置換算法是先入先出(FIFO)法。這種算法的實質是,總是選擇在主存中停留時間最長(即最老)的一頁置換,即先進入內存的頁,先退出內存。理由是:最早調入內存的頁,其不再被使用的可能性比剛調入內存的可能性大。建立一個FIFO隊列,收容所有在內存中的頁。被置換頁面總是在隊列頭上進行。當一個頁面被放入內存時,就把它插在隊尾上。
這種算法只是在按線性順序訪問地址空間時才是理想的,否則效率不高。因為那些常被訪問的頁,往往在主存中也停留得最久,結果它們因變“老”而不得不被置換出去。
FIFO的另一個缺點是,它有一種異常現象,即在增加存儲塊的情況下,反而使缺頁中斷率增加了。當然,導致這種異常現象的頁面走向實際上是很少見的。
3)最近最少使用(LRU)算法(時間)
FIFO算法和OPT算法之間的主要差別是,FIFO算法利用頁面進入內存后的時間長短作為置換依據,而OPT算法的依據是將來使用頁面的時間。如果以最近的過去作為不久將來的近似,那么就可以把過去最長一段時間里不曾被使用的頁面置換掉。它的實質是,當需要置換一頁時,選擇在最近一段時間里最久沒有使用過的頁面予以置換。這種算法就稱為最久未使用算法(LeastRecentlyUsed,LRU)。LRU算法是與每個頁面最后使用的時間有關的。當必須置換一個頁面時,LRU算法選擇過去一段時間里最久未被使用的頁面。
實現:(2種方法)
1)維護一個鏈表,最近剛剛使用的頁面移到鏈表表頭節點,那么任意時刻,鏈表表尾節點就都是最少使用的、
2)維護一個棧,將最近訪問的頁面放到棧頂,同時考察是否有相同的頁面在棧內,有的話抽出,因此棧頂是最近使用的,棧底都是最少使用的。
4)最不常用(LFU)置換算法 (頻率,計數器)
在采用最少使用置換算法時,應為在內存中的每個頁面設置一個移位寄存器,用來記錄該頁面被訪問的頻率。該置換算法選擇在之前時期使用最少的頁面作為淘汰頁。由于存儲器具有較高的訪問速度,例如100 ns,在1 ms時間內可能對某頁面連續訪問成千上萬次,因此,通常不能直接利用計數器來記錄某頁被訪問的次數,而是采用移位寄存器方式。每次訪問某頁時,便將該移位寄存器的最高位置1,再每隔一定時間(例如100 ns)右移一次。這樣,在最近一段時間使用最少的頁面將是最小的頁。
LFU置換算法的頁面訪問圖與LRU置換算法的訪問圖完全相同;或者說,利用這樣一套硬件既可實現LRU算法,又可實現LFU算法。應該指出,LFU算法并不能真正反映出頁面的使用情況,因為在每一時間間隔內,只是用寄存器的一位來記錄頁的使用情況,因此,訪問一次和訪問10 000次是等效的。
5)時鐘頁面置換算法(時間)? ? ? ?是對LRU的近似,對FIFO的改進
需要使用到訪問位。把各個頁面組織成環形鏈表(類似于時鐘面)。把指針指向最老的頁面。
當發生一個缺頁中斷的時候。若它的訪問位為0,則淘汰,指針下移,頁面插入;若訪問位為1,則把該位置0,指針下移,繼續尋找,直到找到被淘汰的頁面。
Clock算法和LRU算法缺頁中斷次數是相近的!Clock使用一個比特位來表示最近一段時間的訪問情況。
當所有的訪問位都為1的時候,Clock算法就退化為FIFO算法!!!
?
6)二次機會算法(時間)
利用頁表項中的訪問位和臟位。是對Clock算法的改進,用于減少將頁面寫回磁盤的IO次數。
既被訪問,又被寫的位具有兩次機會!其他的情況下只有一次機會!
used? dirty? ? ? ? ? --------? ? ? ?used? ? ?dirty
0? ? ? ? 0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?置換
0? ? ? ? 1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0? ? ? ? ? 0
1? ? ? ? 0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0? ? ? ? ?0
1? ? ? ??1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0? ? ? ? ?1? ? ? ? ? ? 此時兩次機會
頁面置換算法
總結
以上是生活随笔為你收集整理的操作系统:几种页面置换算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统:连续分配、分页和分段三种存储分
- 下一篇: 操作系统:虚拟内存的定义及实现方式