YAFFS

YAFFS （ 全稱 ： Yet Another Flash File System ） 是由Aleph One公司所發展出來的NAND Flash 嵌入式檔案系統 。 在YAFFS中 ， 最小儲存單位爲一個Page ， 檔案內的數據是儲存在固定512 bytes的Page中 ， 每一個Page亦會有一個對應的16 bytes的Spare ( OOB,Out - Of - Band ) 。 YAFFS採用Tree Node Structure ， 由多個Tree Node （ Tnode ） 所組成 ， Tnode又分成Internal Tnode與Lowest - Level Tnode ， 其中Internal Tnode由8個Pointers所組成 ， Lowest - Level Tnode由16個Entries所組成 ， 其時間複雜度 （ Time Complexity ） 相當於O ( log N ) ， 故位址轉換時間較迅速 。 一旦Flash Memory掛載 （ mount ） 之時 ， YAFFS會爲每個檔案在RAM中建立一個Tree, 並隨時提供Chunk （ 即Page, 由yaffs_Object所配置 ） ， 可是 YAFFS並未完全實作耗損平均技術 （ wear - leveling ） 演算法 ， 因此還是會造成部份的Block過度存取 。 目前YAFFS在將Data寫入Flash Memory時會執行Garbage Collection ， YAFFS Garbage Collection分成兩種Mode ： Aggressive Mode及Passive Mode, 而且找尋Dirtiest Block （ 最多Invalid Chunk ） 及尋找Empty Block都是透過Linear Search的方式 （ JFFS2是Link List的方式 ） 。 YAFFS2不再使用Partial Page Programming （ YAFFS仍使用 ） 。