|
本帖最后由 超級狗 于 2015-9-8 10:06 编辑
" u2 X4 E C! J, a' C0 X
" H, U; y! |& F; [7 n2 R樓主所講的是閃存檔案系統(Flash File System)管理的部份。$ b7 \* w4 e3 P5 J
+ L. K- w2 Y b8 @7 o: }1 d$ g( A! zNAND 閃存讀寫時會有干擾(Disturb)的現象,所以寫入時會隨機將存放有資料的區塊(Block)做翻新。意思就是說,如果發現區塊(Block)中有因干擾(Disturb)而產生錯誤,會將錯勿矯正後再寫入至另一個區塊(Block)中。
: V+ s6 A& c+ O0 T- @- Z* e0 j1 k3 J( Y/ o8 F, M. u4 Z
用戶端複製及刪除一個檔案,表面上是某些區塊(Block)做了一次使用循環(Cycle),但實際上卻是有更多區塊 (Block)被使用過。到底有多少區塊(Block)被使用過?要看 NAND 閃存的錯誤率,及閃存檔案系統(Flash File System)的做法。# A$ Q5 m u/ [; _
E4 T; U0 Z& ~
另外,樓主只注意到資料區塊(Data Block)的異動,卻忽略了檔案位置表(FAT︰File Allocation Table)的變化。當我們從閃存中複製或刪除一個檔案,過程中檔案位置表(FAT︰File Allocation Table)可能已經被更新幾十次以上了。所以,檔案位置表(FAT︰File Allocation Table)使用的區塊 (Block)也要不斷的被更換,否則第一個掛點的就是這個區域。$ e, ]4 c& c$ f; @
7 A! z; ~9 X+ ~關於閃存的儲存管理很複雜,恕小弟無法一次說明清楚,但大家可以慢慢討論。手中的文檔也頗多,明天先找幾篇基礎的上傳。
: H# m, F) R! `/ b* _% i/ v, b8 D2 H- O& h2 A% H
|
|