(计算机应用技术专业论文)闪存驱动与管理技术研究.pdf_第1页
(计算机应用技术专业论文)闪存驱动与管理技术研究.pdf_第2页
(计算机应用技术专业论文)闪存驱动与管理技术研究.pdf_第3页
(计算机应用技术专业论文)闪存驱动与管理技术研究.pdf_第4页
(计算机应用技术专业论文)闪存驱动与管理技术研究.pdf_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

华中科技大学硕士学位论文 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 一= : 摘要 j f f s 2 ( j o u r n a l i n g f l a s h f i l es y s t e m v 2 ) 是一种基于日志结构的文件系统,是专门为 使用闪速存储设备的嵌入式系统设计的。它支持耗损平衡,并具有断电保护功能,因 而更适合于把闪存作为存储设备的嵌入式系统。 在嵌入式l i n u x 上实现j f f s 2 文件系统需要m t d ( m e m o r yt e c h n o l o g yd e v i c e ) 驱动 技术的支持。m t d 技术为j f f s 2 文件系统提供了与存储器硬件无关的抽象接口。首先 通过编写m t d 驱动的m a p s 文件,建立m t d 与具体闪存设备间的关联,然后通过系统 内核配置和脚本设置等工作,完成了在l i n u x 系统上搭建j f f s 2 文件系统的完整过程。 由于闪存的特殊物理特性,闪存文件系统必须具备垃圾收集机制和耗损平衡机 制。j f f s 2 文件系统中垃圾收集机制实现简单,但在文件局部性访问的情况下效率不 高。改造后采用的垃圾收集机制考虑到闪存块利用率、数据访问频率、数据分布等影 响垃圾收集策略效率的多种因素,同时兼顾了嵌入式系统资源有限的特点。 垃圾收集策略改造后,j f f s 2 文件系统原有的耗损平衡策略也应随之改造。在闪 存文件系统中耗损平衡机制可以在闪存管理的多个功能模块中的一处或多处实现。在 块分配功能模块中实现耗损平衡策略需要考虑到数据更新速度和块擦除频率之间的 关系。与此同时,在垃圾收集功能模块中以统计的方法选取擦除次数少的干净块进行 擦除,克服了仅在块分配模块中实现耗损平衡机制的缺点。 关键字:嵌入式系统,闪存,文件系统,内存技术设备,垃圾收集,耗损平衡 华中科技大学硕士学位论文 a b s t r a c t j f f s 2 ( j o u m a l i n g f l a s hf i l es y s t e mv 2 ) i sak i n do f l o g s t r u c t u r e df i l es y s t e m s ,“i s d e s i g n e ds p e c i a l l yf o rt h ee m b e d d e ds y s t e m sw i m f l a s hm e m o r i e s i t sc h a r a c t e r i s t i c so f w e a r - l e v e l i n g ,s h o c k r e s i s t a n c em a k e i ts u i t a b l ef o rt h ee m b e d d e d s y s t e m s i m p l e m e n t a t i o no f j f f s 2i nt h ee m b e d d e dl i n u xs y s t e mn e e d st h es u p p o r to fm t d ( m e m o r yt e c h n o l o g yd e v i c e ) t c c h n o l o g y m t dt e c h n o l o g yp r o v i d e sj f f s 2t h ea b s t r a c t i n t e r f a c en o n - r e l e v a n tt ot h em e m o r yh a r d w a r e 。p r o g r a m m i n gt h em a p sf i l e sc o n n e c t s m t da n dc o n c r e t ef l a s hd e v i c e s a f t e rc o n f i g u r i n gt h es y s t e mk e r n e la n de d i t i n gt h es c r i p t s , t h ej f f s 2f i l es y s t e mi nl i n u xi sa c h i e v e d t h ef l a s hf i l e s y s t e m sm u s th a v eg a r b a g ec o l l e c t i o nm e c h a n i s ma n dw e a r - l e v e l i n g m e c h a n i s mf o rt h ec h a r a c t e r i s t i e so ff l a s hm e m o r y t h eg a r b a g ec o l l e c t i o ni nj f f s 2i s i m p l e m e n t e de a s i l y , b u ti t sp e r f o r m a n c e i sn o tv e r yg o o di nt h ef i l e a c c e s s i n gm o d eo f h i g h l o c a l i t y t h ei m p r o v e dp o l i c yc o n s i d e r ss e v e r a lf a c t o r st h a t c a ni n f e c tt h ee f f i c i e n c yo f g a r b a g ec o l l e c t i o n ,s u c h 晒u t i l i z a t i o no fe a c hb l o c k ,a c c e s s i n g 台e q u e n c yo fd a t a , e t c i t a l s oc o n s i d e r st h el i m i t a t i o no f t h er e s o a l e si nt h ee m b e d d e ds y s t e m s t h e w e a r - l e v e l i n gm e c h a n i s m n e e d st ob em o d i f i e da f t e rt h eg a r b a g ec o l l e c t i o n t h e w e a r - l e v e l i n gp o l i c yc a nb ei m p l e m e n t e d i no n eo rs e v e r a lf u n c t i o nm o d u l e so ft h ef l a s h m a n a g e m e n t i m p l e m e n t i n gt h ep o l i c yi nb l o c k a l l o c a t i o nm o d u l en e e d st oc o n s i d e rt h e r e l a t i o nb e t w e e nt h er a t eo fd a t ar e f r e s h m e n ta n dt h eb l o c k - e r a s i n gf r e q u e n c y m e a n w h i l e , p i c k i n gt h e c l e a nb l o c k s s t a t i s t i c a l l y t oe r a s eo fl e s se r l t s et i m ec 蛆o v e r c o m et h e d i s a d v a n t a g e o f i m p l e m e n t i n g t h ep o l i c yi nb l o c ka l l o c a t i o nm o d u l es e p a r a t e l y k e y w o r d :e m b e d d e ds y s t e m ,f l a s hm e m o r y , h i es y s t e m ,m e m o r yt e c h n o l o g yd e v i c e , g a r b a g ec o l l e c t i o n ,w e a rl e v e l i n g i i 独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他 个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集 体,均已在文中以明确方式标明。本人完全意识到,本声明的法律结果由本人承 担。 学位论文作者签名:震 富晦 日期:汐。年年年月万日。 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有 权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和 借阅。本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据 库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密口,在年解密后适用本授权书。 本论文属于不保密4 ( 请在以上方框内打“”) 学位论文作者签名: 日期:瞬4 月媚 砷剪缉 i 指导教师签名:印目岳队, 日期幽冉d f 日 华中科技大学硕士学位论文 1 1 课题背景 1 绪论 嵌入式系统u 叫是以应用为中心,以计算机技术为基础,软硬件均可裁剪,适应于 对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。随着以信息家电 为中心的嵌入式系统被广泛地应用于办公自动化、消费电子、通信设备、智能仪器和 军事电子设备等各个领域。嵌入式硬件和软件的迅速发展,使得只通过简单循环控制 实现单的管理已经远远不能满足用户需要,因此嵌入式操作系统应运而生,用来对 同益复杂的硬件资源进行系统的管理。l i n u x 作为一种优秀的开放源代码的操作系统, 近几年在嵌入式领域异军突起,已经成为最有潜力的嵌入式操作系统。 嵌入式文件系统r 4 , 5 3 是嵌入式系统的重要组成部分。是一个管理嵌入式操作系统的 文件输入输出和操作的功能模块,它提供了一系列功能强大的文件输入输出和方便 的文件管理,为办公设备通讯设备、工业控割、医学电子、交通设备和移动设备等嵌 入式系统和设备提供文件系统支持。随着l i n u x 技术的日趋成熟,在其性能和安全上 也提出了越来越高的要求,如访问速度、可用性、数据完整性、可移植洼等等。因此, 选择一种功能完善的文件系统并使之适用于嵌入式产品,有着相当重要的意义。 本课题来源于华中科大精伦软件研究所的项目“嵌入式l i n u x 操作系统研究”,产品 i f o n ed 32 0 即采用了l i n u x - 2 4 2 8 版本内核作为底层操作系统,并在c i r r u sl o g i c 公司 设计的基于e p 7 3 1 2 【6 日芯片的高集成度开发平台- - e d b 7 3 2 2 开发板上进行开发。嵌入式存 储系统在e d b 7 3 2 2 开发板上的i n t e l 公司的2 8 f 2 2 8 j 3 a 芯片进行开发。该系统将应用于新 一代的多媒体通信终端【蝴( 电话终端、因特网接入终端、数字信息处理终端的集成) ,提 供电话服务、新闻浏览、收发邮件、电子商务和信息查询等服务。 1 2 基于嵌入式l i n u x 的闪存文件系统 1 2 1闪存硬件平台对文件系统的特殊耍求 闪存1 1 0 - t 2 1 ( f l a s hm e m o r y ) 又称p e r o m ( p r o g r a n m m b l e a n de r a s a b l er e a do n l y 华中科技大学硕士学位论文 m e m o r y ) ,是一种非易失性固态存储器,它具有很多优点。它提供高可靠性、高密度 的固态存储;它是完全非易失性存储器,提供数据掉电保护;它可以在线写入存取 速度快。这些特性使闪存成为嵌入式设备存储的最佳选择,已经被广泛应用到移动设 备、电子消费品和嵌入式设备中。 但是,闪存特殊的硬件特性【n ,卅决定访问闪存主要需要三种操作,分别是读操作、 写操作、擦除操作【 】。这三种操作在访问速度、访问方式和访问单元方面都存在差异。 从访问速度上看,闪存读操作效率最高,其速度和d r a m ( d y n a m i c r a n d o m a c c e s s m e m o r y ) 相当;写操作的速度比读操作慢几百倍;闪存每次进行擦写操作耗时o 6 一o 8 秒,相对读写操作来说较慢且功耗很大 1 “。 从访问单元上看,闪存读写操作的访问单元均为字节;进行擦除操作时,整个闪 存的存储空阀被分成了大小固定的块进行,硬件厂商定制了块的大小( 通常为 6 4 k b y t e s ) ,每一块是闪存进行擦除操作的基本单位。 从访问方式来看,应用程序可以高效地进行闪存特定位置上的读操作,而在闪存 上进彳亍重写操作之前必须进行擦除。闪存芯片划分成很多擦除块,对任何一位数据进 行修改不能通过对该位单独操作来实现,雨必须先擦除整个块,把闲存中所有的存储 单元重置为全j 或全0 。这瑟昧者修改数据要比单独的读或写操作耗费更多的时间。 与此同时,蹰存中每个存储单元的允许重写的次数是有限匏,一般是1 0 0 , 0 0 0 到 1 , 0 0 0 ,0 0 0 次f 16 j 。当一个块提前达到擦除的上限对将导致整个闪存无法使用。若闪存 不能均衡的撩除,将导致闪存的整体利用率较低,这使闳存艰硬盘糨比在可靠性上有 了差距。 基于以上讨论,如果想要对闪存的访问更有效、功耗更少,而且使闪存钓寿命更 长,擦除操作必须尽可能的避免,并且,擦除操作必须尽可能的均匀分布在整个阕存 上。这是实现基于闪存的存储系统的主要原刚。 在文件系统中过于频繁的写操作会损坏闪存芯片。要对闪存芯片避行写操作,又 要让它的寿命尽可能长,必须要对闪存的写操作进行合理的调度,尽量使每个存储 块经历大致相同的擦写次数。因此,传统的文件系统不能直接应用于闪存【i 7 j 。必须有 基于闪存特性的专门的文件系统,来提供对闪存存储空间的高效的管理e 闪存专用的 文件系统必须提供俩种机制分别为垃圾收集机制0 8 1 和耗损平衡机制 1 9 , 2 0 。 1 ) 垃圾收集机制 华中科技大学硕士学位论文 = = = = = = = = = = = = ;= = = = = = 一: 闪存的第一个缺陷使得数据无法直接在原位置更新口n ,所以需要一种清除机制标 记无效的存储空间以备重新使用。而闪存文件系统的清除机制决定了它属于日志文件 系统瞄。2 4 1 a 日志文件系统的设计思想是跟踪文件系统的变化而不是文件系统的内容。 当文件内容改变时,只需写入新的数据块,然后更新内存中的索引节点列表,抛弃内 容已经改变的旧块,使文件指向新写入的数据块即可。此外,采用日志文件系统还有 一个优点就是可以防止断电,这对于作为嵌入式存储设备的闪存来说也是非常重要 的。 2 ) 耗损平衡机制 需要垃圾收集机制的文件系统的性能通常取决于它的算法。这些算法的设计目的 都是为了提高垃圾收集机制的效率,也就是垃圾收集操作的代价。然而由于第二个缺 陷的存在,在降低垃圾收集系统代价的同时,基于闪存的文件系统还必须提供可以接 受的均衡磨损的能力。随着闪存容量越来越大,均衡磨损变得越来越必要。问题在于 均衡磨损通常会阻碍垃圾收集代价的降低。所以闪存文件系统的难题就在于要在垃圾 清除机制和耗损均衡这两个相互矛盾的设计目的之间求得折衷。这就要将耗损均衡和 垃圾收集机制综合进行考虑【1 6 1 。 1 2 2 嵌入式系统中闪存的应用环境 在普通的p c 中,外部存储介质一般都是使用i d e ( i n t e g r a t e dd r i v ee l e c t r o n i c s ) 硬 盘等传统的外存设备。而在嵌入式系统中,各种特殊的应用目的对存储设备提出了各 种各样的要求。所以在不同的场合下当然需要因她制宜的选择存储设备。目前,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 作为普通的r o m ( r e a do n l ym e m o r y ) 来使用, 或辅以r o t o r s 、c r a m f s 等文件系统即可满足要求。在运行时,系统会把需要操作的文 件、目录提取到内存之中进行操作。由于不能在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 的管理非常简单,同普通的r o m 没有什么区别。 而在第二种情况下,虽然使用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 的驱动程序( 即基本操作函数) 。而且,除非花费很大的精力对 存储设备的所有操作进行抽象与封装,否则在应用程序中通常也需要添加一些与硬件 相关的代码来对f l a s h 的存储数据进行操作与管理。此外,由于必须要考虑数据的完 整性与可靠性,所以不能简单的把数据堆积到f l a s h 中就算完成任务了,还必须进行 一些额外的设计工作,确保在f l a s h 设备中存储的数据可以经受住尽可能多的灾难性 事故的发生。 为了达到上面的目的,最经常使用的解决方式就是在编写驱动程序的时候,考虑 进行数据的冗余备份,或者对数据增加c r c ( c y c l i cr e d u n d a n c yc h e c k ) 校验。如果需 要记录日期,那么还要在记录的数据之中增加一个时间戳,这样就可以对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 驱动程序的时候,才建议采用这种 方式。 f l a s hd i s k 有一些f l a s h 存储设备上附带了控制电路,并且提供了i d e 的接口。这些设备通 常都是模拟了p c 中的i d e 之类设备的接口。大多数的嵌入式环境中都可以支持对这 种接口的存储设备进行访问。 这样,在嵌入式l i n u x 环境下,就可以直接通过d e v h d a 等i d e 设备文件按照对 4 华中科技大学硕士学位论文 = = = = = = = = = = = = = = = = 一= 普通硬盘的操作方式对其进行访问了。首先可以在这个f l a s h 设备上创建一个文件系 统( 例如e x t 2 文件系统) ,之后对该设备的访问就得到了极大的简化。 该访问方式的缺点是,按照通常的i d e 设备对f l a s h 设备进行访问并不能够保证 数据的可靠存储,这是因为f l a s h 存储设备与普通i d e 设备有很多不同之处。而且必 须选购专门的f l a s h 存储设备。 专用于f l a s h 的文件系统 例如j f f s 2 2 5 1 等文件系统,目前已经比较成熟,并有了成功的应用。其主要的思 想就是根据闪速存储设备的特点,在设计文件系统的过程中就考虑了闪存的读、写特 性。这样,就可以获得针对闪存设备进行优化过的一个文件系统。虽然这种文件系统 并不适合在其他类型的块存储设备上使用,但是可以在闪存设备上充分发挥特长,因 此成为嵌入式开发人员关心的焦点之一。 在i f o n ed 3 1 0 的开发中,选用嵌入式l i n u x 2 6 8 1 开发环境中的j f f s 2 文件系统, 在此基础上对其进行实施和改造,构造高效和高可用性的闪存文件系统架构。 1 3 嵌入式系统中的闪存管理技术 随着闪存在嵌入式系统中应用的不断扩展,涌现出了多种闪存文件系统,它们在 闪存管理方面各有特色。 t f s ( t i n y f i l es y s t e m ) t f s 是由原l u c e n t 公司的e ds u r e r 开发的嵌入式系统引导平台u m o n 的一部分。 u m o n 平台为一个综合的软件包,目的是为嵌入式应用提供一个通用的引导平台,加 快应用开发。 t f s 的垃圾收集机制需要额外的辅助空间,用于垃圾收集时文件缓存和过程状态 的保存,保证了掉电后的数据安全。t f s 中对文件很小的修改也要重写整个文件,需 要较大的运行开销。在垃圾回收机制方面,t f s 需要浪费两个扇区,并增加了系统复 杂性。 j f f s j f f s l 2 9 l ( j o u m a l i n g f l a s hf i l es y s t e m ) a x i s 通信公司开发的文件系统a 浚系统主要针对无盘嵌入式系统中的n o r 型f l a s h 存储器而设计,提供了掉电安全、 耗损平衡等特性。 华中科技大学硕士学位论文 雹= = = 彳专零专一 j f f s 使用了日志方式保证文件系统的安全性、完整性和统一性。它提供的聂荔i i 集功能采用从前面向后的线性收集方式。存储器空间循环使用,提供了耗损平衡的特 性。 t r u e f f sf o rt o r n a d o 商用嵌入式文件系统1 h e f f s 是w i n d r i v e r 公司的t o r n a d o 嵌入式开发环境的一 部分,它允许f 习存模拟硬盘来向w i n d o w s 文件系统提供兼容。 t r u e f f s 的垃圾收集方法是选择最多废弃数据量、最小擦除次数和最多静态数据 的块进行擦除。它使用统计的方法获得耗损平衡,能均匀使用f l a s h ,用冗余数据结 - 构保证可靠的数据操作,能排除损坏块以避免错误,实现了f t lf f l a s ht r a n s l a t i o n l a y e r ) 标准。 l i n u xp c m c i a l i n u xp c m c i a 3 0 m 1 闪存驱动选择块中废弃数据量最多的块进行垃圾收集,有时 也会选择被擦除次数最少的块进行擦除。这种方法避免了擦除操作集中在某些块上。 1 4 内存技术设备 j f f s 2 底层驱动主要完成文件系统对f l a s h 芯片的访问控制,如读、写、擦除操 作。在l i n u x 中这个部分功能是调用m t d 驱动实现的。 m t d t 3 2 1 为一类特殊的存储设备,如通常说的闪存、c f i ( c o m p a c tf l a s hi ) 卡、 d i s k o n c h i p 等提供了抽象的接口层。这类特殊的设备都有着一些共同的特点:小容量、 整块的写入和擦除、特殊的读写特性。它们通常在系统内存中的扩展b i o s ( b a s i ci n p u t o u t p u ts y s t e m ) 空间内形成了一个内存映射窗口,通过这个窗口来对存储设备进行读写 和控制。 概括的说,这类设备有着共同的属性和操作方式,它们统称为m t d 设备。 m t d 子系统分为3 个模块【3 3 1 ,分别是:用户模块、核心模块、硬件驱动模块。 用户模块可阱是j f f s 2 这种直接运行于f l a s h 芯片上的日志型文件系统,也可以是传 统的用于将f l a s h 芯片模拟成块设备的伪文件系统。用户模块只需要通过m t d 核心 提供的字符设备方式或块设备方式来访问m t d 抽象设备。m t d 核心模块是作为操作 系统核心的一个子模块来实现的,其功能为: 为各种f l a s h 存储设备定义了一个抽象的m t d 设备结构,发布了一套接口定义; 6 华中科技大学硕士学位论文 提供了通过字符设备方式和块设备方式来直接使用具体硬件设备的功能; 将用户层的具体操作请求提交给实际的硬件驱动模块。 m t d 抽象层提供了一套对某类特殊的存储设备驱动进行综合管理的机制,不仅 方便了上层对这些设备的访问,而且方便了建立在这些特殊设备上的上层核心模块的 设计。 对于上层应用来说,它们只需要通过m t d 抽象层提供的字符设备方式或者块设 备方式来访问m t d 抽象设备就可以了,然后通过m t d 的内部机制把这些上层提交 的请求转交给实际的驱动模块去执行。这样,具体的驱动层设计对上层应用来说是透 明的,具有独立性。驱动层做了修改后,上层应用不需要进行任何的调整。 在一些系统中,如j f f s 2 ,f t l 【3 4 】,n f t l ( n a n df l a s h t r a n s l m i o nl a y e r ) ,需要 直接访问设备的驱动接口来完成它们的工作,如果没有m t d 抽象层,它们就需要直 接来调用这些设备驱动中的函数。这样做缺乏兼容性,因为这些特殊的核心模块如果 要在多种设备上实现,就必须针对每一个不同的驱动来实现不同的代码,而且缺乏独 立性。如果设备驱动中的函数接口形式发生了改变,这些特殊的核心模块可以作为 m t d 的用户模块来设计,把它们建立在m t d 抽象层提供的m t d 设备上,而不是建 立在某个具体的设备上。 在i f o n ed 3 1 0 系统中,通过使用m t d 技术实现j f f s 2 文件系统对2 8 f 1 2 8 j 3 a 芯 片的读写访问,避免了直接访问实际设备时带来的兼容性和设备独立性问题a 1 5 课题主要研究工作 j f f s 2 文件系统作为嵌入式l i n u x 系统中最经常使用的文件系统,其关键技术和 实现机制日臻完善。在嵌入式应用领域中,考虑到系统存储管理效率和具体嵌入式设 备的应用中,j f f s 2 文件系统在i f o n e d 3 1 0 产品的底层硬件驱动上,需要具体的实现。 同时,j f f s 2 文件系统也暴露出自身一些缺陷,如:垃圾收集效率不高,在系统可用 闪存空间较低的时候系统性能下降很大;耗损平衡没有同垃圾收集效率一起综合考虑 等。 本课题针对i f o n ed 3 1 0 产品的应用环境和f l a s h 存储器的存储特性,首先将解决 j f f s 2 闪存文件系统对m t d 驱动层原始设备驱动模块的实现和文件系统搭建过程, 其次,将针对j f f s 2 文件系统垃圾收集操作效率不高,系统闪存耗损平衡机制不灵活 华中科技大学硕士学位论文 的问题,对j f f s 2 闪存管理策略进行改造,以提高系统性能。 本课题的主要研究工作包括: 介绍l m u x 环境下嵌入式文件系统的整体架构,研究j f f s 2 文件系统m t d 原始 设备驱动的设计与实现,以及i f o n ed 3 1 0 中文件系统的组织与搭建过程; 从j f f s 2 文件系统闪存管理流程入手,分析j f f s 2 文件系统闪存管理策略,指出 j f f s 2 闪存管理的垃圾收集机制的不足; 通过分析影响系统垃圾收集效率的主要因素,并考虑嵌入式系统资源有限的状 况,提出系统代价小、易于实现且行之有效的垃圾收集策略; 比较多种耗损平衡策略工作的有效性和实现的可行性,从垃圾收集策略要考虑系 统写操作的效率和闪存耗损平衡,对这两个方面分别进行分析,提出改进的算法,并 给出具体实现。 8 华中科技大学硕士学位论文 2 l i n u x 闪存文件系统分析 l i n u x 下闪存文件系统的实现分为由上至下分为四个层次,它们分别是: v f s ( v i m m lf i l es y s t e m ) 3 5 , 3 6 】虚拟文件系统、j f f s 2 闪存日志文件系统、m t d 和闪存 硬件驱动。如图2 1 所示。 lv f s 善 l i j f f s 2 l i im t d 闪存硬件驱动 图2 1l i n u x 闪存文件系统框架 v f s 是l i n u x 操作系统的虚拟文件系统,负责与操作系统之间交互。把文件作为 逻辑页面进行操作和维护。它为l i n u x 下所有文件系统包括j f f s 2 和设备提供统一的 文件访问管理接口。 j f f s 2 对底层闵存物理设备的驱动通过调用m t d 驱动实现,对不同类型和型号 的存储设备提供统一的读写管理接口,主要完成文件系统对f l a s h 芯片的访问控制。 j f f s 2 文件系统针对闪存的特殊的物理性质,提出具体的闪存管理策略,从而获 得闪存文件系统较好的运行效率和合理均衡的使用闪存。 2 1j f f s 2 与虚拟文件系统的交互 v f s 虚拟文件系统必须管理所有可在任意时刻挂接的不同文件系统,它使用超级 块和索引节点【3 7 1 来对具体的文件系统进行描述。v f s 能够对不同文件系统的数据结构 进行抽象,使用户可以通过一个文件系统操作界面,即调用同一组系统调用,对各种 不同的文件系统进行操作。这样就对用户隐去了各种不同文件系统的实现细节,为用 华中科技大学硕士学位论文 户提供了一个统一的、抽象的、虚拟的文件系统界面。 v f s 在核心中维持并描述的数据结构是整个虚拟的文件系统和被安装的真实的 文件系统。它具备如下功能:记录可用的文件系统类型:将设备同对应的文件联系起 来;处理一些面向文件的通用操作;涉及到针对文件系统的操作时,v f s 把其映射到 控制文件、目录及索引节点相关的物理系统中。v f s 通过超级块、索引节点、文件操 作等数掘结构处理各种文件系统豹公共接口。 每个已挂接的文件系统由v f s r a o u n t 结构描述。所有的v f s m o t m t 结构形成了一个 链表,该链表头由v f s m n t l i s t 指针代表。系统中还有两个指针,v f s m n t t a i l 和如lv f s m n t , 分别指向链表尾和最近使用过的v f s m o u n t 结构。每个v f s m o u n t 结构包含保存该文件 系统的块设备号、文件系统挂接点的目录名称以及指向该文件系统分配的v f s 超级块 指针。而v f s 超级块中则包含描述文件系统的f i l e _ s y s t e m _ t y p e 结构指针和该文件系 统根节点指针。不同类型的文件系统所对应的超级块读取例程必须能够理解实际文件 系统的拓扑结构,并且能够将实际的超级块结构映射为v f s 超级块结构。v f s 超级 块包含了文件系统的信息,并且还包含一些完成特定功能的函数指针。在j f f s 2 文件 系统中,v f s 超级块包括每个v f s 超级块中包含指向实际文件系统第一个v f s 索引 节点的指针。 文件系统由子目录和文件构成。每个子目录或文件只能由唯一的索引节点描 述。索引节点是l i n u x 管理文件系统的最基本的单位,也是文件系统连接任何子目 录和任何文件的桥梁。v f s 的索引节点同v f s 的超级块一样,是物理设备上文件 或目录在内存中的统一封装,其内容由物理设备上的文件系统指定的操作函数填 写,并且只存在于内存中,其中,联合成员i n o d e u 是实现的关键,它指向某特 定文件系统的索引节点。例如,对于j f f s 2 类型的文件系统,其闪存上的索引节点 信息j f f s 2 i n o d e 复制到内存中就是一个j f f s 2 _ i n o d ei n f o 结构,i n o d e u j f f s 2 i 将指向 该结构。 图2 2 1 3 8 1 列出了l i n u x 操作系统中v f s 超级块数据结构是如何跟j f f s 2 文件系统 类型联系起来的。当j f f s 2 文件系统挂接到系统中之后,系统v f s m n t l i s t 列表中存在 一项v f s m o u n t 结构表示j f f s 2 文件系统类型,其中的瑚l s b 指针指向j f f s 2 文件系 统对应的v f s 超级块结构。v f s 超级块结构中联合体u 对应着不同文件系统的超级 块信息。在j f f s 2 文件系统中,这些信息包括:表示m t d 原始设备的结构m t d _ i n f o ; 华中科技大学硕士学位论文 系统进行垃圾收集的线程信息;系统闪存使用信息及闪存块大小;系统中块队列分类 信息等。v f s 文件系统s u p e rb l o c k 结构体中还包含st y p e 项,通过指针指向 f i l e s y s t e mt y p e 结构。在j f f s 2 文件系统中通过宏定义d e c l a r ef s t y p e _ d e v 填 充f i l e _ s y s t e m _ t y p e 结构体,在r e a ds u p e r 一项中填入j f f s 2 系统所需钓r e a ds u p e r 函数:j f f s 2 r e a d _ s u p e r ,在其中初始化对应的s u p e rb l o c k 结构和联合体u ,赋予r e a d 0 、 w r i t e ( ) 函数特定的操作,并扫描整个闪存,建立j f f s 2 文件系统内存映像。v f s 将通 过r e a d n 或w r i t e ( ) 系统调用来识别所访问的文件系统类型为j f f s 2 ,然后调用适当的 文件操作表中的相应方法。 图2 2v f s 超级块数据结构示意围 当个用户进程要打开i f f s 2 文件系统的某个文件时,由系统调用o p e n 0 将进程 从用户空间切换到内核空间并且把控制权交v f s 。系统调用对应的s y s _ o p e n o t 勾核函 数将首先检查路径名的合法性,同时把文件名从舄户区拷贝至q 核心资料区,接着调用 g e l u n u s e d 一翻o 获取一个文件描述符i 调用f i l po p e n o 获得文件对应的f i l e 结构。 f i l e o p e n 0 函数通过调用o p e n _ n a m e i 0 ,由路径名获取相应的d e n t r y 与疆f s 2 的 v f sm o u t l t 结构,找到欲访问文件的索引节点:通过调用d e n t r y,由 得到的和v f s得到结构,并对结构的其_ 它_ o p 域e n 赋o 值,然o p 后e n 判n a 靳r a 是e i d e n n ym o u n t f i l ef i l e 华中科技大学硕士学位论文 = = = = = = = 宅= = = = = = = = = = = = = = = = = = = = = = = = = = = 否要求对文件进行写操作,若要进行写操作则用g e u 】l ,r i t e _ a c c e s s 0 检查是否有写权限。 f i l e 结构是进程通过v f s 与具体的j f f s 2 文件系统建立起链接的桥梁。在这个结构中 有一一个f i l e o p e r a t i o n s 结构的指针f o p ,它指向了具体的文件系统的f i l e _ o p e r a t i o n s 结 构,这样就指定了这个文件所属的文件系统即j f f s 2 文件系统。然后,在d e n t r y 中将检查是否存在该文件索引节点的超级块,若存在那么将f i l e 结构挂到超级块打开 文件链表上。最后返回这个文件的描述符。之后就可以通过这个文件描述符读写该文 件。 2 2 闪存硬件驱动模块的设计思想 m t d 是用于访问内存设备( r o m 、闪存) 的l i n u x 子系统。m t d 的主要目的是 为了使新的内存设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接 口。m t d 的所有源代码在d r i v e r s m t d 子目录下。在i f 0 n ed 3 1 0 产品中使用的 2 8 f 1 2 8 j 3 a 芯片的闪存,遵循c f i 接口标准。 在m t d 中c f i 设备分为四层,这四层从上到下依次是:设各节点、m t d 设备层、 m t d 原始设备层和硬件驱动层。如图2 3 所示。 根文件系统文件系统 字符设备结点块设备结点 m t d 字符设备m t d 块设备 m t d 原始设备 f l a s h 硬件驱动 f l a s h 硬件驱动层 图2 3m t d 系统层次结构示意图 华中科技大学硕士学位论文 = = = = = = = = = = = = = = = = = = = = = 一= : : 硬件驱动层负责在初始化时驱动f l a s h 硬件,l i n u xm t d 设备的n o rf 1 a s h 芯 片驱动遵循c f i 接口标准,其驱动程序位于协v e r s m t 讹1 l 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 的数据,例如分区信息等。 其中重要的数据结构和信息包括: ( 1 ) m t d _ i n f o 用于描述m t d 原始设备的数据结构。其中定义了大量的关于m t d 的数据和操 作函数。 ( 2 ) m t d _ t a b l e 所有m t d 原始设备的列表,在m t d c o r e c 中定义。 ( 3 ) m t d _ p a r t 用于表示m t d 原始设备分区的结构,其中包含了m t d _ i n f o 。因为每一个分区都 是被看成一个m t d 原始设备加在m t dt a b l e 中的,m t d a j a r t m t d _ i 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 dm t dd e v i c e ( ) 、d e lm t dd e v i c e 0 建立或删除 m t d i n f o 结构并将其加m t d t a b l e 入或从中删除( 或者调用a d d _ m t d _ p a r t i t i o n o 、 d e l _ m t d _ p a r t i t i o n 0 ,建立或删除m t d _ p a r t 结构并将t u t t i _ p a r t m t d _ i n f o 力i i , k m t d _ t a b l e 中 或从中删除) 。 m t d 设备层 基于m t d 原始设备,l i n u x 系统可以定义出m t d 的块设备( 主设备号3 1 ) 和字 符设备( 设备号9 0 ) 。m t d 字符设备的定义通过注册一系列f i e _ o p e r a t i o n s 函数( 1 s e e k 、 o p e n 、c l o s e 、r e a d 、w r i t e ) 在m t d c h a r c 中实现。m t d 块设备则是定义了一个描述m t d 块设备的结构m t d b l k _ d 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 块设备节点,通过 华中科技大学硕士学位论文 = = = = 2 = = = = = = = = = = = = = = 2 = = = = ;= = = = = = = 一= = 一! _ 访问此节点即可访问m t d 字符设备和块设备。 根文件系统 在b o o t l o a d e r 中将j f f s 2 的文件系统映像j f f s 2 i r n g 烧到f l a s h 的某一个分区中, 在a r c h a r m r o a c h y o u r a r c h ,c 文件的y o u rf i x u p 函数中将该分区作为根文件系统挂 载。 文件系统 内核启动后,通

温馨提示

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

评论

0/150

提交评论