磁碟快取專題之三 磁碟快取的演算法 寫演算法

2021-09-06 05:49:13 字數 2136 閱讀 5505

雖然快取的最終目的為了提高效能,但快取寫的技術與快取讀的技術有很大的不同。但如果它帶來的資料丟失危險很大,那麼,就是乙個不可接受的方案。因此,安全地將資料儲存在非易失儲存中是很重要的,因為這樣資料就可以長期地儲存。雖然讀快取技術用於讀操作時可以提高系統效能,但當用於新產生資料的寫操作時,卻產生了一些有趣的問題。

目前,用於快取實現的大部分儲存器都是易失型儲存器,因此,當斷電的時候,所有快取的資料都將丟失。為了避免這個問題,一種專為快取而特別設計的儲存器已經面世,這種特製的儲存器內嵌後備電池,經常用於磁碟子系統,以保證在某一指定時間內供電和資料儲存。其他型別的非易失記憶體也已經生產出來,如快閃儲存器,但由於它們**相對較高、效能較低及使用壽命有限等,通常不被用作快取記憶體。

下面考慮使用l r u的示例,並假定某個應用正在更新資料。由於在快取中可能儲存了過時資料。這裡過時資料是指被儲存的資料,但不表示最新的版本。當應用修改資料時,過時的資料也必須要修改,無論它存放在**—在磁碟上,或者在磁碟和快取記憶體裡。圖顯示了兩種情況:第一種情況是資料僅存放在磁碟上;第二種情況是資料既存放在磁碟上,也存放在快取記憶體中。

20120821085425.png(30.24 k)

8/21/2012 9:00:05 am

在快取未命中情況下,快取控制器決定是否快取這些資料。對於這個例子,快取控制器決定放棄快取關於這個寫操作的資料,而把該資料直接寫入非易失儲存。換言之,資料僅寫入磁碟,繼續執行下乙個操作。

在快取命中情況下,快取控制器可以修改快取,甚至丟棄快取,或使快取內容無效,以致於後來的資料能夠覆蓋它。假如修改了快取,必須最終在某個時刻將它寫入非易失磁碟儲存,但什麼時候寫呢?可能資料在近期將不被修改,但也可能它成為乙個熱點,將經歷接二連三地、快速的操作。資料寫入非易失儲存器速度相對較慢,因為必須等待磁碟裝置寫完成後,才能進行新的寫操作,致使系統的效能降低。另一方面,假如資料首先被寫進快取,延遲一段時間後才被寫到非易失儲存,那麼,電源的臨時故障就有可能導致資料的丟失。

解決這個問題基本上採用兩種寫快取技術:

• 透寫快取。

• 回寫快取。

1) 透寫快取

寫快取的乙個重要的特性是:它們必須修改所有存在的資料例項,或者保證丟棄所有原資料的拷貝。假如系統中存在多個版本的資料,就有可能產生錯誤,最終錯誤地將資料存放在非易失儲存器中。圖顯示了透寫快取的例子,例子中的透寫快取在更新快取的同時,將資料寫入非易失儲存中。

20120821085708.png(24.90 k)

8/21/2012 9:00:05 am

2) 回寫快取

回寫快取有時也稱為後寫快取,是為了效能緣故而實現的優化。它的基本思路是:為了給應用提供更快的響應,後寫快取首先將幾個i / o寫操作集中起來,然後一次性地把它們寫入非易失儲存器,而不是產生乙個寫請求就執行乙個寫操作。

這種寫操作組合方法使快取兩側的成分都能獲益。對於產生寫操作的主機來說,它比從透寫快取中更快地接收到確認;對裝置而言,與單獨地執行每個操作相比較,統一的寫操作所花費的總時間更少。因此,組合的結果是產生更快的操作。圖是乙個回寫快取過程,在資料傳輸到非易失儲存器之前,回寫快取組合了幾個i / o操作。

20120821085834.png(30.90 k)

8/21/2012 9:00:05 am

資料庫系統的i / o操作是非常頻繁的,一般情況下,每秒要執行幾千個i / o操作。因此,回寫快取能夠提供非常大的效能改善。不僅更快捷地接收到每乙個i / o的確認,而且,由於每次的更新資料只對快取操作即可,而不必對非易失儲存實施寫,因而,寫操作的執行速度也快了許多。

這樣,同樣資料塊的多次修改只需一次磁碟寫操作。清空快取的過程通常稱為重新整理快取。如前所述,回寫快取的潛在問題就是資料丟失。例如,倘若出現某種災難時,資料卻沒有重新整理到磁碟,而仍然保持在快取中,那麼,資料就要丟失。由於回寫快取演算法對上述提及的資料丟失沒有採取任何補救措施,因而必須依賴於其他的方法幫助維護資料的一致性。這些方法通常都使用輔助後備電池,保證在災難出現時,快取和子系統仍能執行足夠長的時間,使快取得以重新整理快取到非易失儲存。

磁碟快取專題之一:快取命中和快取未命中&快取與緩衝間的差異.rar

磁碟快取專題之二:磁碟快取的演算法:讀演算法.rar

磁碟快取專題之三:磁碟快取的演算法:寫演算法.rar

磁碟快取專題之三 磁碟快取的演算法 寫演算法

雖然快取的最終目的為了提高效能,但快取寫的技術與快取讀的技術有很大的不同。但如果它帶來的資料丟失危險很大,那麼,就是乙個不可接受的方案。因此,安全地將資料儲存在非易失儲存中是很重要的,因為這樣資料就可以長期地儲存。雖然讀快取技術用於讀操作時可以提高系統效能,但當用於新產生資料的寫操作時,卻產生了一些...

Fresco磁碟快取

import android.content.context import android.graphics.bitmap import android.os.environment import android.util.log import com.facebook.cache.disk.dis...

相簿磁碟快取分析

相簿磁碟快取主要是imgcache.0,imgcache.1,imgcache.idx三個檔案 其中imgcache.idx位索引檔案,其餘兩個位資料檔案 存放縮圖內容 索引檔案格式 magic max entries max bytes active region active entries a...