1. 程式人生 > >最近最少使用算法(LRU)——頁面置換

最近最少使用算法(LRU)——頁面置換

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)——頁面置換