YAFFS
此条目没有列出任何参考或来源。 (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.