快取是計算機體系中乙個比較重要的概念,如雜湊一致性、換頁機制就是有關快取的。在筆試中也經常考察採用fifo、lru、lfu等頁面淘汰機制和命中率。先了解下面幾個概念:
缺頁:如果需要訪問的頁面在快取中不存在時,就代表缺頁了。
命中:如果在快取中存在需要訪問的頁面時,就代表命中了,直接從快取中取出。
缺頁次數 + 命中次數 = 訪問次數。
命中率:命中次數/總共訪問次數
提到快取,有兩點是必須要考慮的:
(1)快取資料和目標資料的一致性問題。
(2)快取的過期策略(機制)。
其中,快取的過期策略涉及淘汰演算法。常用的淘汰演算法有下面幾種:
1. fifo(first in first out):先入先出機制。
先進入頁面的當作「舊」快取,後進入的當作「新」快取,當快取滿了的時候,根據「新舊」程度淘汰舊的。
lru(least recently used):最近最少使用
lfu(least frequently used):最不經常使用
在某個儲存系統中,假如系統分配給以個作業的記憶體物理塊數是3,並且此作業的頁面使用順序為2,3,2,1,5,2,4,5,3,2,5,2,若採用fifo和lru置換演算法,
fifo演算法:
m1、m2、m3代表快取的頁面存放方式(m1為最「舊」,m2其次,m3為最「新」),下面黑體表示(1/2/3空餘的為null)
訪問2 :2,3,2,1,5,2,4,5,3,2,5,2 缺頁2
訪問3 :2,3,2,1,5,2,4,5,3,2,5,2 缺頁3
訪問2 :2,3,2,1,5,2,4,5,3,2,5,2 命中2
訪問1 :2,3,1,5,2,4,5,3,2,5,2 缺頁2
訪問5 : 2,3,1,5,2,4,5,3,2,5,2 缺頁5
訪問2 : 2,3,1,5,2,4,5,3,2,5,2 缺頁2
訪問4 : 2,3,1,5,2,4,5,3,2,5,2 缺頁4
訪問5 : 2,3,1,5,2,4,3,2,5,2 命中5
訪問3 : 2,3,1,5,2,4,3,2,5,2 缺頁3
訪問2 : 2,3,1,5,2,4,3,5,2 命中2
訪問5 : 2,3,1,5,2,4,3,5,2 缺頁5
訪問2 : 2,3,1,5,2,4,3,5,2缺頁2
命中3次,缺頁9次,共訪問12次,命中率3/12
lru演算法:
訪問2 :2,3,2,1,5,2,4,5,3,2,5,2 缺頁2
訪問3 :2,3,2,1,5,2,4,5,3,2,5,2 缺頁3
訪問2 :3,2,1,5,2,4,5,3,2,5,2 命中2
訪問1 :3,2,1,5,2,4,5,3,2,5,2 缺頁2
訪問5 : 3,2, 1,5,2,4,5,3,2,5,2 缺頁5
訪問2 : 3,1,5,2,4,5,3,2,5,2 命中2
訪問4 : 3,1,5,2,4,5,3,2,5,2 缺頁4
訪問5 : 3,1,2,4,5,3,2,5,2 命中5
訪問3 : 3,1,2,4,5,3,2,5,2 缺頁3
訪問2 : 3,1,2,4,5,3,2,5,2 缺頁2
訪問5 : 3,1,2,4,3,2,5,2 命中5
訪問2 : 3,1,2,,4,3,5,2命中2
命中5次,缺頁7次,共訪問12次,命中率5/12
如果是演算法題,可以根據以上思路,很快寫出程式來。
如果遇到的是小題,不需要把步驟都列出來,有乙個小技巧,可以直接找出需要劃掉的黑體數字,代表直接從快取中取出。
對於fifo:2,3,2,1,5,2,4,5,3,2,5,2,命中時,是劃掉新進來的。
對於lru:
2,3,2,1,5,2,4,5,3,2,5,2,在命中時,則是劃掉先存進去的。
IOS 開發快取機制 記憶體快取機制
使用快取的目的是為了使用的應用程式能更快速的響應使用者輸入,是程式高效的執行。有時候我們需要將遠端 web伺服器獲取的資料快取起來,減少對同乙個 url多次請求。記憶體快取我們可以使用 sdk中的 nsurlcache類。nsurlrequest需要乙個快取引數來說明它請求的 url何如快取資料的,...
快取機制 全棧快取
1.配置檔案 cache middleware seconds 20 設定超時時間20秒 第一行和最後一行,位置不能放錯,只能放第一,和最後一行,又報錯是 modulenotfounderror no module named django.middleware.cache.updatecachem...
研究快取機制
asp.netforums中使用了兩級快取來處理乙個使用者在不同版面上的許可權,第一級使用httpruntime.cache,可是使用者在不同的請求中從執行時提供的快取機制中提高效率,第二級是httpcontext.current,它是建立在第一級快取之上,用於使用者在同乙個請求期間的快取,這個快取...