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