頁面置換算法 LRU & LFU 算法

頁面置換算法介紹

評價一個頁面替換算法好壞的標準主要有兩個,一是命中率要高,二是算法要容易實現。要提升一個頁面替換算法的命中率,首先要使這種算法能正確反映程序的局部性,其次是這種算法要可以充分利用主存中頁面調度狀況的歷史信息,或者可以預測主存中將要發生的頁面調度狀況。 
  頁面替換算法主要用於以下幾個地方: 
  (1) 虛擬存儲器中,主存頁面(或程序段)的替換。 
  (2) Cache中的塊替換。 
  (3) 虛擬存儲器的快慢表中,快表的替換。 
  (4) 虛擬存儲器中,用戶基地址寄存器的替換。 android

 

LFU算法

    近期最少使用算法,即LFU算法(Least Frequently Used algorithm)。這種算法選擇近期最少訪問的頁面做爲被替換的頁面。顯然,這是一種很是合理的算法,由於到目前爲止最少使用的頁面,極可能也是未來最少訪問的頁面。該算法既充分利用了主存中頁面調度狀況的歷史信息,又正確反映了程序的局部性。可是,這種算法實現起來很是困難,它要爲每一個頁面設置一個很長的計數器,而且要選擇一個固定的時鐘爲每一個計數器定時計數。在選擇被替換頁面時,要從全部計數器中找出一個計數值最大的計數器。所以,一般採用以下一種相對比較簡單的方法。算法

    核心思想:若是一個數據在最近一段時間內使用次數不多,那麼在未來一段時間內被使用的可能性也很小「緩存

    傳統實現:ui

    

        1. 新加入數據插入到隊列尾部(由於引用計數爲1);spa

        2. 隊列中的數據被訪問後,引用計數增長,隊列從新排序;.net

        3. 當須要淘汰數據時,將已經排序的列表最後的數據塊(訪問次    數最少的塊)刪除。3d

    實現方式:netty

        可用一個小頂堆+hashmap,來實現;blog

       小頂堆對訪問次數排序排序

       hashmap對每一個緩存節點訪問次數來更新
 

 

 

      改良版算法:Window-LFU(置換指定時間內,按照LFU規則排序淘汰數量

     

  

        1)記錄了過去W個訪問記錄;

        2)須要淘汰時,將W個訪問記錄按照LFU規則排序淘汰

        舉例以下:

            假設歷史訪問記錄長度設爲9,緩存大小爲3,圖中不一樣顏色表明針對不一樣數據塊的訪問,同一顏色表明            針 對同一數據的屢次訪問。

            樣例1:黃色訪問3次,藍色和橘色都是兩次,橘色更新,所以緩存黃色、橘色、藍色三個數據塊

            樣例2:綠色訪問3次,藍色兩次,暗紅兩次,藍色更新,所以緩存綠色、藍色、暗紅三個數據塊

         須要維護一個隊列,記錄數據的訪問流歷史;須要排序。          

          Window-LFU只記錄一部分的訪問歷史記錄,不須要記錄全部的數據訪問歷史,所以內存消耗和排序消耗都            比LFU要低。

 

LRU算法

     最久沒有使用算法,即LRU算法(Least Recently Used algorithm)。這種算法把近期最久沒有被訪問過的頁面做爲被替換的頁面。它把LFU算法中要記錄數量上的"多"與"少"簡化成判斷"有"與"無",所以,實現起來比較容易。 

     核心思想:若是在一段時間內長時間不訪問的頁面未來也不會訪問

    傳統實現原理:

        假設 序列爲 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

LRU算法擴展,能夠看個人另外一篇博文:

    http://my.oschina.net/manmao/blog/601698

LRU算法簡單實現:

https://mp.weixin.qq.com/s?__biz=MzAxNDI5NzEzNg==&mid=2651157126&idx=1&sn=aec050aae2efc427c1397f4a7e2fde6a&chksm=8064a3d9b7132acff5614b7c9fbcb60770a52970fa4f8b76e1ab06f8ce803040f998e3f42e95&scene=0&key=1a6dc58b177dc626a128add5b7c4924b9be81733861d4c335d100d3f533c6dd072c017e31903757829134be3cbf22354&ascene=14&uin=NzkwODcyMzQx&devicetype=android-19&version=26031732&nettype=WIFI&pass_ticket=b1FAKwVG%2FaONUhFzptp9fVyQ%2BjKJN0WTZmJ10%2FqDvgH1E3rS%2BVODI%2F%2F%2FHLW%2BF%2BBc

相關文章
相關標籤/搜索