(计算机软件与理论专业论文)cmfs文件系统的设计与实现.pdf_第1页
(计算机软件与理论专业论文)cmfs文件系统的设计与实现.pdf_第2页
(计算机软件与理论专业论文)cmfs文件系统的设计与实现.pdf_第3页
(计算机软件与理论专业论文)cmfs文件系统的设计与实现.pdf_第4页
(计算机软件与理论专业论文)cmfs文件系统的设计与实现.pdf_第5页
已阅读5页,还剩47页未读 继续免费阅读

(计算机软件与理论专业论文)cmfs文件系统的设计与实现.pdf.pdf 免费下载

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

文档简介

摘要 摘要 随着多媒体技术的快速发展,可以同时提供录像、画面分割、网络传输、云台镜头控制、 报警控制等多种功能的嵌入式d v r ( d i g i t a lv i d e or e c o r d e r ) ,在安防监控领域取得了广泛的应 用,逐渐代替基于p c 的d v r 已成为一种趋势。 嵌入式d v r 通常使用l i n u x 操作系统。l i n u x 支持多种文件系统,如f a t 3 2 ,e x t 2 ,j f s , r e i s e r f s 等。由于嵌入式系统独特的硬件特点使得这些文件系统在应用于嵌入式d v r 领域 时总存在某种缺陷,因此设计一个嵌入式d v r 专用的文件系统c m f s 是非常必要的。 首先分析l i n u x 的v f s ( 虚拟文件系统) 的机制,然后从硬盘存储结构、日志以及如何兼 容w i n d o w s 三个方面分析了c m f s 的设计;最后给出了测试算法;测试结果表明c m f s 可 以满足嵌入式d v r 的要求。c m f s 具有如下特点: 1 与l i n u x 的其他文件系统相比,c m f s 在超级块中增加了f a t ( 文件分配表) 、索引 节点表、索引节点位图的开始位置字段以及日志所在设备的编号等字段,为简化 c m f s 的设计打下了基础; 2 通用文件系统的数据块分配信息并没有被全部缓存,导致读取这些信息花费太多的 l o 时间;根据c m f s 的专用特点,本文采用缓存的方法来保存上述信息,并设计 了简单高效的数据块分配和寻址算法; 3 与其他具有多层目录的文件系统相比,c m f s 的目录被限定为三层,从而简化了 目录的实现机制; 4 本文在索引节点中增加了特殊字段,并实现了相对应的系统调用,供用户快速访问 文件的增强属性; 5 利用内核的日志块设备模块实现了日志,最大限度的减少数据的损失,同时保证文 件系统处于一致性状态; 6 l i n u x 下的文件系统一般通过第三方的软件才能在w i n d o w s 下使用,本文遵循d l l 规范,设计和实现了与文件操作相关的函数,使c m f s 直接兼容w i n d o w s 。 关键词:d v r ,文件系统,v f s ,日志,超级块,索引节点 东南大学硕士学位论文 a b s t r a c t w i t ht h e r a p i dd e v e l o p m e n to fm u l t i m e d i at e c h n o l o g y ,e m b e d d e dd v r ( d i g i t a lv i d e o r e c o r d e r ) c a l la l s op r o v i d ev i d e o ,s c r e e np a r t i t i o n s ,n e t w o r kt r a n s m i s s i o n ,p 1 亿c a m e r ac o n t r o l , a l a r mc o n t r o la n d h a sb e e nw i d e l yu s e di nt h et h ea r e ao fs e c u r i t ym o n i t o r 1 t sat r e n dt h a t e m b e d d e dd v r g r a d u a l l yt a k e st h ep l a c eo fp c b a s e dd v r o p e r a t i n gs y s t e mu s e db ye m b e d d e dd v ri su s u a l l yl i n u xa n dal o to fk i n d sf i l e s y s t e m sa r e s u p p o r t e db yl i n u x ,s u c ha sf 舶b 2 ,e x t 2 j f sa n dr e i s e r f s t h e r ea l w a y se x i td e f i c i e n c i e si f t h e s ef d e s y s t e m sa r eu s e db ye m b e d d e dd v rb e c a u s e o ft h eu n i q u ec h a r a c t e r i s t i e so ft h e h a r d w a r ei ne m b e d d e ds y s t e m ,s oi t sn e c e s s a r yt od e s i g naf d e s y s t e mw h i c hi sc a l l e dc m p sa n d d e d i c a t e db ye m b e d d e dd v r n ew o r k i n gp r i n c i p l eo fl i n u xv f s ( v i r t u a lf i l e s y s t e m ) m e c h a n i s ma r ed i s c u s s e da tf i r s t , t h e nt h e ns t o r a g es t r u c t u r eo fh a r dd i s ka n dl o gw e r ed e s c r i b e da n dt h eu s a g eo fc m f su n d e r w i n d o w si se x p a t i a t e d c m f sh a sau n i q u es u p e rb l o c k ,i n o d et a b l e ,f f 盯( f i l ea l l o c a t i o nt a b l e ) a n dc a l lm a n a g et h ed i s ke f f i c i e n t l y ;f i n a l l yat e s ta l g o r i t h mi sg i v e na n dt h et e s tr e s u l t ss h o wt h a t t h ec m f sm e e tt h er e q u i r e m e n t so fe m b e d d e dd v r c h a s f o l l o w i n gc h a r a c t e r i s t i c s : 1 c o m p a r e dw i t ho t h e rf d e s y s t e m so fl i n u x ,s u p e rb l o c ka d d sf i e l d st h el o c a t i o no f f a t ( h i ea l l o c a t i o nt a b l e ) ,i n d e xn o d et a l b ea n db i t m a po fi n d e xn o d e ,a n dt h ed e v i c e n u m b e rw h i c hs a v e st h ej o u r n a l ,b a s e dw h i c ht h ed e s i g no fc m f sc a nb es i m p l i f i e d ; 2 g e n e r i cf d e s y s t e m sd o n tc a c h ea l li n f o r m a t i o no fd a t ab l o c kd i s t r i b u t i o n ,s oi tn e e d s m o r ei ot i m ew h e na c c e s s i n gt h e s ei n f o r m a t i o n ;a c c o r d i n gt ot h es p e c i a lc h a r a c t e r i s t i c s o fc m f s t h em e t h o do f c a c h ei se m p l o y e dt os a v et h ea b o v ei n f o r m a t i o ni nt h i sp a p e r , a n dt h e r ea r es i m p l ea n de f f i c i e n ta l g o r i t h m so fd i s t r i b u t i n ga n da d d r e s s i n gd a t ab l o c k s ; 3 w i t ho t h e rf i l e s y s t e m sw h i c hh a v em u l t i - l a y e r sd i r e c t o r y , t h ed i r e c t o r yo fc m f si s l i m i t e dt ot h r e el a y e r s ,w h i c hs i m p l i f i e st h ei m p l e m e n t a t i o nm e c h a n i s mo ft h ed i r e c t o r y ; 4 as p e c i a lf i e l di sa d d e dt oi n d e xn o d ea n da n dt h ec o r r e s p o n d i n gs y s t e mc a l l sa r e i m p l e m e n t e d ,w h i c hc a nb ec a l l e db yu s e rt o a c c e s st h ee x t e n d e da t t r i b u t e so ff d e q u i c k l y 5 j o u r n a li si m p l e m e n t e db yu s i n gag e n e r a lk e r n e l l a y e rn a m e dj o u m a l i n gb l o c k d e v i c e ,s oi tc a l lm i n i m i z et h el o s so fd a t aa n de n s u r ec o n s i s t e n c yo ff i l e s y s t e m ; 6 w h e nu s e di nw i n d o w s , f i l e s y s t e m ss u p p o r t e db yl i n u xn e e dt h i r d - p a r t ys o f t w a r e g e n e r i c a l l y ;f u n c t i o n sa s s o c i a t e dw i t ho p e r a t i o n so ff i l ea r ed e s i g n e da n di m p l e m e n t e d a c c o r d i n gt on o r m s o fd l l , s oc m f sc a nb ec o m p a t i b l ew i t hw i n d o w sd i r e c t l y k e y w o r d s :d v r ,f i l e s y s t e m ,v f s ,j o u r n a l ,s u p e rb l o c k ,i n d e xn o d e 1 1 东南大学学位论文独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得 , 的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含 其他人已经发表或撰写过的研究成果,也不包含为获得东南大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示了谢意。 东南大学学位论文使用授权声明 东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交学位 论文的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人 电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文外,允许论 文被查阅和借阅,可以公布( 包括刊登) 论文的全部或部分内容。论文的公布( 包 括刊登) 授权东南大学研究生院办理。 研究生签名:雠导师签名: 蜿日期:塑呈:墨! 第一章绪论 1 1d v r 简介 第一章绪论 d v r 是数字硬盘录像机( d i g i t a lv i d e or e c o r d e r ) 的简称,是一套进行视频和音频存储 处理的计算机系统。d v r 将录像机、画面分割器、云台镜头控制、报警控制、网络传输等 五种功能集于一身,是模拟监控系统的替代产品【l j 。 d v r 的发展经历了两个主要阶段:p c 式d v r 和嵌入式d v r 。p c 式d v r 是以工控 机或商用p c 机为应用平台,在其中插入一片或几片视频卡,利用软件进行影像压缩并执行 影像编辑的监控系统。而嵌入式d v r 是基于专业芯片的图像处理技术与实时操作系统技术 而形成的一种满足特定功能的嵌入式系矧2 1 。 硬件方面,嵌入式d v r 根据特定的需求定制一块或者两块主板,采用嵌入式处理器, 经过产家在技术上的整合,其配置要比p c 机的要低,而性能却并不逊色于p c 机;软件方 面,嵌入式d v r 使用特定的操纵系统,结合其硬件特点进行裁减,是直接对硬件进行调用。 加快了反应时间,提高了运行速度,减少了很多不必要的额外功能运行。由于嵌入式d v r 在稳定性、可靠性、易用性等方面有“专业化”的优势,在安防领域,有逐渐取代p c 式 d v r 的趋势。 嵌入式d v r 所涉及的核心技术包括:音视频编解码技术、操作系统支持、海量、高可 靠本地存储、网络通信等。 嵌入式d v r 目前的应用,不仅仅局限于安防领域,已经应用在所有与视频有关联的系 统中,包括视频会议、视频点播、数字电视、卫星视频系统等等,d v r 的广泛应用也说明 了视频技术在不断地发展。视频技术的发展必将推动安防视频行业再次革命。 1 2 研究背景 由前一小节可知,海量、高可靠本地存储技术是嵌入式d v r 的核心技术之一。嵌入式 d v r 以硬盘为存储介质,现在的硬盘动辄上百g ,那么使用一个高效的文件系统来管理硬 盘就是一项非常关键的任务。 嵌入式d v r 通常每天工作十几个小时甚至全天候工作,对文件系统有着特殊的要求: 1 对嵌入式d v r 的内存容量较小,一般采用3 2 m 或者6 4 m 的s d r a m ;主控c p u 的 处理能力也非常有限;这要求文件系统在处理多任务时必须占用较少的资源; 2 现有的嵌入式d v r 可支持的通道数多达1 6 个,且经过编码后的视频数据仍然较大, 这对实时性有较高的要求: 3 录像产生的文件平均大小较大,要求文件系统可以处理大文件: 4 嵌入式d v r 的工作环境通常没有保证,如经常断电,这要求文件有较高的健壮性 和一致性,尽量减少数据的损失; 5 d v r 通常要以时间和通道为关键值快速检索满足要求的文件; 6 当硬盘写满时根据一定的策略删除文件: 7 文件通常根据时间产生,当前时刻最多生成n ( 通道数) 个文件。 d v r 一般使用l i n u x 操作系统,l i n u x 可以使用的文件系统有f a t 3 2 、e x t 2 、j f s 、r e i s e f f s 等。这些通用文件系统设计时综合了各方面的因素,通常不适合用于嵌入式d v r ,以f a t 3 2 为例,有以下原因: 东南大学硕十学位论文 1 f a t 3 2 支持的文件大小上限为2 g b ,对长时间录像产生的大数据包( 几g 到数十 g 的数据) 无法管理,一般采取分包的策略,如以2 0 0 m 或者一个小时为单位进 行分包,容易产生包与包之间丢帧现象p 1 : 2 f a t 3 2 对截断文件的操作支持不够,当硬盘写满时需要根据一定的策略删除整个 文件,老的文件和新文件大小不同,会产生大量的文件碎片,降低硬盘的读写速 度; 3 f a t 3 2 使用文件分配表来记录分配给文件的逻辑块号,一旦文件分配表损坏,文 件系统将处于不一致状态,造成数据的损失; 4 根据指定的关键值检索文件时,f a t 3 2 需要访问文件的内容,从而降低检索性能。 其他通用的文件系统也总是因为设计时优化了某方面的性能,总体上并不能完全达到 嵌入式d v r 的要求。因此设计一个针对嵌入式d v r 的专用文件系统是非常必要的。 在此前提下,本文将设计一个满足嵌入式d v r 要求的专用l i n u x 文件系统,称之为 c m f s ( c o n t i n u em e d i af i l e s y s t e m ) 。 1 3研究内容 针对通用文件系统在嵌入d v r 领域的不足,本文主要从如下几个方面来研究和设计 c m f s : 1 超级块超级块主要用来记录文件系统的存储结构;存储结构的设计关系着文件系 统的物理布局,同时也是文件系统各种操作的对象,设计的是否合理直接影响文 件系统的性能;c m f s 的存储结构将从超级块、f a t 、索引节点位图以及索引节点 表四个方面来设计;超级块必须记录文件系统的全局信息,挂载文件系统时内核 从主要这里获取信息; 2 f a t ( 文件分配表) 嵌入式d v r 对文件系统的实时性有一定要求,因此必须快速 分配和寻址数据块:c m f s 的数据块分配信息记录在f a t 中,如何基于f a t 实现 简单高效的数据块分配和寻址算法是本文的研究内容之一; 3 索引节点表文件和目录在文件系统内部表现为索引节点;嵌入式d v r 对文件系 统的检索性能要求较高,如何简化目录的实现机制并提供快速访问文件增强属性 的方法是本文的难点; 4 日志内核的j b d 模块是个复杂的软件层,如何利用其提供的接口函数是实现日 志的关键所在; 5 兼容w i n d o w s 嵌入式d v r 的硬盘有可能会取出来在p c 机上使用,而p c 机多数 使用w i n d o w s 操作系统,因此必须解决c m f s 如何与w i n d o w s 兼容的问题; 6 文件系统测试迄今还没有测试嵌入式d v r 专用文件系统的标准工具,本文根据 嵌入式d v r 的特点设计一个测试程序比较c m f s 与其他l i n u x 日志文件系统的性 能,证明c m f s 其满足d v r 的要求。 1 4论文的组织与结构 在分析嵌入式d v r 对文件系统要求的前提下,本文设计并实现了个l i n u x 文件系统, 并给出了其在w i n d o w s 下工作的方案,各章节的内容如下: 第一章介绍嵌入式d v r 的特点以及设计专用文件系统的必要性,给出了本文的研究内 容以及组织结构; 2 第一章绪论 第二章从超级块、索引节点、目录项、文件四个方面介绍l i n u xv f s ( 虚拟文件系统) 的工作原理,并给出了向内核注册文件系统类型的方法以及v f s 与实际文件系统交互的过 程; 第三章从磁盘超级块对象、f a t 、磁盘索引节点对象三个方面介绍了文件系统的存储 结构,并给出了每个对象的关键操作的实现流程:最后介绍了格式化分区工具的工作原理: 第四章介绍c m f s 与j b d 交互的主要数据结构和函数,并给出了c m f s 的日志工作 步骤以及从日志回复的流程; 第五章设计c m f s 在w i n d o w s 下工作的动态库方案:介绍主要使用的d d k 和w i n 3 2 库函数,设计与用户交互的函数和数据结构; 第六章根据嵌入式d v r 获取音视频码流特点,设计测试文件系统性能的专用工具; 利用测试工具测试c m f s 、e x t 3 、r e i s e r f s 、j f s 的读写性能并利用开源工具b o n n i e + + 选择 合适的磁盘i o 调度算法; 第七章对本文的研究工作进行总结,并对后续的研究工作进行展望。 3 东南大学硕十学位论文 第二章文件系统的分析 文件系统是操作系统在块设备上存储和检索数据的逻辑方法,这些块设备可以是本地的 磁盘驱动器,也可以是网络上使用的卷或存储区域网络上的导出共享。文件系统通常引入如 下基本概念川: 1 文件一组在逻辑上具有完整意义的信息项的系列。在操作系统中,除了普通文件, 其他诸如目录、设备、套接字等也通常被看作是文件; 2 目录目录好比一个文件夹,用来容纳相关文件。因为目录可以包含子目录,所以 目录是可以层层嵌套,形成文件路径。在l i n u x 中,目录也是以一种特殊文件被对待的, 所以用于文件的操作同样也可以用在目录上。 3 目录项在一个文件路径中,路径中的每一部分都被称为目录项:如路径 h o r n e s o u r c e h e l l o w o r l d c 中,目录,h o m e ,s o u r c e 和文件h e l l o w o r l d c 都是一 个目录项。 4 索引节点用于存储文件的元数据的一个数据结构。文件的元数据,也就是文件的 相关信息,和文件本身是两个不同的概念。它包含的是诸如文件的大小、拥有者、创建时间、 磁盘位置等和文件相关的信息。 5 超级块用于存储文件系统的控制信息的数据结构。描述文件系统的状态、文件系 统类型、大小、区块数、索引节点数等,存放于磁盘的特定扇区中。 文件系统主要支持如下操作: 1 创建和删除文件; 2 打开文件以进行读和写; 3 关闭文件; 4 创建目录; 5 列出目录的内容: 6 从目录删除文件。 2 1 l i n u x 与v f s l i n u x 是类u n i x 操作系统家族中的一个成员,2 0 世纪9 0 年代以来,l i n u x 主要被用作 服务器的操作系统,但因它的廉价、灵活性及u n i x 背景使得它很合适作更广泛的应用,尤 其在嵌入式系统领域。l i n u x 取得成功的原因之一是它能够与其他操作系统共存,能够透明 的安装其他操作系统的磁盘或者分区。 l i n u x 具有两个显著的特点,1 “一切皆是文件”,不仅普通的文件,而且目录、字符设 备、块设备、套接字等在l i n u x 中都被当作文件对待;它们虽然类型不同,但是提供同一 套操作界面;2l i n u x 支持多种文件系统,比如v f a t 、e x t 3 、n t f s 等。这要归功于虚拟 文件系统。 虚拟文件系统( v i r t u a lf i l e s y s t e m ,简称v f s ) ,是l i n u x 内核中的一个软件层, 用来处理与标准文件系统相关的所有系统调用;同时,它也提供了内核中的一个抽象功能, 允许不同的文件系统共存。系统中所有的文件系统不但依赖v f s 共存,而且也依靠v f s 协同工作。 v f s 支持三种文件系统p 】: 1 磁盘文件系统这些文件系统管理存储介质中可用的存储空间,如磁盘、f l a s h 等。这些文件系统有e x t 3 、m i n i x 、以及f a t 3 2 等: 4 第二章文件系统的分析 2 网络文件系统能使使用者访问网络上别处的文件就象在使用自己的计算机一 样。这些文件系统有n f s 、c l f s 、n c p 等; 3 特殊的文件系统用来管理内核当前的信息,如p r o c ,s y s 。 v f s 的意义在于引入了一个通用的文件模型,这个模型能够表示系统所支持的文件系统。 其在系统中的位置如图2 1 所示。 图2 1l i n u x 文件系统组件的体系结构 2 2v f s 的主要数据结构 v f s 和其他文件系统的关系有点类似于c + + 中抽象类与其子类的关系,v f s 就像一个 抽象类,而其他文件系统作为子类。v f s 对象的作用就像是一个抽象类指针,指向一个子 类的实际对象,在处理文件系统相关调用时,v f s 根据实际指向的对象调用该文件系统定 义的操作。v f s 软件层提供了实现“抽象类”的机制,主要依靠四个数据结构和一些辅助 5 东南大学硕士学位论文 的数据结构来描述“抽象类”,包括超级块、索引节点、目录项、文件以及这些结构上对应 的操作集等 6 1 。 2 2 1 超级块 超级块包括内存超级块和磁盘超级块,内存超级块由v f s 定义,磁盘超级块由实际文 件系统定义;内存超级块由s u p e r _ _ b l o c k 结构描述,存储一个已安装的文件系统的控制信 息,代表一个已安装的文件系统;该结构只存在于内存,不会写入磁盘,与之对应的是磁盘 超级块;每次一个实际的文件系统被安装时,内核会从磁盘的特定位置读取磁盘超级块来填 充内存中的超级块对象。一个安装实例和一个超级块对象唯一对应。s u p e rb l o c k 的主要 字段如表2 1 所示。 ;字段类型描述 si i s tii s l h e a d 超级块链表指针 sd e v d e vt 设备标志符 s _ b l o c k s i z e u i n t l块的大小( 以字节为单位) sd i r tu i n t修改标志 s _ m a x b y t e s u l l i n t 2 文件的最人长度 s - t y p ef i l e s y s t e m _ t y p e 车 文件系统类型指针 s _ o p s u p e ro p e r a t i o n s 木 超级块操作集 s _ f l a g s u i n t安装标志 sm a g i cu i n tm a g i c 标志 sr o o t d e n t r y 掌 根目录的目录项对象指针 sl o c k s e m a p h o r e 超级块信号量 s _ n e e d s y n c _ f s i n t文件同步标志 si n o d e sli s t _ h e a d索引节点链表 sd i ml i s th e a d 脏索引节点链表 sl o l i s th e a d等待写入磁盘的索引节点链表 sf i l e sf i s th e a d文件对象链表 sb d e v b l o c k _ d e v i c e 块设备驱动程序指针 si d c h a r 】 设备名 sf si n f sv o i d * 特定文件系统超级块信息指针 s _ p r e a l l o c _ b l o c k s u 8预分配的块数 1u i n t 代表u n s i g n e dl o n g 类型;2u l l 代表i n tu n s i g n e dl o n gl o n g 类型 其中字段s _ t y p e 记录超级块对应文件系统类型( 详见本章“注册文件系统”一节) ; 字段s _ f s i n f o 指向包含特定文件系统磁盘超级块信息的结构;与超级块相关联的方法就是 超级块操作,由s u p e ro p e r a t i o n s 来描述,记录在so p s 字段中,so p 由s _ _ t y p e 指 向文件系统类型的g e t函数赋值。_sb s u p e r _ _ o p e r a t i o n s 的所有字段皆为函数指针,对应的函数由实际文件系统实现;该结 构的对象实际为一个函数指针列表,当用户通过系统调用接口调用文件系统相关的操作时, v f s 通过该列表中的函数指针实现对超级块操作的实际调用;s u p e ro p e r a t i o n s 主要字 段如表2 2 所示。 6 第二章文件系统的分析 表2 2s u p e r _ o p e r a t i o n s 的主要字段 返回值类型名字参数列表 s t r u c ti n o d e 术 a l l o c _ i n o d e s t r u c ts u p e rb l o c k 车s b v o i d d e s t r o y i n o d e s t r u c ti n o d e 车 v o i d r e a d _ in o d e s t r u c ti n o d e 木 v o i d d ir t y _ i n o d es t r u c ti n o d e 车 i n t w r i t e in o d e s t r u c ti n o d e 木,i n t v o i d p u t _ in o d e s t r u c ti n o d e 木 v o i d d r o p i n o d e s t r u c ti n o d e 宰 v o i d p u t _ s u p e r s t r u c ti n o d e 木 v o i d w r i t e _ s up e r s t r u c ts u p e rb l o c k 木 i n t s y n c _ f s s t r u c ts u p e r _ b l o c k 木s b ,i n tw a i t v o i d w r i t e s up e r _ l o c k f s s t r u c ts up e r _ b l o c k 木 v o i d u n l o c k f ss t r u c ts u p e r _ b l o c k 木 i n ts t a t f ss t r u d :s up e rb l o c k 木,s t r u c tk s t a t f s 木 i n tr e m o un t _ f ss t r u c ts u p e r _ b l o c k 木,i n t 术,c h a r v o i d c l e a r _ i n o d e s t r u c ti n o d e 木 v o i d u m o u n t _ b e g i n s t r u c ts u p e r _ b l o c k 木 i n t s h o w _ o p t i o n s s t r u c ts e q f i l e 宰,s t r u c tv f s m o u n t 木 2 2 2索引节点 索引节点包括内存索引节点与磁盘索引节点,内存索引索引节点由v f s 定义,磁盘索 引节点由实际文件系统定义。内存索引节点对象由i n o d e 结构描述,存储了文件的相关信 息,代表了存储设备上的一个实际的物理文件。当一个文件首次被访问时,内核会在内存中 组装相应的索引节点对象,以便向内核提供对一个文件进行操作时所必需的全部信息:这些 信息一部分存储在磁盘索引节点对象中,另外一部分是在加载时动态填充的。 索引节点的内存形式由结构i n o d e 描述,主要字段如表2 3 所示。 表2 3i n o d e 的主要字段 :字段 类型描述: ih a s hh l i s t _ n o d e散列表指针 ii i s tii s t _ h e a d描述当前状态的链表指针 is bi i s ti i s th e a d 用于超级块的索引节点链表指针 i _ d e n t r y ii s t _ h e a d 引用索引节点的目录项对象的链表指针 ii n o u n s i g n e dl o n g 索引节点号 ic o u n ta t o m i ct 引用计数器 i _ m o d eu m o d e _ t 文件类型与访问权限 i _ n l i n k u n s i g n e di n t 硬连接数 i _ u i d u i dt所有者标识 i _ g i d g i d _ t 组标识符 si o c k s e m a p h o r e 超级块信号量 7 东南人学硕l 学位论文 ir d e vd e vt所在设备标识符 l s l z e l o 仟t文件的人小( 以字节为单位) ia t i m e t i m e s p e c 上次访问时问 im t i m e t i m e s p e c 上次写文件时间 ic t i m e t im e s p e c 上次索引节点修改时问 ib i k s i z e u n s i g n e dl o n g 块的大小 ib l o c k s u n s i g n e dl o n g 文件使用的块数 is e m s e m a p h o r e 索引节点信号量 索引节点操作。 l o p in o d e _ o p e r a t i o n s 幸 i _ f o p f il eo p e r a t i o n s 木 文件操作 is b s u p e r _ b l o c k 木 超级块对象指针 id a t a a d d r e s s s p a c e 高速缓存对象 ib d e v b l o c k _ d e v i c e 车 所在设备的驱动程序指针 i _ s t a t eu n s i g n e dl o n g 索引节点状态标志 每个索引节点对象都会存储磁盘索引节点的一些数据,比如分配给文件的逻辑块数、文 件的大小等。索引节点对象存在于每个文件系统的双向循环链表中,链表的头存放在超级块 对象的s _ i n o d e s 字段,索引节点的字段i s b l i s t 存放指向该链表相邻元素的指针;索引 节点对象也同时位于i n o d e h a s h t a b i e 散列表中,以加快对索引节点的搜索。散列表以超 级块和索引节点号为关键值,采用链表法解决冲突,在链表中的位置记录在i _ h a s h 字段。 与索引节点对象关联的方法为索引节点操作,由结构i n o d e o p e r a t i o n s 描述,该结构实 例的地址存放在i _ o p 字段。i n o d e o p e r a t i o n s 的主要字段如表2 4 所示。i _ o p 、f _ o p 字段在超级块对象操作r e a d中赋值。 表2 4i n o d e o p e r a t i o n s 的主要字段 y ? j返回值类型字段名参数列表 j i n tc r e a t es t r u c ti n o d e 木,s t r u c td e n t w 木,i n t ,s t r u c t n a m e i d a t a 宰 s t r u c td e n t r y 掌 l o o k u p s t r u c ti n o d e 宰,s t r u c td e n t r y 木,s t r u c tn a m e i d a t a 木 i n t m k d i rs t r u c ti n o d e 木,s t r u c td e n t r y 宰,i n t i n tr m d i rs t r u c ti n o d e 丰,s t r u c td e n t r y 木 i n t m k n o d s t r u c ti n o d e 奉,s t r u c td e n t r y 木,i n t ,d e v _ t i n tr e n a m e s t r u c ti n o d e 宰,s t r u c td e n t r y 木,s t r u c ti n o d e 木, s t r u c td e n t w 木 v o i dt r un c a t e s t r u c ti n o d e 木 i n t p e r mi s s i o n s t r u c ti n o d e 宰,i n t ,s t r u c tn a m e i d a t a 宰 i n t g e t a t t r s t r u c tv f s m o u n t 宰m n t ,s t r u c td e n t r y 木,s t r u c t k s t a t 木 i n ts e t x a t t rs t r u c td e n t w 车,c o n s tc h a r 木,c o n s tv o i d 木,s i z e _ t ,i n t s s i z et g e t x a t t r s t r u c td e n t r y 木,c o n s tc h a r 木,v o i d 车,s i z e _ t s s i z e ti i s t x a t t r s t r u c td e n t r y 宰,c h a r 木,s i z e _ t 8 第一二章文件系统的分析 i n tr e m o v e x a t t rs t r u c td e n t r y 木,c o n s tc h a r 术 l 因为目录也被当作文件来看,因此索引节点的对应包括文件和目录类型,其中g e t a t t r 、 s e t x a t t r 、g e t x a t t r 、l i s t x a t t r 为文件类型的索引节点对应的操作,其他的为目录型索引 节点对应的操作。 2 2 3 目录项对象 v f s 将每个目录看作由若干子目录和文件组成的普通文件。当一个目录被读入内存时, v f s 将其转换为目录项对象。引入目录项的概念主要是出于方便查找文件的目的。一个路 径的各个组成部分,不管是目录还是普通的文件,都是一个目录项对象。例如,在路径 u s r s r c t e s t c 中,目录,u s r ,s r c 和文件t e s t c 都对应一个目录项对象。不同于超级 块和索引节点,目录项对象没有对应的磁盘数据结构,v f s 在遍历路径名的过程中现场将 它们逐个地解析成目录项对象。 目录项由d e n t r y 结构描述,主要字段如表2 5 所示。 表2 5d e n t r y 的主要字段 ” 字段类型 描述 d _ c o u n t a t o mi c _ t引用计数器 d _ f l a g su n s i g n e di n t 目录项高速缓存标志 d i n o d es t r u c ti n o d e 搴与文件名相关的索引节点 dp a r e n ts t r u c td e n t r y 木父目录的1 3 录项对象 dc h i l ds t r u c tl i s t _ h e a d同一父目录中的目录项链表指针 d s u b d i r s s t r u c tl i s th e a d 子目录的链表头 d o pd e n t r y _ o p e r a t i o n s 毒 目录项对应的操作 d s b s t r u c ts u p e r _ b l o c k 木文件的超级块对象指针 d _ m o u n t e d i n t安装于该目录项的文件系统个数 d _ i n a m e u n s i g n e dc h a r p 】 存放短文件名的空间 从磁盘读取目录文件并构造目录项对象需要花费大量的时间,而且在完成对目录项对象 的操作后,有可能还要再次使用,因此将其缓存在内存中可以有效的提高系统的性能。l i n u x 使用目录项高速缓存来缓存目录项对象。 2 2 4文件对象 文件是已打开的文件在内存中的表示,主要用于建立进程和磁盘上的文件的对应关系。 它由s y s _ o p e n ( ) 创建,由s y s c l o s e ( ) 销毁。用户只需与文件对象打交道,而无须关心 超级块,索引节点或目录项。因为多个进程可以同时打开和操作同一个文件,所以同一个文 件也可能存在多个对应的文件对象。一个文件对应的文件对象可能不是唯一的,但是其对应 的索引节点和目录项对象无疑是唯一的。文件对象只存在于内存,并没有对应的磁盘对象。 文件对象由结构f i l e 来描述,主要字段如表2 6 所示。 表2 6f i l e 主要字段 f ” 字段类型描述 f _ l i s t s t r u c ti i s th e a d通用文件对象的链表指针 9 东南大学硕士学位论文 f _ d e n t r y s t r u c td e n t r y 水文件对应的目录项对象 j f s m n t s t r u c tv f s m o u n t 幸文件对应的文件系统安装选项 f _ o p s t r u c tf i i e 0 p e r a t i o n s 车 文件操作集的指针 fc o u n ta t o m i ct文件对象的计数器 u a g s u n s i g n e di n t 文件打开标志 f _ p o s 1 0 仟t当前文件指针的位置 fu i d u n s i g n e di n t 当前用户的u i d f m a p p i n g s t r u c ta d dr e s s s p a c e 掌文件拥有的高速缓存对象指针 文件对象通过高速缓存分配,内核通过f i l e s _ s t a r 变量的m a x _ f i l e s 字段限制了系统 可以同时分配文件对象的个数;每个文件系统分配的文件对象保存在同一链表中,链表头存 放在超级块对象的s _ f i l e s 字段,文件对象的字段fl i s t 包含指向链表中前一个元素和后一 个元素的指针;字段f _ o p 保存文件指针的当前位置,下一个操作从该位置开始,因为一个 文件可能被多个进程打开,因此文件指针应该保存在文件对象而非内存索引节点对

温馨提示

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

评论

0/150

提交评论