複製鏈接
請複製以下鏈接發送給好友

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,因此源碼是可以看到的。