(计算机系统结构专业论文)基于nand闪存的嵌入式文件系统研究与实现.pdf_第1页
(计算机系统结构专业论文)基于nand闪存的嵌入式文件系统研究与实现.pdf_第2页
(计算机系统结构专业论文)基于nand闪存的嵌入式文件系统研究与实现.pdf_第3页
(计算机系统结构专业论文)基于nand闪存的嵌入式文件系统研究与实现.pdf_第4页
(计算机系统结构专业论文)基于nand闪存的嵌入式文件系统研究与实现.pdf_第5页
已阅读5页,还剩65页未读 继续免费阅读

(计算机系统结构专业论文)基于nand闪存的嵌入式文件系统研究与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江文学硕士学位论文 摘要 摘要 n a n d 闪速存储器,凭借速度快、容量大、价格低等很多优点,越来越成为 嵌入式移动存储平台的酋选存储介质。嗣前基于n a n d 闪存的文件系统有豫类: 集中索引的文件系统和专门针对n a n d 闪存丽设计的文件系统。 集中索引的文件系统是通过将n a n d 闪存模拟成可随意读写的块设备对闪 存进行管理,这类文件系统大多是传统豹文件系统,比如f a t 3 2 和e x t 2 。而专门 针对n a n d 闪存自身的特点设计的文件系统,到目前为止只有y a f f s 系列。 随着n a n d 闪存存储容量的增大和擦除块擦除次数的相对减少,y a f f s 表 现浅了两点不足:热载黠闻随着存储容量麓增大两增大;( 墓) y a f f s 对静态数据 没有很好的实现损耗均衡,不能延长n a n d 闪存的使用寿命。针对这两点,论文 提出了快速加载的n a n d 文件系统f m n f s ( f a s t - m o t m t i n gn a n df i l e - s y s t e m ) 。 为了热快文件系统的熬载,f m n f s 不再采耀索号l 蒂点和数据节点混合存储, 而是借鉴集中索引的思想,将两者分开存放。在文件系统加载时,根据擦除块中 酣加区数据的设计最多只需扫描索弓l 节点所在的擦除块,而不需要扫描所有的擦 除块,从两大大减少了文俘系统的加载时闻。 在f m n f s 中,需要实现的损耗均衡包括两个方面。热数据的损耗均衡。 由于对索引的访褥频率遥常远远大于普通数据,所以索引节点所在的擦除块更容 易损坏。冷数据的损耗均衡。对于大的只读文件,它们通鬻只是被读,缀少被 修改,所以它们所在的擦除块较非静态数据所在的擦除块更不容易损坏。针对这 两点f m n f s 分剃对其进行了设计与实现,并在最后通过实验进行了验证。 论文中f m n f s 的实现对减少文件系统的加载时间、延长n a n d 闲存的使用 寿命有一定的意义。 关键词:嵌入式文件系统,y a f f s ,n a n d 闪存,f m n f s ,加载时间,损耗 均衡 浙江欠学硕士学位论文 a b s t r a c t w i t ht h ep r e v a l e n c eo fe m b e d d e ds y s t e m , f l a s hm e m o r y s t o r a g ew h i c h h a sh i g h c a p a c i t ya n dl o we l l e r g yc o n s u m p t i o nh a sb e c o m et h ep r i m a r ye x t o m e ds t o r a g ef o r e m b 醚d e ds y s t e m s ,i nr e c e n ty e a r s ,t h e r ei sa n 函粼吨c o n s u m p t i o no f n a n df l a s h w i t ht h ei n c r e a s i n gd e m a n do fn a n df l a s h , r e s e 国r c ho nm a n a g e m e n to fm e d i ai s b e c o m i n gah o t - s p o ti ne m b 甜d e d f i e l d g e n e r a l l ys p e a k i n g ,t h e r e 锄潜t w ok i n d so fm e t h o d sa p p l i e dt om a n a g e m e n to f n a n df l a s h 。o n ei st ou s eat r a d i t i o n a lb l o c kf i l e - s y s t e mt om a n a g et h ef l a s h , s u c ha s f a t 3 2o re x t 2 ,b e c a m et h en a n df l a s hc a nb es i m u l a t e da sat r a d i t i o n a lr wb l o c k d e v i c e t h eo t h e ro n ei st om a n a g ei tv i aas p e c i a l i z e df i l e - s y s t e m , s u c ha sy a f f s y a f f si st h eo n l yf i l e - s y s t e md e s i g n e de s p e c i f i c a l l yf o rn a n dt ! a s h , w h i c hi su n d e r a n yo p e r a t i n gs y s t e m y a f f si st h u sd e s i g n e dt ow o r kw i t h i nt h ec o n s t r a i n t so f , a n d e x p l o i tt h ef e a t u r e so f , n a n d f l a s ht om a x i m i s ep e r f o r m a n c e 。 a l t h o u g hy a f f sa l r e a d yp e r f o r m sw e l l , t h e r ei s s t i l lal o to f1 0 0 mf o r i m p r o v e m e n t a t 黔鼹t ,y a f f sh a st w od i s a d v a n t a g e s :t o ol o n gm o u n t i n gt i m ea n d i n s u f f i c i e n tc o n s i d e r a t i o nf o rw e a r - l e v e l i n g a c c o u n t i n gt ot h e s et w oa s p e c t s ,t h i s p a p e rp r o p o s e san e wf i l e s y s t e mn a m e df m n f s ( f a s t - m o u n t i n gn a n df i l e - s y s t e m ) i no r d e rt os h o r t e nt h em o u n t i n gt i m e , f m n f sc h a n g e st h em a n a g e m e n to ft h e d a t an o d e s f m n f ss t o r e st h ei n d i c e s - i n f o r m a t i o na n dd a t a - i n f o r m a t i o ns e p a r a t e l y i n s t e a do fp u t t i n gt h e mt o g e t h e r a c c o r d i n gt ot h ec o n t e n t so ft h es p a r e - a r e a , f m n f s o n l yn e e d st os c a nap a r to fa l lb l o c k si nn a n df l a s hw h e nt h ef i l e - s y s t e mi sm o u n t e d , t h a tr e d u c e st h em o u n t i n gt i m eg r e a t l y t oi m p l e m e n tt h ew e a r - l e v e l i n gi nf m n f s ,t w oa s p e c t ss h o u l db ec o n s i d e r e d o n ei sa b o u tt h eh o t - d a t a t h ei n f o r m a t i o no fi n d e x e si su p d a t e dm o r ef i e q u e n t l yt h a n t h ed a t a ,s ot h eb l o c k ss t o r e di n d e x e sa l ed e s t r o y e dm o r ee a s i l y t h eo t h e ro n ei sa b o u t t h ec o l d - d a t at h a ti sl a r g ea n dr e a d - o n l y , s ot h eb l o c k ss t o r e di th a v eal o n g e rl i f e s p a n t h a ns t o r e do t h e rd a t a t h et w o w e a r - l e v e l i n ga l g o r i t h m s a r ed e s i g n e da n d i m p l e m e n t e di nt h i sp a p e r , a n dt h er e s u l t sa r ev a l i d a t e db yt h ee x p e r i m e n t s 浙江犬学硕士学位论文 a b s t r a c t t h ei m p l e m e n t a t i o no ff m n f si ss i g n i f i c a n tf o rr e d u c i n gt h em o u n t i n gt i m ea n d l e n g t h o l i n gt h el i f e s p a no f n a n d f l a s h k e y w o r d s :铷m c d d e df i l e - s y s t e m , y a f f s ,n a n df l 跚s h , f m n f s ,m o u n t i n gt i m e , w e a r - l e v e l i n g 浙江大学硕士学位论文 图目录 图目录 图1 1 文章组织结构图5 图2 1 嵌入式文件系统体系结构7 图2 2v f s 的逻辑结构l o 图2 3m t d 与文件系统、n a n d 闪存的层次关系1 2 图2 4m t d 结构图1 4 图3 1t n o d e 结构图2 2 图3 2t n o d e 查找方法树2 3 图3 3y a f f s 的加载过程2 6 图4 1f m n f s 的索引结构图3 0 图4 2 文件映射块结构3l 图4 3f m n f s 写数据流程图3 4 图4 4f m n f s 与y a f f s 2 加载时间的曲线比较3 9 图5 1 闪存擦除块关系图4 4 图5 2 垃圾回收流程图4 6 图5 3f m n f s 擦除块的擦除情况5 0 * 图5 4y a f f s 2 擦除块的擦除情况5 0 图5 5f m n f s 与y a f f s 2 损耗均衡情况的比较5 l 图6 1y a f f s 2 与f m n f s 读取速度的直接对比5 5 图6 2y a f f s 2 与f m n f s 写入速度的直接对比5 6 i i i 浙江大学硕士学位论文表目录 表目录 表2 1v f s 超级块内容9 表2 2v f s 索引节点内容9 表3 1y a f f s 文件系统中每个页面的内容1 9 表3 2y a f f st a g s 的内容2 0 表3 3t n o d e 的表示方法2 2 表4 1 文件映射块的附加区数据3 2 表4 2 索引块的附加区数据3 2 表4 3 数据块附加区数据3 3 表4 4y a f f s 2 与f m n f s 加载时间比较3 9 表6 1 测试环境列表5 2 表6 2y a f f s 2 与f m n f s 读取不同大小的文件所需的时间5 5 表6 3y a f f s 2 与f m n f s 写入不同大小的文件所需的时间5 6 i v 浙江大学研究生学位论文独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。 除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成 果,也不包含为获得逝江盘堂或其他教育机构的学位或证书而使用过的材料。与我一 同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。 学位论文作者签名:杏海7 霞 签字日期:砧年多月铲日 学位论文版权使用授权书 本学位论文作者完全了解迸江盘堂 有权保留并向国家有关部门或机构送交本 论文的复印件和磁盘,允许论文被查阅和借阅。本入授权逝姿盘鲎可以将学位论文的 全部或部分内容编入有关数据库进行检索和传播,可以采用影印、缩印或扫描等复制手段 保存、汇编学位论文。 年月 日 u v 轹 瑚 捌 阳 礁 字j y l ,、 尉 签 书权授本肌 腌覆伸 密 海 解 、叫 月 硇寸侈 文论 : 年 位 名 够 剿 麟 m 的 者 密 作 : 保 文 期 0 沦 日 位 字 学 签 浙江大学硕士学位论文第1 章绪论 1 1 研究背景 第1 章绪论 1 1 1n a n d 闪存的发展与特点 闪存作为目前嵌入式系统中应用最为广泛的存储器,按照存储矩阵结构的不 同分为n o r 型和n a n d 型两种。1 9 8 9 年,东芝公司发表了n a n df l a s h 结构, 强调降低每比特的成本,更高的性能,并且像磁盘一样可以通过接口轻松升级, 是高密度数据存储的理想解决方案,被大量应用于移动存储设备、移动媒体设备 和嵌入式设备中【1 1 。 n a n df l a s h 芯片是由固定数量的块组成的,每块包含了很多的页。每页有 两部分组成:主数据存储区( m a i nd a t ea r e a ) 和备用存储区( s p a r ea r e a ) 。备用存 储区通常用来存放每页数据的错误校验码e c c ( e r r o rc h e c k i n gc o d e ) 和其他关 于文件的管理信息。 随着n a n d 闪存技术的发展,出现了不同型号的n a n d 闪存。但是目前在 嵌入式文件系统中最为常用的是s m s l lb l o c ks l cn a n d 和l a r g eb l o c ks l c n a n d 【2 】。在s m a l lb l o c ks l c ( s i n g l e 1 e v e lc e l l ) 闪存中,它的每块有3 2 页,每 页有5 1 2 字节的主存储区和1 6 字节的备用存储区。随后出现的l a r g eb l o c ks l c n a n d ,它在存储容量上有了大幅的提高,可达2 g b 。在l a r g eb l o c ks l cn a n d 中,每块有6 4 页,每页有2 0 4 8 字节的主数据存储区和6 4 字节的备用存储区。 作为一种闪速存储器,n a n df l a s h 有一些自身的特性,导致它不能像普通 磁盘一样进行操作。其特性主要表现在以下六个方面【3 】: ( 1 ) 出厂时可能存在坏块,并且使用过程中也可能产生坏块; ( 2 ) 读写操作以页面为单位,而擦除操作则是以块为单位进行; ( 3 ) 写操作的方式不是覆盖,而是只能在空白块或者已擦除的块内进行; ( 4 ) 每个擦除块的可擦除次数有限,一般为百万次; 浙江大学硕士学位论文第l 章绪论 ( 5 )块擦除时间与页读写时间相比比较长; ( 6 )n a n df l a s h 使用复杂的i 0 口来串行存取数据,数据、地址、命令 总线复用。 1 1 2 基于闪存的嵌入式文件系统的要求 由于嵌入式设备体积小,所以不能使用硬盘作为存储器,而闪存凭借其存取 速度快、存储容量大、价格低廉等优点,成为了嵌入式系统中广泛采用的主流存 储器。同时,由于闪存本身的特性,使得嵌入式文件系统除了具有一般文件系统 的功能外1 4 】,还提出了以下几个方面的要求: ( 1 ) 崩溃恢复【5 】( c r a s h - r e c o v e r y ) 嵌入式设备的一个特点就是电源供给的不稳定性,不可预知的断电随时有可 能发生。而且嵌入式系统的运行环境一般比较恶劣,但同时又要求较高的可靠性, 这就对f l a s h 文件系统提出了较高的要求,无论程序崩溃或系统掉电,都不能影 响文件系统的一致性和完整性。文件系统的写入、垃圾回收等操作对系统异常中 断都非常敏感,极易造成数据丢失和数据垃圾,因此在文件系统设计和选用时应 多加考虑。 ( 2 ) 损耗均衡嘲( w e a r - l e v e l i n g ) 这个要求是由f l a s h 本身的特性所决定的,f l a s h 擦除块擦除次数有限,文件 系统对f l a s h 的使用必须充分考虑该特性,最好能均匀使用f l a s h 的每个块,以延 长f l a s h 的使用寿命。 ( 3 ) 垃圾回收 7 1 ( g a r b a g e c o l l e c t i o n ) 因为f l a s h 的容量比较小,采用的是“o u t - o f - p l a c e e 8 1 而不是“i n - p l a c e ”的 写数据方式,所以在使用过一段时间后,会出现空闲区和文件碎片,可能导致系 统空间不够用,这就需要进行垃圾回收操作,以保证存储空间的高效使用。通常 f l a s h 擦除操作是以块为单位的,垃圾回收也是以块为单位,回收时,如果块上包 含有效数据,需要先将有效数据写到其他块上,然后再擦除整个块。 ( 4 ) 高效的空间管理机制川 为了保证垃圾回收操作的顺利进行,需要保留一部分空闲数据块,用于存储 2 浙江大学硕士学位论文第l 章绪论 擦除块上的有效数据。那么如何确定当前垃圾回收操作需要多少空间呢? 目前采 用的是一种保守算法:在对用户空间执行写操作之前,对于每一个f l a s h 分区都 必须保留若干个空闲块。由于分区的大小直接影响系统开销,如何解决这一问题, 也是我们需要考虑的一个重点。 上面提出的四点是基于闪存的嵌入式文件系统实现中的关键技术,决定了文 件系统的性能,对嵌入式文件系统的开发和设计有很重要的指导意义。 1 1 3 基于n a n d 闪存的嵌入式文件系统的发展 在传统的嵌入式系统中,文件系统不是必需的部分,很多的应用中都没有文 件系统【9 】。因为像信息家电、终端设备这些嵌入式设备,它们要求的最主要的是 效率,对数据存储和处理并没有过高的要求。但是随着嵌入式技术的发展以及在 各种电子产品中的广泛应用,嵌入式系统中对数据存储和管理的要求越来越高。 目前可用于n a n d 型闪存的文件系统包括集中索引的文件系统和专门为n a n d 闪存设计的文件系统。 集中索引的文件系统是磁盘存储器中常用的文件系统,主要包括基于 w i n d o w s 的f a t 系列和基于l i n u x 的e x t 系列。由于闪存设备能够通过闪存转译 层f t l 1 0 l ( f l a s ht r a n s l a t i o nl a y e r ) 驱动来模拟成与磁盘相似的块设备,所以该 类文件系统可以直接基于f r l 在闪存上应用。在闪存中采用集中索引的文件系统 存在下面的两个问题【】:集中索引的文件系统采用“覆写”的方式更新数据, 而在闪存中“覆写”需要先擦除才能写入,如果在数据被擦除后系统发生断电, 便会导致数据的丢失;集中索引的文件系统索引与数据分开存放,索引的更新 频率远远大于数据部分的更新频率,所以不能实现损耗均衡。 基于上面的两个问题,所以针对n a n d 闪存设计了专门的文件系统y a f f s 1 2 】 ( y e t a n o t h e rf l a s hf i l e s y s t e m ) 。到目前为止,y a f f s 系列是唯一专门针对n a n d 闪存而设计的文件系统。y a f f s 系列有y a f f s 和y a f f s 2 两个版本。两者的实 现原理基本相同,所不同的是y a f f s 是针对小页面( 每页5 1 2 字节+ 1 6 字节) 设 计的,而y a f f s 2 则是针对大页面( 每页2 0 4 8 字节+ 6 4 字节) 。 为了解决集中索引文件系统中的问题( 1 ) ,y a f f s 中采用了日志的概念,不 浙江大学硕士学位论文第l 章绪论 再采用“覆写”的更新方式,而是采用“前向写入【8 1 ”的方式。此外,y a f f s 为 了实现损耗均衡,提供了专门的垃圾回收算法。 目前,随着n a n d 闪存存储容量的快速增加,y a f f s 也日益暴露其缺点, 所以在大容量的n a n d 闪存上设计专门的文件系统成为了目前的一个研究热点。 1 2 论文的主要研究内容与意义 论文通过对y a f f s 实现原理的分析与研究,找出了y a f f s 文件系统的两个 不足,分别是:挂载时间过长;不能保证实现损耗均衡。 针对这两点,论文提出了一种快速加载的文件系统f m n f s ( f a s t - m o u n t i n g n a n df i l e s y s t e m ) 。f m n f s 对y a f f s 存在的两个不足进行了重新的设计。 对于缺陷,f m n f s 中不再将索引节点和数据节点混合存放,而是将其分 开,以加快文件系统的挂载,减少挂载时间。对于缺陷,f m n f s 采用了冷热 数据的概念。在y a f f s 文件系统中只对更新频繁高的热数据实现了损耗均衡, 而没有考虑一些静态只读数据的损耗均衡问题。在f m n f s 中,不仅通过对垃圾 回收算法的改进更好的实现热数据的损耗均衡,更重要的是f m n f s 对静态只读 数据实现了损耗均衡。 1 3 论文组织 论文共分为七章,其组织结构如图1 1 所示。下面介绍一下各章的内容。 第一章是绪论部分。这部分主要介绍了论文的研究背景、论文主要的研究内 容和论文的章节安排。 第二章是嵌入式文件系统综述。这部分主要讲述了嵌入式文件系统的特点、 结构和主要接口,对基于n a n d 闪存的集中索引文件系统,以f a t 和e x t 两种 系统为例进行了描述。 第三章是y a f f s 实现原理的分析与研究。论文从数据存储、文件管理、擦 除块与坏块管理、加载过程和垃圾回收算法五个方面对其进行了研究。随着闪存 技术的发展,y a f f s 在加载时间和损耗均衡两方面体现出了不足。论文针对这两 点不足提出了新的文件系统f m n f s ( f a s t - m o u n t i n gn a n df i l e s y s t e m ) 。 4 浙江大学硕士学位论文第l 章绪论 第四章是f m n f s 中快速加载机制的设计与实现。这部分主要介绍f m n f s 中加载过程的设计思想、文件系统节点的设计、文件系统节点在n a n d 闪存上的 存储方式、f m n f s 加载过程的实现、f m n f s 与y a f f s 加载过程的理论比较和 实验比较。 第五章是f m n f s 中损耗均衡算法的设计与实现。这部分介绍f m n f s 中针 对动态数据和静态数据采用的损耗均衡算法。 第六章是f m n f s 在b l a c k f m 5 31 上的实现,对其读取和写入速度进行了测试, 与y a f f s 2 进行比较。 第七章是总结和展望。该部分对全文的研究和实践工作做了总结,并对接下 来的研究任务和研究方向做了展望。 图1 1 文章组织结构图 浙江大学硕士学位论文第2 章嵌入式文件系统综述 第2 章嵌入式文件系统综述 文件系统是数据存储和管理的主要手段,它决定了操作系统本身的信息和用 户数据在存储设备的组织形式。嵌入式文件系统是指嵌入式系统中实现文件存取、 管理等功能的模块,提供一系列文件输入输出等文件管理功能,为嵌入式系统和 设备提供文件系统支持【1 3 】 2 1 嵌入式文件系统的特点 嵌入式文件系统作为嵌入式操作系统的重要组成部分,对于实现嵌入式系统 中大量数据的存储和各种操作的管理,有着不可替代的作用。嵌入式文件系统虽 然继承了通用文件系统的组织结构,但由于功能和作用与普通桌面操作系统的文 件系统不同,所以又有自己的特点,具体体现在一下几个方面【1 4 】【1 5 l 。 ( 1 )文件系统是嵌入式系统中的一个组成模块,它以一个可加载选项提供 给用户,由用户决定是否需要加载它。 ( 2 ) 由于嵌入式系统中用于文件存储的空间非常小,所以需要对其进行高 效的管理,以避免对资源的浪费。 ( 3 )使用简单便捷。用户对文件进行操作的时候不需要知道文件的具体物 理存储位置,只要知道文件名、文件路径等简单信息特征,就可以方便地对文件 进行操作。 ( 4 ) 安全可靠。对文件、数据的保护是文件系统的基本功能,嵌入式系统 的应用通常要求系统必须有较高的可靠性。 ( 5 ) 嵌入式应用的领域相当广泛,其采用的硬件环境和操作系统也各不相 同。因此,为了适应这种差异性,文件系统应降低对具体硬件环境和操作系统的 依赖,具备良好的可移植性。 2 2 嵌入式文件系统的体系结构 嵌入式文件系统是在普通桌面操作系统的文件系统的基础上发展而来的,但 两种文件系统的应用环境和自身的要求又有很大的不同。在普通桌面操作系统中, 6 浙江大学硕士学位论文第2 章嵌入式文件系统综述 文件系统除了要管理文件,提供文件系统调用a p i ,还要管理各种设备,使设备 和文件操作保持一致。在嵌入式文件系统中,由于大部分嵌入式系统都是针对特 殊目的定制的,所以对嵌入式操作系统的系统功能的模块化和可裁减性提出了更 高的要求。 在嵌入式文件系统中,采用了一种灵活的系统体系结构来实现其模块化。在 该体系结构中,文件系统不再是操作系统内核的一部分,而是一个独立的自包含 的整体,它可以灵活的加载和卸载,而且所有这些操作对操作系统内核的功能没 有任何影响。体系结构【1 6 】如图2 1 所示。 图2 i 嵌入式文件系统体系结构 嵌入式文件系统体系结构从上到下分为三个层次。最上一层是文件系统核心。 这不仅是是整个系统设计的核心,也是嵌入式文件系统中用户唯一可见的部分, p o s i x 中文件系统的标准系统调用全部可以在该部分中实现。 第二层是高速缓冲管理。它有两个作用:用于文件系统传输数据,高效的 高速缓冲区管理算法能大幅度提高文件系统执行的效率;为文件系统的实现提 供与硬件无关的统一接口。 7 浙江大学硕士学位论文第2 章嵌入式文件系统综述 最下面一层是设备驱动程序,涉及到具体的硬件。设备驱动程序需要为硬件 提供统一的设备驱动程序接口。 文件系统作为整个操作系统的一部分,它与操作系统内核的关系主要体现在 三方面:实时时钟、信号量和中断管理。实时时钟用于实现外设任务的等待延时; 信号量用于实现外设的同步和互斥以及解决资源的互斥访问;中断管理机制则用 来管理外设的中断处理程序。 2 3 文件系统接口介绍 2 3 1 虚拟文件系统 l i n u x 之所以能够支持各种不同的物理文件系统,就是因为有虚拟文件系统。 虚拟文件系统的英文表达为v u m a lf i l es y s t e m ,缩写为v f s 。v f s 是物理文件系 统与用户程序之间的一个接口层,它通过对各种物理文件系统的所有细节进行抽 象,使得不同的文件系统在l i n u x 核心以及系统中运行的其他进程看来,都是相 同的。严格说来,v f s 并不是一种实际的文件系统。它只存在于内存中,不存在 于任何外存空间。v f s 在系统启动时建立,在系统关闭时消亡【1 7 1 2 3 1 1 虚拟文件系统的超级块和索引节点结构 不同的物理文件系统有不同的文件组织结构和数据存储方式。v f s 为了能够 屏蔽掉它们之间的差别,使用了与e x t 2 文件系统类似的两个结构:v f s 超级块 和索引节点。 ( 1 ) 超级块结构( s u p e r b l o c k ) v f s 的超级块只存在于内存中,它在各种逻辑文件系统安装时建立,并在这 些文件系统卸载时删除。每个已挂载的文件系统都由一个v f s 超级块表示。v f s 中保存了所有挂载的文件系统的链表和各文件系统对应的v f s 超级块p s l 。v f s 超级块的内容如表2 1 所示。 。 ( 2 ) 索引节点对象( i n o d e ) 在虚拟文件系统中,每个文件、目录都用唯一的一个v f s 索引节点来表示。 每个v f s 索引节点中的信息通过文件系统相关例程从底层文件系统中得到。v f s 浙江大学硕士学位论文第2 章嵌入式文件系统综述 索引节点只存在于核心内存中,存放在v f s 索引节点的缓存中【1 8 】。v f s 索引节 点的内容如表2 2 所示。 表2 1v f s 超级块内容 曩陵戮震 d e v i c e表示文件系统所在块设备的标识符,如d e v h d a l 的块设备标 识符为0 x 3 0 1 i n o d ep o i n t e r s包括两个索引节点:m o u n t e d 索引节点指针指向文件系统的 第一个节点;c o v e r e d 指针指向代表文件系统关节目录的节 点。r o o t 文件系统的v f s 超级块中不含c o v e r e d 指针 b l o c k s i z e数据块的大小,以字节为单位 s u p e r b l o e ko p e r a t i o n s 指向一组超级块操作例程集的指针,这些例程被v f s 用来读 取和写入索引节点以及超级块 f i l es y s t e mt y p e 指向已挂载文件系统的f i l e _ s y s t e m _ t y p e 数据结构的指针 f i l es y s t e ms p e c i f i c已挂载的文件系统的特殊信息 表2 2 v f s 索引节点内容 露震藏麓 d e v i c e表示该文件或其它任何v f s 索引常点所代表对象的设备标识符 i n o d en u m b e r索引节点的编号,在文件系统中唯一 m o d ev f s 索引节点代表的对象类型,以及相应的访问权限 u s e r i d s所有者标识符 t i m e s建立、修改和写入的时间 b l o c k s i z e数据块的大小,以字节为单位 n o d eo p e r a t i o n s 指向索引节点操作例程集的指针。这些例程专用于该文件系统, 用来执行针对该节点的操作 c o u n t系统组件使用该v f s 索引节点的次数。计数为0 时,表示该节 点可丢弃或者重新使用 l o c k 该字段用来锁定v f s 节点 d i i 够 表明v f s 节点是否被修改过。若被修改过,则该节点应该写入 底层文件系统 9 浙江大学硕士学位论文第2 章嵌入式文件系统综述 2 3 1 2v f s 的逻辑结构 虚拟文件系统抽取了各种不同物理文件系统的共性,屏蔽了它们的差异,为 上层应用访问各种文件系统提供了一个统一的接口。在v f s 提供的接口中包含向 各种物理文件系统转换用的一系列数据结构,如v f s 超级块、v f s 索引节点等, 同时还包含m i n i x 、e x t 2 、j f s 等物理文件系统进行处理的各种操作函数的转换入 口。除此之外,v f s 使用了三种缓存机制:v f s 索引节点高速缓存l n o d ec a c h e ; v f s 目录高速缓存d i r e c t o r yc a c h e ;缓冲区高速缓存b u f f e rc a c h e 。其逻辑 结构如图2 2 所示。 图2 2 v f s 的逻辑结构 当系统启动和操作系统初始化时,文件系统首先在v f s 中进行注册。如果文 件系统内建于内核中,则初始化过程发生在系统引导时;若文件系统被设计成可 加载的模块,则在实际挂载某个文件系统时进行初始化。例如v f a t 就被实现成 一个核心模块,当挂载v f a t 文件系统时它才被加载。当某种基于块设备的文件 系统( 包括r o o t 文件系统) 被挂载时,v f s 必须读取其超级块。每个文件系统类 型的超级块读取程序必须了解实际文件系统的拓扑结构并能够将这些信息映射 到v f s 超级块中。超级块结构的具体内容表2 1 已经给出,它包含了文件系统的 信息和一些完成特定功能的函数指针。例如表示一个已经安装了e x t 2 文件系统的 v f s 超级块包含了专门读取e x t 2 文件系统索引节点的函数地址。每个v f s 超级 1 0 浙江大学硕士学位论文第2 章嵌入式文件系统综述 块中包含指向实际文件系统第一个v f s 索引节点的指针。对r o o t 文件系统来说, 第一个索引节点就是代表“ 目录的节斛1 9 1 。 在v f s 中,由于每个文件和目录均由一个索引节点表示,所以有很多索引节 点会被重复访问。基于这一点,为了提高索引节点的访问速度,v f s 将这些节点 保存在索引节点高速缓存中。对于索引节点缓存中长时间不被使用的节点则从缓 存中将其删除。 v f s 还维护一个目录高速缓存,其作用是为了能够快速找到频繁使用的目录 索引节点。目录本身的索引节点并不保存在目录高速缓存中,而是保存在索引节 点缓存中。在目录高速缓存中保存的是完整目录名到对应索引节点编号的映射关 系。 所有l i n u x 文件系统使用一个通用b u f f e rc a c h e 来缓冲来自底层设备的数据, 以便加速对包含此文件系统的物理设备的存取。 2 3 2m t d 概述 2 3 2 1m t d 简介 m t d 是m e m o r y t e c h n o l o g y d e v i c e ( 内存技术设备) 的缩写。为了使新的存 储设备的驱动更加简单,m t d 为底层硬件和上层软件提供了一个抽象接口。对 底层而言,它无论对n o r 或是n a n d 闪存都有很好的支持;对上层来说,它抽 象出文件系统所需要的接口函数【2 0 1 。 m t d 驱动程序是在l i n u x 下专门为基于闪存的设备所设计的新的一类驱动 程序。相较于常规的块设备驱动程序,它们通常有更好的支持、更好的管理和基 于扇区的擦除和读写操作的更好的接口。l i n u x 下的m t d 驱动程序接口被划分为 两类模块:用户模块和硬件模块。图2 3 显示了文件系统、m t d 和n a n df l a s h 的层次关系和调用关系【2 l 】。 m t d 中有两个用户模块可以对闪存进行访问,它们分别是:m t dc h a r 和 m t db l o c k 。m t dc h a r 用于访问闪存的原始字符,与其关联的设备是 d e v m t d o 、d e v m t d l 等;m t db l o c k 用于访问把闪存作为像i d e 这样的常规 浙江大学硕士学位论文第2 章嵌入式文件系统综述 块设备,比如通过f t l ( 闪存转译层) ,与其关联的设备是d e v m t d b l o c k 0 、 d e v m t d b l o e k l 等。 为了访问特定的闪存设备并将文件系统置于其上,需要选择适当的m t d 硬 件和用户模块,然后将其编译到内核中。目前,有越来越多的驱动程序正被添加 到m t d 子系统中,以用于不同的闪存芯片。 图2 3m t d 与文件系统、n a n d 闪存的层次关系 2 3 2 2m t d 结构 m t d 的所有代码在c l r i v e r s m t d 目录下,在m t d 中c f i ( c o m m o nf l a s h i n t e r f a c e ) 公共闪存接口设备分为四层,这四层从上到下依次是:设备节点、m t d 设备层、m t d 原始设备层和硬件驱动层。其结构【2 2 】如图2 4 所示。 f l a s h 硬件驱动层:负责在初始化时驱动f l a s h 硬件,m t d 设备的n o rf l a s h 芯片驱动遵循c f i 接口标准,其驱动程序位于d r i v e r s m t d c h i p s 子目录下。n a n d f l a s h 的驱动程序则位于d r i v e r s m t d n a n d 子目录下。 m t d 原始设备层:由两部分组成,一部分是m t d 原始设备的通用代码,另 一部分是各个特定的f l a s h 的数据,例如分区信息等。其中重要的数据结构和信 息主要包括一下四个方面【2 2 1 。 1 2 浙江大学硕士学位论文 第2 章嵌入式文件系统综述 ( 1 )m t di n f o 用于描述m t d 原始设备的数据结构,定义了大量的关于 m t i ) 的数据和操作函数。 ( 2 )m t dt a b l e 是所有m t d 原始设备的列表,在m t d c o r e c 中定义。 ( 3 )m t dp a r t 用于表示m t d 原始设备分区的结构,其中包含了 m t di n f o 。每一个分区都被看成一个m t d 原始设备加在m t dt a b l e 中,m t dp a r t m t di n f o 中的大部分数据都从该分区的主分区 m t dp a r t - m a s t e r 中获得。 ( 4 ) 在d r i v e r s m t d m a p s 子目录下存放的是特定f l a s h 的数据,每一个 文件都描述了一块板子上的f l a s h 的信息。其中调用 a d d _ m t d _ d e v i c e o 、d e l _ m t d _ d e v i c e o 可建立或删除m t d i n f o 结构并 将其加入m t dt a b l e 或者从中删除。 m t d 设备层:基于m t d 原始设备。u c l i n u x 系统可以定义出m t d 的块设备 ( 主设备号3 1 ) 和字符设备( 设备号9 0 ) 。m t d 字符设备的定义通过注册一系 列f i l e 函数 , 在c 中实现。_ o p e r a t i o n s ( 1 s e e k o p e n c l o s er e a dw r i t e )m t d e h a r m t d 块设备则是定义了一个描述m t d 块设备的结构m t d b l kd e v ,并声明了一个 名为m t d b l k s 的指针数组,这数组中的每一个m t d b l kd e v 与m t dt a b l e 中的每一 个m t di n f o 一一对应瞄】。 设备节点:通过m k n o d 在d e v 子目录下建立m t d 字符设备节点和m t d 块 设备节点,通过访问此节点便可访问m t d 字符设备和块设备。 根文件系统:引导程序中将具体文件系统的映像文件烧到f l a s h 的某一个分 区中,在a r c h a r m m a c h y o u r a r c h c 文件中的y o u f6 x u p 0 函数中将该分区作为根 文件系统挂载【2 2 1 。 文件系统:内核启动后,通过m o u n t 命令可以将f l a s h 中的其余分区作为文 件系统挂载到挂载点上。 具体的n a n d 闪存驱动是和n a n d 通用驱动相关联的。要实现一个n a n d 闪存硬件驱动,需要实现下面各部分:初始化函数、硬件相关的设备就绪函数和 控制函数【2 2 】。为了更加灵活,还可以实现硬件相关的命令函数、硬件相关的等待 浙江大学硕士学位论文第2 章嵌入式文件系统综述 函数和硬件e c c 函数。 图2 4 m t d 结构图 2 4 基于n a n d 闪存的嵌入式文件系统 嵌入式系统和桌面系统一样,为用户提供文件系统以方便信息的处理。所以 很多桌面系统中的文件系统可以通过特殊的方式应用于嵌入式系统中。目前可用 于n a n d 型闪存的文件系统包括集中索引的文件系统和y a f f s 系列文件系统。 该部分主要介绍集中索引的文件系统,y a f f s 文件系统将在第三章详细介绍。 2 4 1 集中索引文件系统 集中索引的文件系统主要包括w i n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论