(计算机应用技术专业论文)jffs2文件系统存储策略的研究与实现.pdf_第1页
(计算机应用技术专业论文)jffs2文件系统存储策略的研究与实现.pdf_第2页
(计算机应用技术专业论文)jffs2文件系统存储策略的研究与实现.pdf_第3页
(计算机应用技术专业论文)jffs2文件系统存储策略的研究与实现.pdf_第4页
(计算机应用技术专业论文)jffs2文件系统存储策略的研究与实现.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

(计算机应用技术专业论文)jffs2文件系统存储策略的研究与实现.pdf.pdf 免费下载

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

文档简介

大连理1 :大学硕七学位论文 摘要 随着嵌入式系统的发展,嵌入式操作系统得到广泛应用,文件系统在整个嵌入式系 统中曰益成为重要的组成部分。j f f s 2 是一种基于f l a s h 存储器的日志型文件系统。做 为一种纯日志型的文件系统,它采用了一种全新的存储方案来实现磨损平衡和垃圾收集 的要求。 到目前为止,j f f s 2 文件系统日益完善,但是它仍然存在一些缺点,这是由于f l a s h 本身的硬件特性和当时构建文件系统的目的所决定的。j f f s 2 最初是针对小规模的f l a s h 容量而设计的,当它应用到大容量设备上时,就会存在一些问题。主要是在整个文件系 统挂载时,整个过程花费了大量的时间。为了有效的实现系统的管理,将不得不在内存 中构建相应的数据结构。此外,相对于嵌入式系统中较小的内存容量而言,这些数据结 构又占据了过多的内存空间。与此同时,整个挂载过程的时间复杂度是与节点的数量成 线性关系的,即0 f n l ,n 代表着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 上直接读取相应的信息即可。 通过在a r m - l i n u x 平台的实验数据测试,证明了采用这样的改进方案能够在一定程 度上克服了文件系统挂载时间过长的问题。 关键词:j f f s 2 = 挂载;闪存 大连理【大学硕士学位论文 t h e i n v e s t i g a t i o na n di m p l e m e n t a t i o no fj f f s 2s t o r a g e a b s t r a c t w i t ht h ed e v e l o p m e n to ft h ee m b e d d e ds y s t e m s t h ee m b e d d e do p e r a t i n gs y s t e mi s w i d e l yu s e d a sar e s u l t ,t h ef i l e y s t e mp l a y sac r i t i c a lr o l ei nt h ew h o l es y s t e m j f f s 2i sa l o g - s t r u c t u r e df i l e s y s t e mw h i c hi sb a s e do nt h ef l a s hm e m o r y a sap u r e l yl o g s t r u c t u r e d s y s t e m ,j f f s 2a d a p t sc o m p l e t e l yn e ws t o r a g es c h e m e ,w h i c hi sd e s i g n e dt om e e tt h e r e q u i r e m e n to ft h ew e a r - l e v e l i n ga n dg a r b a g e - c o l l e c t i o n a tp r e s e n t ,j f f s 2i s g r o w i n gp e r f e c ta n dm a t u r em a e a s i n 醇y ,b u tb e c a u s eo ft h e r e s t r i c t i o n si m p o s e db yt h ef l a s ht e c h n o l o g ya n dt h ed e s i g n i n ga i mo ft h ej f f s 2 ,t h e r ea r e s e v e r a ld r a w b a c k ss t i l l i tw a sd e s i g n e df o rr e l a t i v e l ys m a l lf l a s hc h i p sa n dh a ss e r i o u s p r o b l e m sw h e ni t i su s e do nl a r g ef l a s hd e v i c e s i tt a k e st o om u c ht i m et om o u n tt h e f i l e s y s t e m d u r i n gt h ep r o c e s s ,i no r d e rt om a n a g et h ef l l e s y s t e me f f e c t i v e l y ,t h es y s t e mh a s t ob u i l dm a n yd a t as t r u c t u r e sw h i c ha r en e c e s s a r ya n di n e v i t a b l e f u r t h e r m o r e t h em e m o r y s p e n do nt h e s ed a t as t r u c t u r ei sah u g ea m o u n t ,c o m p a r e dw i t ht h er e l a t i v e l ys m a l lm e m o r yi n t h ee m b e d d e ds y s t e m ,a n dm e a n w h i l e ,t h et i m ec o m p l e x i t yi sl i n e a rw i t hn ,w h i c hi st h e a m o u n to ft h en o d e , 1 1 1 ei m p r o v e m e n ts t r a t e g yi st ot r a d et h et h es p a c ef o rt h et i m e ,i ts t o r e sa l lt h e s i g n i f i c a n tm e m o r ys t r u c t u r eo nt h ef l a s hd u r i n gu m o u n tp r o c e s sa n dr e a d sa l lt h e s e i n f o r m a t i o nf r o mi td i r e c t l y t h e r e f o r e i tb e c o m e ss i m p l e rt ob u i l dt h ed a t as t r u c t u r ea n dt h e s y s t e m f o rt h es a k eo ft h i s , t h ef i r s te r a s eb l o c ki ss a v e df o rt h ei n d e xi n f o r m a t i o n b yw h i c h t h es y s t e mc a nf i n do u ta l lt h ei n f o r m a t i o ns t o r e di nt h ef l a s hb e f o r e t h ef i r s tm o u n ti ss a m e t ot h eo r i g i n a lp r o c e s sa n dt h es y s t e mw i l ls t o r et h ei n f o r m a t i o nd u r i n gt h eu m o u n ti ft h e r ei s n oa c c i d e n t s f r o mt h es e c o n dt i m e ,a l lt h em o u n tp r o c e s s e si u s tr e a dt h en e c e s s a yi n f o r m a t i o n f r o mt h ef l a s ha n dt h e r ei sw e a r - l e v e l i n gi s s u ed u et ot h ee r a s i n gt i m el o w e rt h a nt h ea v e r a g e n u m b e r a c c o r d i n gt ot h ed a t a sf r o mt h ea r m l i n u xp l a t f o r m ,i tp r o v e st h a tt h ei m p r o v e m e n t s t r a t e g ys p e e d st h ep r o c e s so ft h em o u n t 证ac e r t a i te x t e n t k e yw o r d s :j f f s 2 = m o u n t :f l a s h i i i 独创性说明 作者郑重声明:本硕士学位论文是我个人在导师指导下进行的研究工 作及取得研究成果。尽我所知,除了文中特别加以标注和致谢的地方外, 论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得大连理 工大学或者其他单位的学位或证书所使用过的材料。与我一同工作的同志 对本研究所做的贡献均已在论文中做了明确的说明并表示了谢意。 大连理一大学硕十研究生学位论文 大连理工大学学位论文版权使用授权书 本学位论文作者及指导教师完全了解“大连理工大学硕士、博士学位论文版权使用 规定”,同意大连理工大学保留并向国家有关部门或机构送交学位论文的复印件和电子 版,允许论文被查阅和借阅。本人授权大连理工大学可以将本学位论文的全部或部分内 容编入有关数据库进行检索,也可采用影印、缩印或扫描等复制手段保存和汇编学位论 文。 作者签名查鱼 导师签名:玉鳇 丛年立月旦日 大连理工大学硕士学位论文 1 绪论 1 1 课题背景 随着电子技术和嵌入式行业的高速发展,嵌入式产品已经渗透到人们生活的方方面 面,人们对嵌入式产品的需求也不再仅仅是功能单一的电子词典类产品,嵌入式操作系 统逐步成为嵌入式产品的核心,作为操作系统重要组成部分的文件系统,决定了操作系 统本身的信息和用户的数据在存储设备上的组织形式,对嵌入式文件系统的研究,设计 与开发也逐渐成为嵌入式系统研究领域的一个方向i n 。 目前,嵌入式操作系统的构造主要有两种方法。 ( 1 ) 专门针对嵌入式环境所开发的操作系统,如风河公司的v x w o r k s ,系统本身附 带专用的开发系统套件,如有专门的文件系统,定制的独立图形界面开发环境等。 ( 2 ) 根据现有的操作系统专门定制的系统,如现在发展很快的嵌入式l i n u x 系统, 它拥有很多优点,比如系统开源,有许多现成的软件可以利用,进行对应平台的移植工 作就可以应用到新的嵌入式系统中去。 目前,整个嵌入式系统的发展如图1 1 所示。 电子技术的发展 h 厂_ 1 独立开发v x w r o b l ,jl ,j h 嵌黼的h 面_ l 要翌 r - 一 主 嵌入式系统中的存储介质与普通的p c 有所不同,一般不使用硬盘,大多采用f l a s h ( 闪存) 来存储数据,所以其文件系统有自身的特点。 i c 技术的发展和半导体成本的日益下降,使f l a s h 存储器在嵌入式领域中的应用日 益广泛,到目前为止,在嵌入式设备中使用闪存的基本方法多是在其上虚拟文件系统, 模拟一个标准的块设备并且提供磨损平衡,然后在其上使用一个通用的文件系统。这种 方法存在着一定的缺点,迫切需要提供一种直接建立在硬件层次上的文件系统。 j f f s 2 文件系统存储策略的研究与实现 j f f s 2 是一个日志结构的文件系统。它最初由瑞典的a x i s 公司【2 】设计,主要是针对 嵌入式系统中的f l a s h 应用。这种文件系统考虑了f l a s h 设备的局限性并直接在f l a s h 芯 片上进行操作,大大提高了性能,而后又转交给r e d h a t 公司继续进行开发,它也是论 文主要的研究对象。 1 2 嵌入式文件系统的要求 磁盘文件系统是建立在物理存储器上的。嵌入式设备中使用的存储器一般不是p c 机上的硬盘,取而代之的是像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 芯片特性的双重考 虑,嵌入式平台对文件系统提出了如下的要求1 2 1 。 ( 1 ) 崩溃恢复( c r a s h r e c o v e r y ) :嵌入式系统的运行环境一般比较恶劣,但同时又要求 较高的可靠性,这就对f l a s h 文件系统提出了较高的要求,无论程序崩溃或系统掉电, 都不能影响文件系统的一致性和完整性。文件系统的写入、垃圾回收等操作对系统异常 中断都非常敏感,极易造成数据丢失和数据垃圾,因此在文件系统设计和选用时应多加 考虑,在j f f s 2 文件系统中采用了日志式的结构设计,如果出现程序崩溃或是系统掉电, 只要查看日志,即可恢复系统。 ( 2 ) 耗损平衡( w e a r 1 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 的使用寿命,而且j f f s 2 采用了日志式的文件系统的结构设计, 磨损平衡问题就更显得格外重要1 3 】。 ( 3 ) 垃圾回收( g a r b a g e - c o l l e c t i o n ) :任何存储器在被分配,使用过一段时间后,都会 出现空闲区和文件碎片,可能导致系统空间不够用,这就需要进行垃圾回收操作,以保 证存储空间的高效使用。通常f l a s h 擦除操作是以块为单位的,垃圾回收也应以块为单 位,回收时,首先重写块的全部数据,然后再擦除整个块,在j f f s 2 文件系统中采用了 建立内核线程的方法。 ( 4 ) 高效的空间管理机制:目前在应用领域中的f l a s h 都相对较小,就要求空间使 用更加细致,j f f s 2 采用了不同于一般磁盘文件系统的设计思想,文件系统挂载时才在 内存中建立相应的节点。当然这样也就存在着内存空间浪费的问题。 以上提出的四点是嵌入式文件系统的关键技术,直接决定着文件系统的性能,在 j f f s 2 文件系统的设计中有重要的理论指导意义。 大连理一l :大学硕十学位论文 1 3 嵌入式文件系统的发展概况 操作系统在嵌入式领域中的应用是近年来的热点问题,文件系统作为操作系统的一 个重要组成部分,其自身也有了一定的发展。文件系统在嵌入式领域中的应用,主要有 两种不同的方式: ( 1 ) 把f l a s h 虚拟成一个标准的每个扇区为5 1 2 字节的块设备,然后在这个虚拟设 备上使用标准的文件系统。实现它最简单的方法是使用1 :1 的从虚拟块设备到f l a s h 芯片的映像,操作时读取整个擦除块,修改缓冲区相应的部分,擦除后重写整个块【3 】, 但是这种方法没有提供磨损平衡,这非常不安全,因为有潜在的掉电可能,如果掉电发 生在擦除和接下来的数据重写之前,那么将引起数据的不完整性。但在只读操作的产品 模式中这是可接受的。l i n u x 的m t d b l o c k 驱动提供了一个功能,通过收集到一个擦除块 的写操作,仅当要写另一个不同的擦除块时才进行擦除、修改和回写的过程,避免了过 多的多余数据擦除次数。 ( 2 ) 使用f l a s h 的一种更有效的方法是使用一个专门为这样的设备而设计的文件系 统,中间没有多余的转换层,这样可大大提高性能。下面介绍几种文件系统。 t f s ( t i n y f i l e s y s t e m ) :一种典型的线性文件系统,它是由原l u c e n t 公司开发的 嵌入式系统引导平台u m o n 的一部分。t f s 由多个连续存放的文件块组成,一个文件块 包含一个文件的所有信息。同时,t f s 还提供了掉电安全恢复机制。缺点是文件的插入, 修改,剪切等操作需要较大的运行开销,即使是很小的修改,也要求将整个文件重写。 t u r e f f sf o rt o m a d o :w i n dr i v e r 公司的t o r n a d o 开发环境的一部分,用于仿真 硬盘驱动,n f s 文件系统可在其上实现。它能均匀的使用f l a s h ,用冗余数据结构保存 可靠的数据结构,排除磨损块以避免错误,实现了f t l 标准。 t r a n s a c t i o nf f s :由挪威的t e m p r o 提供的安全文件系统,建立在f d c 之上,f d c 是另一种产品,用于仿真硬盘,位于f a l 之下。应用程序通过f a l 访问文件系统。它 使用了事务记录方案,记录修改f d c 块的文件操作。通过使用事务记录,系统启动时 不用整体扫描,节省启动时间。 以上属于商业的文件系统产品,源码不公开,存在一定局限性。 j f f 2 :由a x i sc o m m u n i c a t i o n sa b 公司于1 9 9 9 年在g n u l i n u x 上发行的一个文 件系统。后来经过r e d h a t 公司的发展,现在已经发行了第二个版本j f f s 2 ,它的全部 代码都是开发的,适合研究,本文也是在j f f s 2 的基础上进行一些工作。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 在硬件和上层之间提供 一个抽象的接口。m t d 可以理解为f l a s h 的设备驱动程序,它主要向上提供两个接口, m t d 字符设备和m t d 块设备。通过这两个接口,就可以像读写普通文件一样对f l a s h j f f s 2 文件系统存储策略的研究与实现 设备进行读写操作。经过简单的配置,m t d 在系统启动以后可以自动识别支持c f i 或 j e d e c 接口的f l a s h 芯片,并自动采用适当的命令参数对f l a s h 进行读写或擦除【4 1 。而 对上层而言,j f f s 2 也遵循l i n u x 文件系统的v f s 层次结构。 1 4 论文的主要工作 对l i n u x 操作系统的原理进行了深入的研究,尤其是文件系统模块。查阅了许多参 考文献,并阅读了文件系统接口部分的源代码。对j f f s 2 文件系统源代码进行了阅读, 熟悉其整体的运行机制,对文件系统加载过程进行了深入的研究,并给出了改进方案。 改进的策略是在卸载的过程中将整个系统中的重要数据结构都存储在f l a s h 上,然后在 文件系统的挂载过程中再将它从f l a s h 中直接读入到内存。因此,构建整个文件系统的 过程将变得相对简单。为了实现这一目的,改进的策略主要体现在下述3 个方面的工作。 ( 1 ) 首先,需要在文件系统挂载时能够找到存储下来的索引信息。而这一位置应该 是一个固定位置,选取第一个擦除块,将它保留下来存储索引信息,系统将它做为默认 位置,每次通过它就能够找到先前存储在f l a s h 上的重要信息。为此,重新设计一种节 点类型,在其中保存索引信息。 ( 2 ) 其次,方案的目的是将一些有用的信息和可能重复的信息存储在f l a s h 上,在 内存中构建的各种数据结构从作用上讲可分为两类,一类是维护整个文件系统有效的运 行而需要的结构,另一类是在打开文件时为了维护和管理特定的文件而建立的结构。显 然,只需要保存第一类数据结构,存储的信息包括各个文件i n o d e 节点信息,擦除块信 息,原节点信息,擦除块链接信息。这些信息可以分为两类,整数型信息和地址型信息, 显然整数型信息直接保存即可,而地址型信息不可能保存,必须重新分配,所以为了重 建各种数据结构在内存中的关系,除了数据结构的原始信息外,还需要保存i n o d e 的节 点号。 ( 3 ) 最后,就是考虑在文件系统非正常卸载时的特殊情况,当这种情况发生时,需 要系统能够判断出此时存储的信息并不是上一次的信息,为了进行这种判断,在新建立 的节点类型中设定了一个判断成员,为0 和为1 时分别表示挂载时建立的节点和卸载时 建立的节点。这样如果正常卸载,那么在第一个块中,能够找到的最后一个节点必然是 一个卸载节点,如果卸载过程不正常,那么最后一个节点为挂载节点,这样就可以判断 出上一次的卸载是否正常,如果上一次的不正常,则重新按照原来的挂载过程进行处理。 论文最后对实验测试数据的结果进行了分析,并在此基础之上,对今后的课题方向 进行了展望。 大连理一r 大学硕七学位论文 2l i n u x 文件系统接口 j f f s 2 是作为一种独立的文件系统在l i n u x 系统下开发的,自从1 9 9 2 年t a n u x 问世 以来,它就以其卓越的性能和独特的开源特性而飞速发展,嵌入式l i n u x 是近几年l i n u x 新的研究领域。其基本原理是根据不同的硬件和应用需求来裁剪内核,来实现满足特定 要求的操作系统版本。虽然在l i n u x 最初的设计中已经致力于满足不同平台的需要,但 其在文件系统模块设计中对f l a s h 的支持还远远不足以满足实际中的需要。在l i n u x 系 统下,如果系统是只读的【”,则可以将它设计为只读的c r a r n f s 文件系统,根文件系统主 要采用这种设计。文件在系统运行过程中需要修改时,就需要一种能够完成读写操作的 文件系统,原有操作系统都不是针对f l a s h 而设计的,存在一定的局限性,正是在这种 情形下,开发了j f f s 2 文件系统。 文件是数据的集合,一个文件系统不仅要包含每个文件内部的数据信息,而且要包 含在硬件设备上管理这些文件所需要的额外管理信息,更重要的是文件系统要保持数据 的完整性,因为整个操作系统的完整性正是建立在这一基础上的。 在l i n u x 系统中,除了默认的文件系统e x t 2 以外,还存在很多种其他的文件系统, 比如v f a t ,本文要讨论的j f f s 2 等。显然,无论是系统内部的相关调用,还是外部应 用程序所使用的系统调用,都不可能逐一去编写单独的接口,这就要求l i n u x 提供统一 的文件系统接口。在t a n u x 系统中,这种统一的接口是由v f s 层次提供的。 其次与其他文件系统有所不同的地方就是,在文件系统与设备驱动之间添加了 m t d 这一层次来使f l a s h 驱动的设计更加简单。 2 1 嵌入式l i n u x 系统 嵌入式操作系统的发展已经有一定的历史,有很多各种各样的产品,目前一些著名 的嵌入式操作系统包括v x w o r k s 、p a l mo s 、w i n d o w sc e 、p s o s 和q n s 等,但是,这 些操作系统均属于商业化产品,价格昂贵且由于源代码不公开导致了对设备支持和应用 程序代码移植等一系列问题。 l i n u x 作为一种开源的操作系统,近几年来在操作系统领域取得了很大的突破。源 代码开放的l i n u x 为嵌入式产品开发商提供了灵活的选择,因为不需要担负运行时的版 税,而且还可以自由的对其进行修改以适应自己的需要。l i n u x 是一种类u n i x 操作系统, 由u n i x 发展而来,它的设计理念借鉴了很多u n i x 的思想。它拥有内存管理与保护,支 持多进程和多线程处理,对网络功能提供很好的支持,具有很强的可移植性和可扩展性, 目前已实现了对大多数主流平台的支持。 j f f s 2 文件系统存储策略的研究与实现 l i n u x 正在嵌入式开发领域稳步发展。l i n u x 使用g p l ,所有对特定开发板,p d a , 掌上机,可携带设备等使用嵌入式l i n u x 感兴趣的人都可以从因特网上免费下载其内核 和应用程序,并开始移植和开发。许多l i n u x 改良品种迎合了嵌入式市场,它们包括实 时的r t l i n u x ,用于非m m u 设各的u c l i n u x ,用于a r m ,m i p s ,p p c 的l i n u x 分发版 m o n t a v i s t al i n u x ,a r m 上的l i n u xa r m l i n u x 和其它l i n u x 系统。嵌入式l i n u x 的发 展比较迅速。n e c 、索尼已经在销售个人视频录像机等基于l i n u x 的消费类电子产品, 摩托罗拉则计划在其未来的大多数手机上使用l i n u x ,m m 也制定了在手持机上运行 l i n u x 的计划。 虽然大多数l i n u x 系统运行在p c 平台上,但l i n u x 也是嵌入式系统的可靠主力。l i n u x 的安装和管理比u n i x 更加简单灵活,这对于那些u n i x 专家们来说又是一个优点,因为 l i n u x 中有许多命令和编程接口同传统的u n i x 一样。但是对于习惯于w i n d o w s 操作系 统的人来说,需要记忆大量的命令行参数却是一个缺点。随着l i n u x 社团的不断努力, l i n u x 的人机界面开发环境正在不断完善。 典型的l i n u x 系统经过打包,在拥有硬盘和大容量内存的p c 机上运行,嵌入式系统 不需要这么高的配置。一个功能完备的l i n u x 内核要求大约1 m b 内存。而l i n u x 微内核只 占用其中很小一部分内存,包括虚拟内存和所有核心的操作系统功能在内,只需占用系 统约1 0 0k 内存。只要有5 0 0k 的内存,一个有网络栈和基本实用程序完全的l i n u x 系统 就可以在一台8 位总线( s x ) 的i n t e l3 8 6 微处理器上运行的很好了。由于内存要求常常是需 要的应用所决定的,比如w e b 服务器或者s n m p 代理,l i n u x 系统甚至可以仅使用2 5 6k b r o m 和5 1 2k br a m 进行工作。因此它是一个瞄准嵌入式市场的轻量级操作系统。与传 统的实时操作系统相比( r t o s ) ,采用像嵌入式l i n u x 这样的开放源码的操作系统的另外 一个好处是l i n u x 开发团体看来会比r t o s 的供应商更快地支持新的i p 协议和其它协议。 例如,用于l i n u x 的设备驱动程序要比用于商业操作系统的设备驱动程序多,如网络接 口卡( n i c ) - 驱动程序,串口驱动程序。核, 6 , l i n u x 操作系统本身的微内核体系结构相当简 单。网络和文件系统以模块形式置于微内核的上层。驱动程序和其它部件可在运行时作 为可加载模块编译到或者是添加到内核。这为构造定制的可嵌入系统提供了高度模块化 的构件方法。而在典型情况下该系统需结合定制的驱动程序和应用程序以提供附加功 能。 嵌入式系统也常常要求通用的功能,为了避免重复劳动,这些功能的实现运用了许 多现成的程序和驱动程序,它们可以用于公共外设和应用。l i n u x 可以在外设范围广泛 的多数微处理器上运行,并早已经有了现成的应用库。 大连理j :大学硕十学位论文 l i n u x 用于嵌入式的因特网设备也是很合适的,原因是它支持多处理器系统,该特 性使l i n u x 具有了伸缩性。因而设计人员可以选择在双处理器系统上运行实时应用,提 高整体的处理能力。例如,您可以在一个处理器运行g u i ,同时在另一个处理器上运行 l i n u x 系统。在嵌入式系统上运行l i n u x 的一个缺点是l i n u x 体系提供实时性能需要添加 实时软件模块。而这些模块运行的内核空间正是操作系统实现调度策略,硬件中断异常 和执行程序的部分。由于这些实时软件模块是在内核空间运行的,因此代码错误可能会 破坏操作系统从而影响整个系统的可靠性,这对于实时应用将是一个非常严重的弱点。 目前已经有许多嵌入式l i n u x 系统的示例,可以有把握地说,某种形式的l i n u x 能在几乎 任一台执行代码的计算机上运行。 2 2 虚拟文件系统 l i n u x 最初采用的是m i n i x 文件系统,但是它只是一种实验性,用于教学的文件系 统,其文件系统的大小仅限于6 4 m 字节,文件名长度限于1 4 个字符,后来又开发出了 专门为l i n u x 所设计的e x t 2 文件系统,它可以说是l i n u x 文件系统。 除了这两种文件系统外,如何使l i n u x 能够支持各种不同的文件系统从一开始就受 到了设计人员的特别关注。为了实现这将各种不同的操作系统纳入到统一的一个框架中 进行操作和管理,让内核中的文件系统界面成为一条文件系统总线,使得用户程序可以 通过同一文件系统操作界面,也就是同一组系统调用,对各种不同的文件系统的文件进 行操作。如果这样,就可以对用户程序隐藏各种不同文件系统具体的实现细节,为用户 程序提供一个统一的,抽象的,虚拟的文件系统界面,这就引出了所谓的虚拟文件系统 ( v f s ) 技术。这个抽象的界面主要由一组标准的,抽象的文件操作构成,以系统调用的 形式提供于用户程序,如r e a d 0 ,w r i t e 0 ,l s e e k 0 等等。这样,用户程序就可以把所有的 文件看作一致的,抽象的v f s 文件,通过这些系统调用对文件进行操作,而无需关心 具体的文件属于什么文件系统以及具体的文件系统的设计和实现。例如,在l i n u x 操作 系统中,可以将d o s 格式的磁盘或分区安装到系统中,然后用户程序就可以按完全相 同的方式访问这些文件,就好象它们也是e x t 2 格式的文件一样p j 。 不同的文件系统通过不同的程序来实现其各种功能,但是与v f s 之间的界面是有 明确定义的。这个界面的主体就是一个f i l e 数据结构。它描述了每个文件系_operations 统可能支持的各种操作,比如文件的读写等。 木 4 n o t e : + r e a d ,w r i t e ,p o l l ,f s y n c ,r e a d v ,w r i t e vc a nb ec a l l e d j f f s 2 文件系统存储策略的研究与实现 。 w i t h o u tt h eb i gk e r n e l1 0 c kh e l dma l lf i l e s y s t e m s s t r u c tf i l e _ o p e r a t i o n s s t r u c tm o d u l e 。o w n e r ; l o f up l l s e e k ) ( s t r u c tf i l e4 ,1 0 f f _ t ,i n t ) ; s s i z e t ( 4 r e a d ) ( s t n l c tf i l e ,c h a r ,s i z e _ t ,l o f f _ t + ) ; s s i z e _ t ( * w r i t e ) ( s t r u c tf i l e ,c o n s tc h a r + ,s i z et ,l o f f _ t 。) ; i n t ( + r e a d d i r ) ( s t r u c tf i l e + ,v o i d ,f i l l d i r _ t ) ; u n s i g n e di n t ( 4 p o l l ) ( s t r c tf i l e ,s t r e e tp o l l _ _ t a b l e _ s t r u c t8 ) ; i n t ( i o c t o ( s t m c ti n o d e ,s t r u c tf i l e + ,u n s i g n e di n t ,u n s i g n e dl o n 曲; i n t ( m m a p ) ( s t r u c tf i l e ,s t r u c tv m a r e a s t r u c t + ) ; i n t ( 4 0 p e n ) ( s t r u c ti n o d e ,s t r u c tf i l e4 ) ; i n t ( + f l u s h ) ( s t r u c tf i l e ) ; i n t ( 4 r e l e a s e ) ( s t r u c ti n o d e ,s t m c tf i l e 。) ; i n t ( + f s y n c ) ( s t r u c tf i l e4 ,s t r e e td c n t r y ,i n td a t a s y n c ) ; i n t ( + f a s y n c ) ( i n t ,s t r u c tf i l e ,i n 0 ; i n tp l o c k ) ( s t r u c tf i l e + ,i n t ,s t r e e tf i l e _ l o c k ) ; s s i z c _ t ( + r e a d v ) ( s t r u c tf i l e ,c o n s ts t r e e ti o v e c ,u n s i g n e dl o n g , l o f f _ t4 ) ; s s i z e _ _ t ( w r i t e v ) ( s t r e e tf i l e + ,c o n s ts t r e e ti o v e c ,u n s i g n e dl o n g ,1 0 f f _ t8 ) ; s s i z e _ t ( 4 s e n a g e ) ( s t r u c tf i l e + ,s t r e e tp a g e + ,i n t ,s i z e _ t ,l o f f _ t + ,i n o ; u n s i g n e dl o n gp g e t _ u n m a p p e d _ a r e a ) ( s t m c tf i l e + ,u n s i g n e dl o n g , u n s i g n e dl o n g , u n s i g n e dl o n g ,u n s i g n e dl o n g ) ; ) ; 每种文件系统都有自己的f i l e _ o p e r a t i o n s 数据结构,结构中的成分几乎全是函数指 针,所以实际上是个函数跳转表,里面包含文件系统常见的操作,例如r e a d 指向具体文 件系统中用来实现读文件操作的入口函数。但并不是每种文件系统都支持所有的操作, 如果具体的文件系统不支持某种操作,其f i l eo p e r a t i o n s 结构中的相应函数指针就是 n u l l 。 每个进程通过打开文件( o p e n ) 与具体的文件建立连接,或者说建立起一个读写的上 下文。这种连接以一个f i l e 数据结构作为代表,结构中有个f i l e _ o p e r a t i o n s 结构指针fo p 。 将f i l e 结构中的指针fo p 设置成指向某个具体的f i l e _ o p e r a t i o n s 结构,就指定了这个文 件所属的文件系统,并且与具体文件系统所提供的一组函数挂上了钩,实现了文件系统 的接口。以后当用户通过系统调用o p e n 打开指定的文件时,就能通过这些联系调用到 具体的文件系统。 大连理i :大学硕七学位论文 总体上讲,v f s 层屏蔽了具体文件系统的操作,l i n u x 内核中对v f s 与具体文件系 统的关系划分如图2 1 所示。 图2 1 虚拟文件系统结构 f i g 2 1t h es t r u c t u r eo ft h ev f s 进程和文件的连接,即打开的文件属于进程,它归具体的进程所有,代表这种连接 的f i l e 结构必然与代表着进程的t a s k _ s t r u c t 数据结构存在着联系。在进程数据结构 t a s ks t r u c t 结构中与此有关的几行定义列出如下。 s t r u c tt a s k _ s t r u c t s t r c u tf s _ s t r u c t f s : s t r u c tf i l e s _ s t r u c t f i l e s ; ) ; 这里有两个指针f s 和f i l e s ,一个指向f ss t r u c t 数据结构,是关于文件系统的信息。 另一个指向f i l e ss t r u c t 数据结构,是关于已打开文件的。 前面提到虚拟文件系统v f s 与具体文件系统之间的主体是f i l eo p e r a t i o n s 数据结 构,是因为除此之外还有一些其他的数据结构。其中主要的还有与目录项相联系的 d e n t r y _ o p e r a t i o n s 数据结构和与索引节点相联系的i n o d e _ o p e r a t i o n s 数据结构。这两个数 据结构中的内容也都是一些函数指针,但是这些函数大多数只是在打开文件的过程中使 用,或者仅在文件操作的底层使用,应用的并不频繁,这里不做进一步分析。 j f f s 2 文件系统存储策略的研究与实现 总之,具体文件系统与虚拟文件系统v f s 间的界面是一组数据结构,包括 f i l e _ o p e r a t i o n s ,d e n t r y _ o p e r a t i o n s ,i n o d e _ o p e r a t i o n s 等,它们将具体的文件系统与用户 接口分开,使应用程序层次的用户不必关心具体文件系统的实现细节。整个文件系统的 结构如图2 2 所示。 d e n t r y 图2 2 文件系统的内部组织 f i g 2 2t h ei n n e ro r g a n i z a t i o no ft h ef i l e s y s t e m 那么,l i n u x 所支持的具体文件系统信息在数据结构的一个u n i n o 中定义,在结构 i n o d e 中有一个成分u ,它是一个联合体,在实际系统中,根据具体文件系统的不同,可 以将它解释成不同的数据结构。例如,当i n o d e 所代表的文件是个插i e l ( s o c k e t ) 时,n 就 定义为s o c k e t 数据结构,当i n o d e 所代表的文件属于e x t 2 文件系统时,n 就用做e x t 2 文件系统的详细描述结构e x t 2 _ i n o d e _ i n f o 。所以,看一下这个u n i o n 的定义就可以知道 l i n u x 目前支持多少种文件系统,这个定义是i n o d e 数据结构定义的一部分,在文件 i n c l u d e 1 i n u x f s h 中定义。这个定义表示了目前操作系统内核所支持的文件系统类型。 u n i o n s t n l c tm i n i xi n o d e _ i n f o m i n i x _ i ; s t r u c te x t 2 _ i n o d e _ i n f o e x t 2 _ i ; s t r u c tn t f s i ;_ i n o d e _ i n f o n t f s 大连理 大学硕士学位论文 s t r u c tm s d o si n o d e _ i n f o m s d o s _ i ; s t r u c tn f s _ i n o d ci n f o n f s _ i ; s t r u c tn c p _ i n o d c _ i n f o n c p f s _ i ; s t r u c tp r o c _ i n o d e _ i n f o p r o ci ; s t r u c ts o c k e t s o c k e t _ i ; s t r u c tu s b d e v _ i n o d c _ _ i n f o u s b d e v _ i ; s t r u c tj f f s 2 _ i n o d e _ i n f o j f f s 2 _ i ; v o i d 4 9 e n e r i c _ i p ; ) u ; 一个文件系统代表着在磁盘或其他介质上如何组织和管理文件,而对每个文件的操 作最后都要转换成对某一部分磁盘介质的操作,此时就要调用相应设备的驱动程序完成 具体的读写工作。例如,l i n u x 上常见的文件系统e x t 2 ,所有文件的读写操作最后都要 落实到对对应驱动程序的调用,即块

温馨提示

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

评论

0/150

提交评论