說明
對於虛擬頁式存儲,內外存信息的替換是以頁面為單位進行的——當需要一個放在外存的頁面時,把它調入記憶體,同時為了保持原有空間的大小,還要把一個記憶體中的頁面調出至外存。這種調動越少,進程執行的效率也就越高。那么,把哪個頁面調出去可以達到調動儘量少的目的?我們需要一個算法。
其實,達到這樣一種情形的算法是最理想的了——每次調換出的頁面是所有記憶體頁面中最遲將被使用的——這可以最大限度的推遲頁面調換,這種算法,被稱為理想頁面置換算法。可惜的是,這種算法是無法實現的。
差距
為了儘量減少與理想算法的差距,產生了各種精妙的算法,最少使用頁面置換算法便是其中一個。LRU算法的提出,是基於這樣一個事實:在前面幾條指令中使用頻繁的頁面很可能在後面的幾條指令中頻繁使用。反過來說,已經很久沒有使用的頁面很可能在未來較長的一段時間內不會被用到。這個,就是著名的局部性原理——比記憶體速度還要快的cache,也是基於同樣的原理運行的。因此,我們只需要在每次調換時,找到最近最久未使用的那個頁面調出記憶體。這就是LRU算法的全部內容。
LRU在電子系統中的解釋:
Line Replaceable Unit — LRU,電子系統中常採用模組化設計,這種可更換的模組單元則被叫做LRU,中文名稱是“線性可更換單元”
例子
LRU(least recently used)最近最少使用。
假設 序列為 4 3 4 2 3 1 4 2
物理塊有3個 則
首輪 4調入記憶體 4
次輪 3調入記憶體 3 4
之後 4調入記憶體 4 3
之後 2調入記憶體 2 4 3
之後 3調入記憶體 3 2 4
之後 1調入記憶體 1 3 2(因為最少使用的是4,所以丟棄4)
之後 4調入記憶體 4 1 3(原理同上)
最後 2調入記憶體 2 4 1
又如:
考慮下述頁面走向:
1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6
1 1
2 21
3 321
4 432 1
2 2 4 3 1
1 1 2 4 3
5 5 1 2 4
6 6 5 1 2
2 2 6 5 1
1 1 2 6 5
2 2 1 6 5
3 3 2 1 6
7 7 3 2 1
6 6 7 3 2
3 3 6 7 2
2 2 3 6 7
1 1 2 3 6
2 2 1 3 6
3 3 2 1 6
6 6 3 2 1
發生缺頁中斷的次數為15。在LRU算法中,最少使用的頁面被先換出。當頁6要調入時,記憶體的狀態為5、1、2,考查頁6之前調入的頁面,分別為5、1、2,可見2為一段時間內使用最少的,本次應換出,然後把頁6調入記憶體。