我們這裏只學習局部頁面置換算法!
功能:當缺頁中斷髮生時,需要調入新的頁面而內存已滿時,選擇內存當中那個物理頁面被替換
目標:儘可能減少頁面的換進換出次數(即缺頁中斷的次數)
一、最優頁面置換算法
把未來不再使用的或短期內較少使用的頁面換出
最優頁面置換算法,是不可能實現
的,因爲它是需要知道未來的,所以最優頁面置換算法,只能當作頁面置換算法中的一個理想標準。
我們其他的頁面置換算法是通過局部性原理
的指導下通過過去的數據,對未來進行預測
,可以通過和最優頁面置換算法進行比較,來測評其他頁面置換算法的效果。
二、先進先出算法(FIFO)
基本思路:
選擇在內存中駐留時間最長的頁面並淘汰
缺點:
性能較差,調出的頁面有可能是經常需要被訪問的頁面,並且有Belady現象。FIFO算法很少單獨使用。
FIFO的實例:
注意最開始的a、b、c、d進入內存的順序!
三、最近最久未使用算法(LRU)
基本思路:
當一個缺頁中斷髮生時,選擇最久未使用的那個頁面並淘汰。
特點:
它是對最優頁面置換算法的一個近似,其依據還是程序的局部性原理。
LRU實例:
四、時鐘頁面置換算法
它是一種LRU的近似,對FIFO的一種改進
實例:
產生缺頁中斷,我們要在存在內存裏的頁中選一個,放入硬盤,所以存在位肯定都是1,最開始指向page0,最先進入內存那個,然後像時鐘一樣依次找到每個page,若used bit=1,則將其置爲0,used bit=0,則將此頁放入硬盤!
五、二次機會法
在原來的clock方法中,再加入一位dirty bit,標誌這個頁是否寫入過,寫入時,此位會置1,沒寫過的頁,硬盤和此頁內容一致,所以不需要再回寫到磁盤,寫過的頁,需要回寫到磁盤,開銷較大。
二次機會法,意味着有兩次機會,這兩次機會是給最近被寫入過的頁的,只要used bit和dirty bit都爲0,才能被替換。