(计算机应用技术专业论文)linux虚拟文件系统的研究与应用.pdf_第1页
(计算机应用技术专业论文)linux虚拟文件系统的研究与应用.pdf_第2页
(计算机应用技术专业论文)linux虚拟文件系统的研究与应用.pdf_第3页
(计算机应用技术专业论文)linux虚拟文件系统的研究与应用.pdf_第4页
(计算机应用技术专业论文)linux虚拟文件系统的研究与应用.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

湖北工业大学硕士学位论文 摘要 随着i n t e r n e 和信息全球化的快速发展,信息技术产业对计算机信 息处理的高效性、可靠性、安全性提出了更高的要求。作为所夜应用 软件运行的平台,操作系统是计算机擐重器的部分之一。但我国训锋 梳操作系统的研究和开发水平还相对落后,缺少一个优秀的完全自主 的操作系统对民族软 牛产业的支持,这严重限刳了我国信息产业的发 展。同时_ t 个自主产权的操作系统对于网络安全和国家的军事建设方 面也有非常突出的作用。 l i n u x 操作系统是一个完全自由、免费和公开的操作系统。它提供 了完整的操作系统的内核源程序,给我们提供了一个建立自主产权的 操作磊绒的学习枫会,对于我胃发展自主的操作系统有着重要的意义。 l i n u x 操作系统能同时支持多种物理文件系统,这都得益予其灵活离 效的虚拟文件系统v f s ( v i r t u a lf i l es y s t e m ) 机制。l i n u x 震拟文件系统 v f s 能有效的识别和管理不嗣的物理文件系统。要在l i n u x 中使用物理文 件系统需要向v f s 进行注艇和安装,然后才能通过v f s 来管理和访阀物 理文件系统。 本文首先介绍了文件系统的概念和功能。然届在l i n u x 源代码的基础 上,分析l i n u x 虚拟文件系统如何将具体物理文件系统抽象成统一的界面 提供给上层调用,保证了各个文件系统的差别对用户而言是透明的。在 漂入理解了l i n u x 文件系统的结构及v f s 桃制的工作原理后,设计了一个 文件系统s f s ,该文件系统存在于内存空间。s f s 不仅解决了系统初始化 阿题,面且重点解决了向虚拟文件系统的 生册和安装等关键闻题,尉时 完成了文件的读、写和定位等基本操作。 关键字:l i n u x 操作系绕,文件系统,虚拟文件系统 湖北工业大学硕士学位论文 ! ! ! ! = = ii= i = i = = = a b s t r a c t w i t ht h ed e v e l o p m e n to fi n f o r m a t i o nt e c h n o l o g y ,c o m p u t e ro p e r a t i n g s y s t e m i s r e q u e s tt o b em o r ee f f i c i e n t ,r e l i a b l ea n ds e c u r e ,b u tt h e d e v e l o p m e n to fc o m p u t e ro p e r a t i n gs y s t e mi no u rc o u n t r yl a g sf o rb e h i n d y e t i tl i m i t st h ed e v e l o p m e n to fi n f o r m a t i o nt e c h n o l o g ys e r i o u s l y l i n u xi saf r e ea n do p e no p e r a t i n gs y s t e m ,i th a sb e e nc o n s i d e r e da s o n eo fm o s te x c e l l e n tc o m p u t e r q p e r a t i n gs y s t e m w ec a ng e ta l ll i n u x k e r n e ls o u r c ec o d ee a s i l y i tp r o v i d e su sw i t ha no p p o r t u n i t yt os t u d y s o m eg o o di d e aa n dm e t h o dt o d e v e l o po u ro w nc o m p u t e ro p e r a t i n g s y s t e m l i n u xc o u l ds u p p o r tm u l t ip h y s i c a lf i l e s y s t e ms i m u l l a n e o u s i y i t is p r o f i t e df r o mi t sv f s ( v i r t u a lf i l eg y s t e m ) ,w h i c hi s af l e x i b l ea n d e f f i c i e n tf i l e - m a n a g i n gm e c h a n i s m t h ev f scanr e c o g n i z ea n dm a n a g e t h em a t e r i a lf i l es y s t e me f f i c i e n t l y o n l ya f t e rb e i n gr e g i s t e r e da n d m o u n t e dt ov f sc a nt h em a t e r i a lf i l es y s t e mu s e di nt h el i n u x t h i sp a p e ri n t r o d u c e st h ec o n c e p t i o n so ff i l ea n df i l es y s t e mf ir s t t h e nb a s i n go nt h es o u r c ec o d eo fl i n u x ,i ta n a l y s et h ew o r k i n g m e c h a n i s mo fv i r t u a lf i l es y s t e mw h i c hc o n t a i n sm a i n l yh o wt oa b s t r a c t t h eu n i f o r mi n t e r f a c ef o ru s e rf r o mt h ed i f f e r e n tp h y s i c a lf i l es y s t e m s a f t e ru n d e r s t a n d i n gt h ev f sm e c h a n i s m ,w ed e s i g naf i l e s y s t e m - s f s ( s i m p l ef i l es y t e m ) w h i c hc o n s i s t si nt h em e m o r ys p a c e s f sn o to n l y s o l v et h ep r o b l e ma b o u td i s t r i b u t i n gt h em e m o r ys p a c ea n di n i t i a l i z i n g t h er o o td i r e c t o r y ,b u ta l s os o l v et h ec r i t i c a lp r o b l e ma b o u ti n s t a l l i n ga n d r e g i s t e r i n gt ot h ev f s a tt h es a m et i m e ,r e a l i z et h eb a s i cf i l eo p e r a t i o n s u c ha sr e a d i n g ,w r i t i n ga n do r i e n t a t i o n , k e yw o r d :l i n u x f i l es y s t e mv i r t u a lf i l es y s t e m 湖北工业大学硕士学位论文 1 1 研究的目的和意义 第1 章绪论 众所周知,操作系统是计算机的重要组成部分,操作系统的优劣直 接影响到计算机的整体性能。 目前,我国还没有自己开发的桌面通用操作系统核心,所采用的商 业操作系统大部分是w i n d o w s 和u n i x ,而其他软件都是在操作系统 的基础上运行的。由于缺乏国产优秀操作系统软件的支持,国产软件 的开发主要是应用层次上的二次开发,软件市场大部分被国外软件垄 断,且日益严重,这与我国发展知识经济,提高信息安全的需求相矛 盾,而且对国外软件的依赖会更加严重,大大的限制了国产软件行业 的发展。因此开发操作系统核心在系统的安全性和及系统性能的提高 方亟无疑具有及其重要的意义【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 的文件系统和虚拟文件系统进行研究是非常必要的。 通过对l i n u x 的源代码分析,并结合相关参考文献,可以深入了解 l i n u x 的文件系统的体系结构及虚拟文件系统的工作机制。这对于开源 项目的推广和发展具有重要的科研价值。同时,在彻底理解了l i n u x 虚拟文件系统的结构和原理后可以根据具体的实际情况定制满足环境 需求的文件系统,所以l i n u x 文件系统的研究具有一定的实用价值。 湖北工业大学硕士学位论文 1 2l i n u x 操作系统概况 l i n u x 作为一个典型的现代网络型操作系统,其中所涉及到的技术实 现涵盖了操作系统技术的最新成果。它是一个多用户、多任务的操作系 统,支持分时处理和软实时处理,并带有微内核特征( 如模块挂载卸载 机制) ,具有很好的定制特性【2 3 】。由于它是开放源码的,全世界很多科 技人员在不断对它完善的同时,还增加了越来越多的新功能,比如说支 持硬实时任务处理等。l i n u x 作为一个现代操作系统的典型实现,可以说 是一个计算机业与时俱进的产物,它不断更新,不断完善,其新功能的 加入和完善速度超过了现今世界任何一种操作系统。而l i n u x 在嵌入式系 统应用方面尤其显示出其优越性。可以预见,l i n u x 的强大的网络功能将 赋予嵌入式系统对网络天然的亲和力,从而为嵌入式系统的网络互连和 功能扩展准备了广阔的发展空问【4 】。 1 2 1l i n u x 操作系统的特性 简单地说,l i n u x 是类u n i x 的操作系统,它兼容了p o s i x l 0 0 3 1 ( p o r t a b l eo p e r a t i n gs y s t e mi n t e r f a c e ,可移植操作系统接口) 标准1 5 】, 并包含了u n i xs y s t e m v 与b s d 4 3 的太部分特征。它具有如下特征: 1 多任务支持。l i n u x 支持多进程同时执行,进程之间完全独立; 2 多用户支持。l i n u x 允许多个用户同时在系统上工作; 3 多处理器支持。从2 o 起,l i n u x 可以在多处理器体系结构上运行, 即操作系统可以将任务分布在多个处理器上: 4 跨平台支持。l i n u x 可以在几乎所有常见的硬件体系结构上运行, 从p c 机到a l p h a 工作站。这样广泛的跨平台功能在其他主要的操作系统 中很少见; 5 按需调入执行。只有实际执行中需要的程序块才会被装入到内存 中; 6 分页机制。虽然l i n u x 中用缓存技术最大化地应用了物理内存,但 仍然会出现内存不够的现象。在。这种情况下,l i n u x 将一个不常使用的4 k 字节大小内存页面中的数据置换到外存上,并将需要的数据页面由外存 调入阿存中; 湖北工业大学硕士学位论文 7 动态外存缓存。l i n u x 在内存中保留一块空间作为外存操作的缓存, 可以动态地调整缓存的大小: 8 共享库支持。l i n u x 中引入了共享库的概念,或者称作动态链接库, 即库文件只被读入内存一次,但可以被若干个应用程序共享使用; 9 p o s i x1 0 0 3 1 支持。p o s i x l 0 0 3 1 标准定义了一个u n i x 类操作的 最小化界面。l i n u x 从1 2 版本就开始完全支持p o s i x l 0 0 3 :l 。与国际标准 接轨使得l i n u x 在界面上具有很强的通用性【6 】; 1 0 支持多种不同格式的可执行文件。l i n u x 可以支持所有u n i x 系统 中的可执行文件格式; 1 1 内存保护模式。l i n u x 中使用处理器提供的内存保护模式来防止 用户企图进入内核,从而保证内核程序的安全可靠性; 1 2 支持不同种类的文件系统。l i n u x 支持各种各样的文件系统 5 】。 在l i n u x 中最常使用的是其系统自带的e x t 2 e x t 3 文件系统。此外,m s d o s v f a t ,n t f s ,a f f ,h p f s 以及网络文件系统n f s 等各种文件系统也都被 l i n u x 所支持: 1 3 t c p i p ,s l i p 和p p p 支持。l i n u x 操作系统可以加入到u n i x 局域 网之中去。理论上所有网络协议( 包括n f s 和远程登录等) 都在l i n u x 所支 持的范围内。对s l i p 和p p p 的支持使得可在电话线上建立t c p i p 连接, 通过电话线连入i n t e r n e t 。 1 2 2l i n u x 操作系统的发展情况及前景 l i n u x 是一个年轻的操作系统,它在网络上产生,是由芬兰赫尔辛基 大学的学生l i n u st o r v a l d s 首创,在全世界各地的u n i x 编程高手的协助 下,以因特网为联系媒介,由分布在世界各地的成千上万的计算机爱好 者共同创造成功的1 7 , 8 1 ,这也使得l i n u x 在较短时阗内就成为了一个稳定、 成熟的操作系统。值得注意的是,l i n u x 的开发是在g p l ( g n up u b l i c l i c e n s e ,g n u 公共许可) 的版本控制之下 9 1 ,因此l i n u x 内核的所有源代 码都是采取开放源代码的方式。我们缺乏对操作系统的开发经验,这样 的条件对我们来说是一个很大的契机,使我们利用l i n u x 进行操作系统的 开发成为可能。 l i n u x 内核的开发是由l i n u st o r v a l d s 领导的内核开发小组进行开发 湖北工业大学硕士学位论文 的。世界各地的高手们将自己对l i n u x 内核做的改动交给l i n u s 小组,由 这个小组进行统一控制,随时对内核进行更新升级。目前最新的内核的 稳定版本是开发出来的l i n u x 2 6 内核【10 , 1 。 与m i c r o s o f tw i n d o w s9 8 或w i n d o w sn t 不同,l i n u x 操作系统并不是 一个单一的产品,它在市场上有多种发行版本( d i s t r i b u t i o n s ) ,它们并 不是都一样。所有的发行版本具有一样的l i n u x 内核,内核包含着所有核 心的操作系统功能以及网络堆栈,所不同的地方在于其安装、配置、支 持以及第三方应用。l i n u x 的这些版本大致分类为t 1 2 】: 1 标准的l i n u x 版本,如r e dh a tl i n u x ; 2 小型化的嵌入式版本,如各种“o n e - f l o p p y d i s k ”系统: 3 具有实时扩展( 增强) 功能的l i n u x 版本,如r t l i n l l x : 4 各种特制版本,如绝大多数的嵌入式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 。经过近几 年的发展,l i n u x 开始使人们相信,它是一个健壮的、可靠的、高性能的 操作系统。作为网络操作系统,它已经占领了互联网上6 0 的份额:作为 桌面操作系统,它正不断地完善它的图形系统一xw i n d o w s 系统【”】,以 易用性来吸引普通用户。 1 3l i n u x 虚拟文件系统概况 虚拟文件系统也称为虚拟文件系统开关( v i r t u a l f i l e s y s t e ms w i t c h ) 或v f s 。在l i n u x 类操作系统中属于内核软件层,用来处理与u n i x 标准 文件系统有关的所有系统调用( 1 4 ”】。 虚拟文件系统的优点在于它能为各种文件、文件系统提供一个统一 的、通用的接口。使得用户进程可以忽略所使用的文件系统细节。当多 个不同类型的文件系统同时在使用时,对用户进程而言就好像只面对一 个单一的文件系统。 l i n u x 操作系统的特点之一就是支持多个文件系统f 】。用户可直接 访问这些文件系统。l i n u x 现在可以支持十几种文件系统,有e x t 2 、 n t f s 、m i n i x ,u m s d o s ,v f a t ,崩,3 2 、p r o c ,s m b ,n c p ji s 0 9 6 6 0 湖北工业大学硕士学位论文 s y s v 、h p f s 、a f f s 、u f s 等,他们都在l i n u x 内核源程序中提供了支 持【1 ”。 l i n u x 对多个具体文件系统的支持是由l i n u x 文件系统中的虚拟文 件系统实现的 18 1 。他将具体的文件系统从系统服务中分离出来,用户 程序利用虚拟文件系统的统一操作界面与每一个具体文件系统相交 互,而不必关心具体搡作的是哪一种文件系统 1 9 2 0 l 。 在l i n u x 操作系统中,对不同设备的访问是通过不同的设备标识符 来实现的,在l i n u x 文件系统的d e w 目录下列出了所有设备的设备标 识符【2 。在对不同文件系统访问时,l i n u x 操作系统会将该设备上的 文件系统安装到文件系统目录树上 2 2 1 ,使该文件系统成为一个目录。 这个目录就称为该设备文件系统的安装点。操作系统对该设备的文件 系统的访问就表现为对该目录的访问。 1 4 课题主要研究工作 基于以上的目的,本文开始研究l i n u x 操作系统的文件系统和虚拟 文件系统。当然,l i n u x 操作系统是一个相当庞大的系统,不可能在短 期内对其全部的源代码有全面的了解。在撰写本文的几个月时间内 我主要研究的对象是l i n u x 操作系统中的文件系统以及虚拟文件系统 部分的内核源程序 2 3 - 2 5 1 ,所研究的版本为2 4 。该内核主要是c 语言 编写的,具有短小精悍、可移植牲强的优点1 2 6 - 2 8 l 。它还包括了一些汇 编语言,用来实现系统的启动和初始化和提高系统性能2 9 3 1 】。 文件系统是操作系统中比较重要同时也是代码比较多的部分,大概 有3 万行代码左右 3 2 , 3 3 】。因为l i n u x 操作系统支持多种具体的文件系 统,实现了多种文件系统的共存和直接访问1 3 4 , 3 5 ,所以l i n u x 的文件 系统很复杂。本文主要研究的内容是虚拟文件系统。虚拟文件系统又 被成为虚拟文件交换( v i r t u a lf i l es w i t c h ) ,他将提供l i n u x 系统统一 的用户界面来访问物理设备,而不管实际的文件系统是如何组织的。 本文的主要内容包括: 1 首先介绍了对l i n u x 虚拟文件系统进行研究的目的和意义,介 绍了l i n u x 操作系统的特点、发展现状和前景,然后介绍了虚拟文件 系统。 湖北工业大学硕士学位论文 2 详细介绍了文件系统的相关内容,首先介绍了文件的概念和分 类,然后分析了文件系统的层次模型。最后叙述了文件系统的功能。 3 + 深入研究了l i n u x 操作系统的虚拟文件系统。包括:虚拟文件 系统的整体结构,主要的虚拟文件系统的几种数据结构:内存节点、 内存目录项、内存超级块、缓冲区头:打开文件表、文件系统类型、 安装列表结构等,接下来介绍了虚拟文件系统的初始化和缓冲区管理: 索引一节点、目录缓存、缓冲区缓存、核心守护进程,最后分析了虚拟 文件系统提供的文件操作过程。这些是本文研究的重点内容。 4 。在深入了解了l i n u x 文件系统的结构及v f s 机制的工作原理后, 设计了一个文件系统s f s ,该文件系统存在于内存空间,不仅解决了 s f s 根目录初始化的问题,而且重点解决了向虚拟文件系统的注册和 安装等关键问题,同时完成了文件的读、写和定位等基本操作。 湖北工业大学硕士学位论文 第2 章文件系统 在l i n u x 操作系统中,一个文件系统是包括了所有的硬盘分区、目录、 存储设备和文件的一个集合体,它包括了l i n u x 操作系统本身和它的各种 组成部分。一般被当作外设的软盘、c d r o m 光盘和其他存储介质等都 必须添加到文件系统本身才能使用,甚至显示器和打印机等硬件设备也 在某种程度上被视为是文件系统的一部分。从本质上而言,用户的一切 工作就是对文件系统的操作。 2 1 文件的概念及分类 在计算机中文件是在逻辑上具有完整意义的信息的集合它有一个 名字以供识别。文件名是字母或数字组成的字母数字串,它的格式和长 度因系统而异。文件包括两部分。 1 文件体:文件本身的信息; 2 文件说明:文件存储和管理信息;如:文件名、文件内部标识、 文件存储地址、存取控制、访问时间等。 为了便于控制和管理文件而将文件分为若干种类型。由于各系统对文 件的管理方式不同,因而它们对文件的分类方法也有很大差异。通常文 件可以按照以下的分类方法来划分; 1 按用途 按用途可以分为系统文件、用户文件和库文件。系统文件是指由系 统软件构成的文件。大多数系统文件只允许用户调用而不允许用户去 读。更不允许修改;有的系统文件不直接对用户开放。用户文件是由 用户韵源代码、可执行文件或数据等所构成的文件。库文件是标准子 程序及常用的例程所构成的文件。允许用户调用,但不允许修改。 2 按存取控制属性 按存取控制属性可以将文件分为只执行文件、只读文件和读写文 件。只执行文件是指只允许被核准的用户调用执行,既不允许读,更 不允许写。只读文件允许文件主或被核准的用户读,但不允许写。读 写文件是指允许文件主或被核准的用户对文件进行读写操作。 湖北工业大学硕士学位论文 3 。按文件的逻辑结构 按文件的逻辑结构可分为有结构文件和无结构文件。有结构文件有 成记录文件,无结构文件又称为流式文件。在有结构文件中,文件由若 干个相关记录组成,而无结构文件则被看成一个字符流。文件在文件系 统中是一个最大的数据单位,它描述一个对象集。一个文件必须有文件 名,它通常是由一串a s c i i 码或者汉字构成。 4 按文件的物理结构 按文件的物理结构可以分为顺序文件、链接文件和索引文件。顺序 文件是指把逻辑文件中的记录顺序的存储在连续的物理块中。这样, 文件中记录的逻辑顺序和它们的物理存储顺序是一致的,其存储结构 如图2 1 所示。 文件说明信息 文件x 第一物理块( 1 1 ) l i 文件k 度c 4 ) 逻辑块号0 12 3 图2 1 顺序文件的结构 链接文件是指将文件中各个记录可以存储在不相邻的物理盘块中, 通过物理块中的链接指针将它们连接成一个链表。链接文件的结构如 图2 2 表示。 文件说明信息 图2 2 链文件接的结构 物理存储设备 刮8 9l 一3 4,刮2 2 p - - 叫f ,f 一叫 3 4 72 2r0 i 一f 、一 j 置 湖北工业大学硕士学位论文 索引文件是指文件中各个记录可以存储在不相邻的物理盘块中,但 需要为每个文件建立一张索引表,来实现记录和物理块之间的映射。 在索引表中为每个记录设置一个表项,其中存放该记录号及其所在的 物理块号。索引文件的结构如图2 3 所示。 文件说明信息索引表物理存储设备 图2 3 索弓l 文件的结构 2 2 文件系统的层次模型 操作系统中管理与文件有关的软件和数据称为文件系统。文件系统 的主要目的是使计算机操作系统对文件操作更有效、更方便和更安全。 个好的文件系统要求给用户提供一个好的操作界面,能够方便的按 名存取,同时又提供对文件的存取控制,给不同的用户提供不同的访 问权限,保证文件系统的安全性,提供一定的系统完整性机制 3 6 , 37 。 d j i s t r a 于1 9 6 7 年提出操作系统的层次结构的设计方法,1 9 6 8 年 m a d n i c k 将这一思想引入了文件系统。层次结构法可以按照系统所提 供的功能来划分为各种不同的层次,下层为上层提供服务、上层使用 下层的功能。这样,上下层之间彼此无需了解对方的内部结构和实现 方法,而只关心二者的接口。从而,一个看上去十分复杂的系统将会 由于层次的划分而变得易于设计、易于理解和易于实现。而且,当系 统出现错误时,也容易进行查错和调整。因此,层次化设计方法也使 得系统的管理和维护更加容易:m a d n i c k 把文件系统划分为8 层,如 图2 1 4 所示。 9 湖北工业大学硕士学位论文 请求 用户接口 符号文件系统 基本文件系统 应答 系统调用 文件名 文件标识符 文件标识符 文件控制信息 逻辑文件系统 逻辑块警。 、i7 i 、 物理文件系统 相对块弩。 。,。一7 :一。、。 ,二、 设备地址格式 启动i o设备管理程序 图2 4 文件系统的层次模型 1 用户接口 该层根据用户对文件的存取要求,把不同的系统调用加工改造成不 同的内部调用格式。 2 符号文件系统层 该层完成第一层所提供的功能,并把第一层所提供的参数一用户文 件名转换成系统内部的唯一标识符f d ,该层的主要工作是搜索文件目 录,也就是搜索s f d ,以找到相应文件名的表目以找到f d 。然后,f d 将作为参数传给第三层。 3 基本文件系统层 湖北工业大学硕士学位论文 该层根据第二层的调用参数f d ;找到文件的说明信息,包括存取控 制表、文件逻辑结构、物理结构以及第一个物理块地址等。 4 存取控制验证层 该层的主要功能是根据存取控制信息和用户访问要求,检验文件访 问的合法性,从而实现文件的共享、保护和保密。 5 逻辑文件系统层 该层的主要功能是根据文件的逻辑结构,找到所要进行操作的数据 或记录的相对块号。对于字符流的无结构文件来说,只要把用户指定 的逻辑地址按块长换算成相对块号就可以了。但是,对于记录式有结 构文件来说,由于用户有时指定的是键名或记录名因此,需首先由 键名( 或记录名) 搜索到相应的记录并得到对应的逻辑地址之后,再将 其转换为相对块号。 6 物理文件系统层 该层把相对块号根据文件的物理结构转换成物理地址。 7 文件存储设备分配模块和设备策略模块 文件存储设备分配模块实现对空闲存储块的管理包括分配、释放 和组织。设备策略模块主要是把物理块号转换成相应文件存储设备所 要求的地址格式,然后根据具体的操作要求及必要的参数,准备启动 输入输出设备的命令。 8 启动输入输出层 扫设各处理程序执行具体的读或写文件操作。 第七层和第八层是文件系统和设备管理程序的接口层。 2 3 文件系统的功能 2 3 1 存储管理 文件的存储管理主要解决的是外部存储设备上空闲块的分配和回 收问题。操作系统中最常见的存储管理方法有如下三种。 1 空闲目录文件 空闲文件目录是最简单的一种存储管理。他把文件存储设备中空闲 块的块号统一存放在一个称为空闲文件目录的数据块中i 空闲文件目 湖北工业大学硕士学位论文 录中的每一个表项包含了某一空闲区的起始块编号和长度。该方法管 理存储空间适用于连续文件结构。 2 空闲块链 空闲块链是一种较常见的文件存储管理。该方法由空闲块链将所有 的空闲块链接在一起。当需要分配时,在空闲块链的表头摘取所需大 小的空闲区;当需要回收时,将释放的空闲链逐个插入到链尾。为了 提高效率,常采用成组链法,既分配的空闲块按固定大小分组,以后 的分配与回收以组为单位进行。 3 位示图 前两种办法在分配和回收过程中需要在设备上进行查找工作,故效 率较低。现在许多操作系统常采用位示图的存储管理方法。该方法在 内存中划分出一个固定的区域建立位示图,该位示图的每一位都表征 存储设备上某一物理块的使用情况。在物理块分配和回收过程中,对 位示图的某一位信息置i 或景0 ,以表示物理块的使用与否。该方法占 用的内存较小,放在内存中很容易实现。 2 3 2 目录管理 在计算机系统中,为了有效的管理大量的文件,必须对它们加以妥 善的组织,以做到用户只须向系统提供文件名,便能快速、准确的找 到指定的文件 3 5 , 3 9 】。这主要依赖予文件系统中的目录管理来实现。目 录管理提供的最基本功能就是将文件名转化为该文件在外存的物理地 址也就是“按名存取”。 为能对个文件正确的存取,必须为文件设置用于描述和控制文件 的数据结构( 其中包括文件名及文件的各种属性) ,这个数据结构称为 文件控制块f c b ( f i l ec o n t r o lb l o c k ) 。f c b 其实就是2 1 节中文件定 义中的文件说明部分。文件系统借助于f c b 中的信息实现对文件的各 种操作。文件与文件控制块是一一对应,而把文件控制块的有序集合 称为文件目录。换言之,一个文件控制块就是一个文件目录项。通常 一个文件目录也被看成一个文件,称为目录文件。 文件目录可分为单级目录、= 级目录和多级目录。单级目录是最简 单的目录结构。为了改变单级目录中文件名冲突问题和提高搜索目录 湖北工业大学硕士学位论文 表的速度,引用了二级目录。把二级目录加以推广就形成了多级目录。 多级目录构成了树形结构。使用多级目录有很多优点: 1 多级目录可以很好的解决文件名冲突问题,以文件的路径名唯 一的表示文件系统中的某一个文件。 2 多级目录的使用也加快了文件的查找速度。一方面多级目录使 搜索的文件数目大大减少:另一方面,采用线性搜索法、哈希搜索法、 二分搜索法的算法加快了搜索速度。 3 多级目录使文件目录层次结构清楚,用户使用更加方便。 2 3 3 文件共享 文件共享是指一个文件被若干用户或进程共同使用。例如,两个工 作在同一课题中的程序员,往往把与该课题有关的文件单独放在一个 子目录中,并都想把它置于自己的用户目录的管辖之下,因此这个公 共子目录就应该是可共享的了。文件系统的一个重要任务就是为用户 提供共享文件的手段,这样,避免了系统复制文件的开销,并节省文 件占用的存储空间。实现文件共享的常用方法有以下几种。 1 绕路法 该方法是指用户从当前路径出发向上依次返回到父目录,直到返回 到共享文件路径的交叉点,再顺序向下访问到目标共享文件。这种方 法简单易行,但用户使用比较繁琐。该方法可由l i n u x 的s h e l l 命令c d 实现。 2 链接法 该方法是在相应的目录表之间进行链接,通过链指针直接指向共享 目录的共享方式。l i n u x 有多种链接方式,如硬链接、符号链接、快速 符号链接等。该方法可由l i n u x 的s h e l l 命令l n 实现,附加不同的参数 实现不同类型的链接方式。 3 利用基本文件目录实现文件共享 在检索目录时:。为了找到所需要的文件目录,需要将存放目录文件 的多。个物理块逐块地读入内存进行查找,因此检索速度很慢。实际 上,在目录检索时只使用文件符号名进行查找,而与目录表目的其他 信息无关。因此,常常利用把目录表目进行分解的办法来加快检索速 湖北工业大学硕士学位论文 度,同时也便于实旖文件的共享。 目录分解就是把一个目录表耳分解为两部分:基本文件目录b f d ( b a s i cf i l ed i r e c t o r y ) 部分与符号文件目录s f d ( s y m b o lf i l e d i r e c t o r y ) 部分。其中b f d 表目包含除了文件符号名以外的全部信息, 并赋予一个唯一内部标识符:s f d 表目只包含文件符号名以及相应的 文件内部标识符i d 。系统把i d 等于0 、l 和2 的目录表目分别作为基 本文件目录b f d 、空闲文件目录( f f t ) 和主文件目录( m f d ) 的唯 一标识符。 利用基本文件目录实现文件共享的方法是在自己的相应符号文件 目录中开辟一个表目,填上自定义的符号名和共享文件的唯一标识符 i d ,而共享文件在基本文件目录中的相应表目基本不变。 4 基于索引节点的共享方式 这种共享方式的思想是对要共享的文件,引入一个索引节点,将文 件中诸如文件的物理地址及其文件属性等信息,不放在文件目录表目 中,而是放在索引节点中。在文件目录中只设置文件名及其指向相应 索引节点的指针。这样,由任何用户对文件进行追加或修改文件等操 作所引起的相应节点内容的改变都对其他用户可见,从而实现了多用 户共享文件。在索引节点中还应有一个链接计数,用于表示链接到索 引节点( 即文件) 上用户目录表目的数目。基于索引节点的共享方式 可以如图2 5 所示。 l i u 用户文件目录 3 4 牛- 名索引节点号 a l p h a y a o 用户文件目录 i 文件名索 i 节点号 【a i p h a 索引节点 文件a l p h a 、广 一 、 c 。u n t - 2 1 一一 s b l o c k s i z e = l0 2 4 ; s - s b l o c k s i z e b i t s = l0 ; s - s m a g i c 。0 ; s - s o p = & h e l l o s o p s ; r o o t i n o d e - - - 仓u 建一个i n o d e 结构; s - 如一r o o t = d a l l o c r o o t ( r o o t i n o d e ) ;将在初始化部分详细介绍 ) ; 4 2 3s f s 的目录项结构 从4 1 节可知,s f s 由于不存在索引节点结构,所以目录项记录了 几乎全部的文件信息。其结构如下所示。 s t r u c ts i m p l e d i r e n t r y u n s i g n e ds h o r ti n o ;索引节点号 u i d tu i d ;所有者标志符 g i d tg i d ;l 组标志符 u n s i g n e dl o n gs i z e ;文件的字节数 m o d e tm o d e ;文件类型与访问权限 k d e vtr d e v ;实设备标志符 s t r u c tf i l e o p e r a t i o n s s i m p l e f o p s ;文件操作 湖北工业大学硕士学位论文 s t r u c ti n o d e o p e r a t i o n s s + s i m p t e i o p s ;索引节点操作 n l i n ktn l i n k ;硬链接数 r e a d s i m p l e t + r e a d s i m p l e ; w r i t e s i m p l e t + w r i t e s i m p l e ; c o n s tc h a r + n a m e ;文件名 u n s i g n e ds h o r tn a m e l e n ;文件名显示时所占的长度 s t r u c ts i m p l e d e n t r y + p a r e n t ;父目录的目录项指针 s t r u c ts i m p l e d e n t r y + n e x t ; ,指向冠目录中下一令文件的目录项 s t r u c ts i m p l e d e n t r y + s u b d i r ; 对目录而言,指向子目录中文件的目录项 a t o m i ctc o u n t ;目录项被引用的次数 s t r n c ts i m p l e d o p e r a t i o n s + s i m p l e d o p s ;目录项操作 ) ; 由于在s i m p l e d i r e n t r y 结构中记录了几乎所有的文件信息和操作, 将本属于索引节点负责的信息也涵盖其中。所以s i m p l e d i r e n t r y 与 e x t 2 中的e x t 2d i re n t r y 类似,最终都会反映到v f s 的i n o d e 的u 结构 中。由于s f s 是一个自定义的文件系统,所以,v f s 将会让i n o d e 的u 结构中的g e n e r i c i p 指向s i m p l e d i r e n t r y 结构。g e n e r i c i p 表示无类 型的通用结构,当在u 中找不到合适的结构时都可以使用g e n e r i ci p 。 4 3s f s 的初始化 s f s 的初始化的入口函数为s i m p l e i n i t c 文件中的i n i t m o d u l e 函 数。s f s 初始化的流程可以描述如下。 t 定义s f s 根目录的目录项结构 s t r u c ts i m p l e d i r e n t r ys i m p l e r o o t2 i n o :s i m p l er o o ti n o + s i m p l er o o ti n o = 1 + n a m e l e n :5 , n a m e :s i m p l e “, m o d e :s i f d i rs i r u g o s i x u g o , n l i n k :2 , 湖北工业大学硕士学位论文 s i m p l e 。i o p s :& s i m p l e r o o t i n o d e o p e r a t i o n s , s i m p l e f o p s :& s i m p l e f i l e o p e r a t i o n s , p a r e n t :& s i m p l e r o o t , ; 2 创建s f s 根目录的i n o d e 结构 r o o t i n o d e 2 s i m p l e g e t i n o d e ( s ,s i m p l e r o o t i n o ,& s i m p l e r o o t ) 3 创建根目录对应的v f s 中的d e n t r y 结构 这是通过d a l l o c r o o t ( r o o t i n o d e ) n i 数来实现,d a l l o c r o o t ( ) 函数 如下伪码表示。 s t r u c td e n t r y + d a l l o c r o o t ( s t r u c ti n o d e + r o o t i n o d e ) s t r u c td e n t r y r e s2n u l l ; i f ( r o o t i n o d e ) r e s = 分配“,”对应的d e n t r y 结构: i f ( r e s ) r e s 一 d s b2r o o t i n o d e - i s b ; r e s 一 d p a r e n t r e s ; 以上两步是为r e s 赋值,也就是将根目录和r o o ti n o d e 联 系起来。 d _ i n s t a n t i a t e ( r es r o o t i n o d e ) ; 把根目录的i n o d e 结构安装到d e n t r y 结构里+ ) r e t u r nr e s ; ) 4 4s f s 的注册和安装 4 ,4 1s f s 的注册 s f s 通过函数r e g is t e r f i l e s y s t e m ( s i m p l e f s t y p e ) 进行注册。 4 湖北工业大学硕士学位论文 s i m p l e f s t y p e 是一个s t r u c tf i t d s y s t e m t y p e 类型的结构,其中的三个 主要字段中的赋值如表4 2 所示。 表4 2s f s 文件类型表 字段含义赋值 n a m e文件系统名 “s i m p l e f s f l a g 文件类型 f s s i n g l e 表示s f s 只有一个超级块 r e a d s u p e r读超级块的例程

温馨提示

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

评论

0/150

提交评论