-
YAFFS2
鎖定
YAFFS(Yet Another Flash File System)是由Aleph One公司所發展出來的NAND flash 嵌入式文件系統。
在YAFFS中,最小存儲單位為一個頁(Page),文件內的數據是存儲在固定512 bytes的頁中,每一頁亦會有一個對應的16 bytes的Spare(OOB,Out-Of-Band)。YAFFS採用樹形結構(Tree Node Structure),由多個樹節點(Tree Node,Tnode)所組成,樹節點又分成內部節點(Internal Tnode)與底層樹節點(Lowest Level Tree node),其中內部節點由8個指針(Pointers)所組成,底層樹節點由16個入口(Entries)所組成,其時間複雜度(Time Complexity)相當於O(log N),故地址轉換時間較迅速。一旦閃存(Flash Memory)掛載(mount)之時,YAFFS會為每個文件在RAM中創建一棵樹, 並隨時提供Chunk(即Page, 由yaffs_Object所配置),可是 YAFFS並未完全實現耗損平均技術(wear-leveling)算法,因此還是會造成部分的塊(Block)過度訪問。
YAFFS在將數據(Data)寫入閃存時會運行垃圾回收(Garbage Collection),YAFFS 垃圾回收分成兩種模式:主動模式(Aggressive Mode)及被動模式(Passive Mode), 而且找尋髒塊(Dirtiest Block)(最多Invalid Chunk)及查找空塊(Empty Block)都是通過線性搜索(Linear Search)的方式(JFFS2是Link List的方式)。YAFFS2不再使用非全頁編程(Partial Page Programming)(YAFFS仍使用)。
- 外文名
- YAFFS2
- 所屬公司
- Aleph One公司
應用
YAFFS2 是Aleph1的工程師Charles Manning 開發的NAND Flash 文件系統。YAFFS1和YAFFS2 主要差異還是在於PAGE 讀寫 size的大小,YAFFS2可支持到2K per page, 遠高於YAFFS的512 Bytes, 因此對大容量NAND flash更具優勢。其他與YAFFS1不同的是, YAFFS2不再寫spare area, sequenceNumber 用29 bits 表示。Yaffs2還擁有YAFFS1所缺乏的SuperBlock, 因此YAFFS1嚴重依賴文件系統的read_super。
YAFFS 和YAFFS2 皆遵守GNU GPL開放原始碼。Android 採用yaffs2作為MTD NAND flash文件系統,位於fs/yaffs2/目錄下,由於循序GPL,因此源碼是可以看到的。
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:8次歷史版本
- 最近更新: DHY0620