YAFFS
![本页使用了标题或全文手工转换](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
此條目没有列出任何参考或来源。 (2020年6月7日) |
开发者 | Charles Manning |
---|---|
全称 | Yet Another Flash File System |
功能 | |
操作系统支持 | Android、Firefox OS、Linux、Windows CE、pSOS、eCos、ThreadX |
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仍使用)。
YAFFS2
[编辑]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/目錄下。
相關條目
[编辑]參考資料
[编辑]外部連結
[编辑]- 官方網站
- Introducing YAFFS, the first NAND-specific flash file system
- Unyaffs (页面存档备份,存于互联网档案馆): A simple program to unpack YAFFS2 images.
|