操做系統本質上是一個多級緩存系統,從cpu寄存器,cpu一級緩存,cpu二級緩存,cpu三級緩存,主內存,硬盤,從右到左訪問效率依次提高。如何在有限的資源內處理無限的數據?最理想的狀況是置換出將來短時間內不會被再次訪問的數據,可是咱們沒法預知將來,因此只能從數據在過去的訪問狀況中尋找規律進行置換。算法
LRU全稱是Least Recently Used,即最近最久未使用算法。其基於若是一個數據在最近一段時間沒有被訪問到,那麼在未來它被訪問的可能性也很小
的思路,也就是說優先刪除掉在過去一段時間內沒有被訪問的數據。緩存
利用雙向鏈表記錄數據順序,hashmap查詢數據;操作系統
LFU全稱是Least Frequently Used,即最近最少使用算法。其基於若是一個數據在最近一段時間內使用次數不多,那麼在未來一段時間內被使用的可能性也很小
的思路,也就是說刪除在過去一段時間內使用次數不多的數據;code
注意LFU和LRU算法的不一樣之處:LRU的淘汰規則是基於訪問時間,而LFU是基於訪問次數的。blog
一樣利用雙向鏈表記錄數據順序,hashmap查詢數據(存儲的節點還須要維護訪問次數)內存
FIFO全稱是First in First out,即先進先出算法。其基於若是一個數據最早進入緩存中,則應該最先淘汰掉
的思路,也就是說優先刪除掉最早保存到鏈表中的數據;資源
利用雙向鏈表記錄數據順序,hashmap查詢數據;hash