理解yaffs文件系统

上一篇 / 下一篇  2007-12-27 15:11:22 / 个人分类:技术

Yaffs文件系统是专门为NAND flash设计的,以下是我对yaffs的理解.(很多一部分是翻译,理解的,难免有疏漏之处)


--Yaffs用到的专用术语--
Page - NAND里可访问的最小存储单元,需要跟文件系统中"页"的概念区别开来.具有的属性:读,写;能被标记,表明其是否损坏;还有用于存放校验数据的oob 单元. Page大小有512字节的,也有2K字节的;针对此,oob区域也有不同大小,512B/Page的oob有16个字节,2KB/Page的oob就是前者的4倍,也就是说64个字节.


Block - NAND实现了快速的擦,就是因为有了它. Block由64个Page组成. 所以根据Page大小不同,block有16K字节的和128K字节的.


OOB - 用来存放Page上数据的ECC信息,每个Page都有自己的oob

Chunk - Chunk是Yaffs文件系统里的概念,是文件访问的基本单元,跟Nand物理上的page大小一样

Object - 构成Yaffs文件系统的各种元素,比如文件,目录,链接,设备等等


--yaffs设计--
基于4个原则:
1. 专门为Nand flash设计
2. 稳定性好
3. 运行时消耗内存小
4. 启动速度快

文件数据都是存在chunk中的,chunk的大小跟page一样. 每个page都被标记了一个chunk number和file id. 简单的说,文件被分成很多chunk存在各个page中.每个chunk的有
效数据都是page的大小,除了最后哪个chunk. 照我的理解,chunk跟page就是同一个东西.

文件的"头"当然被放置在第一个page中;里面包括了一些信息比如文件属性,路径等;这个page的属性就区别于其他page,因为yaffs系统通过找到这个"头page" 来找到文件. 文件夹,链接等也被存在类似的page中.

当然文件被修改的时候,yaffs会把修改好的结果写入到新的chunk里;删除操作是通过把删除的目标(可以是文件,链接,文件夹)放置到一个'隐藏'的路径中.所以说,删除一个目标之后,它并没有从
Nand中消失,而是继续存在的,知道保存它的所由page都被擦除.

TAG: yaffs 文件系统

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2008-04-08  
  12345
6789101112
13141516171819
20212223242526
27282930   

数据统计

  • 访问量: 59
  • 日志数: 8
  • 建立时间: 2007-11-05
  • 更新时间: 2007-12-27

RSS订阅

Open Toolbar