歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linuxflash文件系統剖析(1)

Linuxflash文件系統剖析(1)

日期:2017/2/25 10:36:11   编辑:Linux教程
Flash 內存面臨的挑戰
除了前面提到的一些限制以外,管理 flash 設備還面臨很多挑戰。三個最重大的挑戰分別是垃圾收集、管理壞塊和平均讀寫。
垃圾收集
垃圾收集 是一個回收無效塊的過程(無效塊中包含了一些無效數據)。回收過程包括將有效數據移動到新塊,然後擦除無效塊從而使它變為可用。如果文件系統的可用空間較少,那麼通常將在後台執行這一過程(或者根據需要執行)。
管理壞塊
用的時間長了,flash 設備就會出現壞塊,甚至在出廠時就會因出現壞塊而不能使用。如果 flash 操作(例如 Erase)失敗,或者 Write 操作無效(通過無效的錯誤校正代碼發現,Error Correction Code,ECC),那麼說明出現了壞塊。
識別出壞塊後,將在 flash 內部將這些壞塊標記到一個壞塊表中。具體操作取決於設備,但是可以通過一組獨立的預留塊來(不同於普通數據塊管理)實現。對壞塊進行處理的過程 — 不管是出廠時就有還是在使用過程中出現 — 稱為壞塊管理。在某些情況下,可以通過一個內部微控制器在硬件中實現,因此對於上層文件系統是透明的。
平均讀寫
前面提到 flash 設備屬於耗損品:在變成壞塊以前,可以執行有限次數的反復的 Erase 操作(因此必須由壞塊管理進行標記)。平均讀寫算法能夠最大化 flash 的壽命。平均讀寫有兩種形式:動態平均讀寫 和靜態平均讀寫 。
動態平均讀寫解決了塊的 Erase 周期的次數限制。動態平均讀寫算法並不是隨機使用可用的塊,而是平均使用塊,因此,每個塊都獲得了相同的使用機會。靜態平均讀寫算法解決了一個更有趣的問題。除了最大化 Erase 周期的次數外,某些 flash 設備在兩個 Erase 周期之間還受到最大化 Read 周期的影響。這意味著如果數據在塊中存儲的時間太長並且被讀了很多次,數據會逐漸消耗直至丟失。靜態平均讀寫算法解決了這一問題,因為它可以定期將數據移動到新塊。
Copyright © Linux教程網 All Rights Reserved