跳转到内容

YAFFS

本页使用了标题或全文手工转换
维基百科,自由的百科全书
YAFFS
开发者Charles Manning
全称Yet Another Flash File System
功能
操作系统支持AndroidFirefox OSLinuxWindows 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/目录下。

相关条目

[编辑]

参考资料

[编辑]

外部链接

[编辑]