如何實現LRU(最近最少使用)快取淘汰演算法?

2022-09-14 11:54:06 字數 278 閱讀 5995

我們維護乙個有序單鏈表,越靠近鍊錶尾部的結點是越早之前訪問的。

當有乙個新的資料被訪問時,我們從煉表頭開始順序遍歷鍊錶。

如果此資料之前已經被快取在鍊錶中了,我們遍歷得到這個資料對應的結點,並將其從原來的位置刪除,然後再插入到鍊錶的頭部。

如果此資料沒有在快取鍊錶中,又可以分為兩種情況:如果此時快取未滿,則將此結點直接插入到鍊錶的頭部;如果此時快取已滿,則鍊錶尾結點刪除,將新的資料結點插入鍊錶的頭部。

使用場景一般是維護乙個瀏覽記錄,最新訪問的永遠最上面,最下面的永遠是要被淘汰的。

LRU 最近最少使用 資料快取機制的實現

面試常問 1.為什麼會需要資料的快取?分頁儲存機制 1 缺頁中斷 我們知道在作業系統中,資料儲存是使用分頁儲存的機制,乙個程序可以對應乙個頁表,頁表中有很多頁,也就是當乙個程序對應很多頁時,執行程序時並不是所有頁都裝入記憶體中 當然要考慮記憶體開銷和io阻塞 會將部分裝入記憶體。2 當需要的那頁不存...

LRU 最近最少使用淘汰演算法 基本實現

計數器法 特殊棧法 暫存器法 下面給出,棧法的簡單演示實現 1 include 2 using namespace std 34 void conduct int size,int num,int a 100 處理函式 5void print int a,int num 輸出函式67 intmain...

自適應Lru(最近最少使用)演算法

在快取管理演算法中,lru 幾乎是公認的最優的演算法。然而它也有一些缺陷,主要是因為 它假定對實體的訪問有區域性特性。當訪問模式沒有區域性特性的時候,它就會退化為fifo 先進先出 演算法。在我寫乙個檔案系統的實現時,這種現象很讓我頭疼,因為很多時候,對乙個檔案的訪問大多是順序的,前面讀取過的內容幾...