1. 程式人生 > >淘汰演算法LRU與LFU

淘汰演算法LRU與LFU

LRU是最近最少使用頁面置換演算法(Least Recently Used) ,即最近最少使用頁面置換演算法,是為虛擬頁式儲存管理服務的,是根據頁面調入記憶體後的使用情況進行決策了。由於無法預測各頁面將來的使用情況,只能利用“最近的過去”作為“最近的將來”的近似,因此,LRU演算法就是將最近最久未使用的頁面予以淘汰。

可以用一個特殊的棧來儲存當前正在使用的各個頁面的頁面號。當一個新的程序訪問某頁面時,便將該頁面號壓入棧頂,其他的頁面號往棧底移,如果記憶體不夠,則將棧底的頁面號移除。這樣,棧頂始終是最新被訪問的頁面的編號,而棧底則是最近最久未訪問的頁面的頁面號。

LRU演算法也可以用於一些實際的應用中,如你要做一個瀏覽器,或類似於淘寶客戶端的應用的就要用到這個原理。大家都知道瀏覽器在瀏覽網頁的時候會把下載的圖片臨時儲存在本機的一個資料夾裡,下次再訪問時就會,直接從本機臨時資料夾裡讀取。但儲存圖片的臨時資料夾是有一定容量限制的,

如果你瀏覽的網頁太多,就會一些你最不常使用的影象刪除掉,只保留最近最久使用的一些圖片。

LFU是最近最不常用頁面置換演算法(Least Frequently Used),一定時間內被訪問次數最少的頁。

LFU時間週期

使用次數的時間長度,這個時間不能太短,短了體現不出哪些資料是熱點;同樣也不能太長,太長的話,某一個時間點的對某個資料的訪問峰值可以長期影響我們的淘汰策略。一般實現的演算法可以根據業務特點去調節這個引數

LRU與LFU不同點

比如,第二種方法的時期T為10分鐘,如果每分鐘進行一次調頁,主存塊為3,若所需頁面走向為2 1 2 1 2 3 4

注意,當調頁面4時會發生缺頁中斷

若按LRU演算法,應換頁面1(1頁面最久未被使用) 但按LFU演算法應換頁面3(十分鐘內,頁面3只使用了一次)

可見LRU關鍵是看頁面最後一次被使用到發生排程的時間長短,

而LFU關鍵是看一定時間段內頁面被使用的頻率!