最近最少使用算法(LRU)——頁面置換
阿新 • • 發佈:2018-05-22
font logs max spa 地址 ont lag 頁面置換 之前
原創
上一篇博客寫了先進先出算法(FIFO)——頁面置換:http://www.cnblogs.com/chiweiming/p/9058438.html
此篇介紹最近最少使用算法(LRU)——頁面置換,與上一篇的代碼大同小異,只是用了不同的方法從頁面隊列
中選出需要淘汰出的頁面。
還是辣個栗子:
現內存頁面為: 15 31 24 17 18 5 9 26 4 21
部分地址流為: 4 31 24 17 18 26 17 5 5 9 31 18 18 21 15 8
頁面 8 為下一個需要調入進去的頁面,由於內存頁面已滿,需要使用LRU調出一個最近未被使用頁面。
尋找淘汰頁面的方式如下:
從頁面 8 往前看,遇到與內存頁面中相同的頁面即把它移除(即不淘汰它),等到移除了 max_page-1 個頁面之
後,剩下最後一個未被移除的頁面即是需要淘汰出去的。
在上面例子中,依次將 15 21 18 31 9 5 17 26 24 (已經9個),剩下最後一個 4 即是需要淘汰出去的頁面。
可以用這樣的代碼去實現:用一個數組 flag 來備份內存頁塊號中的頁面,從 8 往前看,依次將之前的數和數組裏
面的數比較,若匹配成功,則將數組裏面此位置 -1 ,等到置了 max_page-1 個 -1 後跳出;再從 flag 中篩選出不
是 -1 的值(即要淘汰出的頁面),再拿此值和當前內存頁面隊列中的值比較,匹配成功則將此頁面調出去,將頁
面 8 調入。
最近最少使用算法(LRU)——頁面置換