毕业论文Linux文件系统分析_第1页
毕业论文Linux文件系统分析_第2页
毕业论文Linux文件系统分析_第3页
毕业论文Linux文件系统分析_第4页
毕业论文Linux文件系统分析_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、摘要.3 关键词.3 引言.4 第1 章 linux 系统概述.5 1.1 linux 系统的诞生和发展5 1.2 linux 系统的主要特点.5 1.3 linux 操作系统的研究现状及未来发展方向.6 第2 章 linux 系统内核简析.6 2.1 linux 系统内核概述.6 2.2 linux 系统内核体系结构简析.7 2.2.1 gnu/linux 操作系统基本体系结构.7 2.2.2 linux 系统内核体系结构.8 2.3 linux 系统内核配置和编译方法.10 2.4 研究linux 系统内核的意义.11 第3 章 linux 文件系统简析.13 3.1 linux 文件系统

2、概述.13 3.1.1 linux 文件系统基本定义.13 3.1.2 linux 文件系统文件类型.14 3.1.3 现今流行的linux 文件系统版本.14 3.2 linux 文件系统基本体系结构.16 3.3 linux ext2 文件系统简析.17 3.3.1 linux ext2 文件系统整体结构和布局.18 3.3.2 linux ext2 文件系统磁盘空间分配.18 3.3.3 linux ext2 文件系统主要数据结构.19 3.3.4 linux ext2 文件系统位示图和i 节点图. 20 3.4 linux ext2文件系统读/写操作分析.22 3.4.1 linux

3、ext2 文件系统写操作分析.22 3.4.2 linux ext2 文件系统读操作分析.33 总结34 参考文献35 致谢:.36 2 linux 文件系统分析 随着计算机和网络技术的飞速发展,linux 系统作为一个优秀开源系统的重要意义逐步显现。本文首先介绍了linux 系统概念.诞生过程以及linux 系统当前和未来的发展方向。结合当前实际情况,揭示了linux 系统研究的重要理论和现实意义。本文采用linux 内核2.4.0 版本进行研究,重点放在ext2 文件系统的读/写操作分析上。在研究过程中,本文对linux 系统的研究经过了理论知识准备.系统概要分析.文件系统写操作的详细分析

4、等几个步骤。在了解了linux 系统内核基本框架和基本数据结构的基础上,具体对 linux ext2 文件系统的读/写操作的实现算法进行了详细的分析。本文的主要目的就是对 linux 系统文件系统的各种功能进行深入的研究,以求能掌握 linux 文件系统的基本原理和实现方式,进而从内核代码层面上理解linux 系统的基本原理和实现方法。 :linux系统;内核;文件系统;ext2;读/写操作; analysis of the linux file system abstract: with the rapid development of computers and network techn

5、ology, linux system as an excellent open-source system the importance of gradually appear. this dissertation introduces the concept of a linux system. birth process and the development direction of linux systems from present to the future .with the current actual situation, and show the linux system

6、 study of the important theoretical and practical significance. in this dissertation, focusing on the ext2 file system read / write operations analysis on the linux kernel version 2.4.0 . in the course of the study, this dissertation on the linux system on a theoretical knowledge of the preparations

7、. system summary analysis . file system write operation a detailed analysis of several steps. to understand the core of the linux system that the basic framework and the basic data structure on the basis of specific linux ext2 file system read / write operations of the algorithm to achieve a detaile

8、d analysis. this article main purpose is conducts the thorough research to linux system file systems each kind of function, can know the linux filing systems basic principle and realize the way in order to, then from the essence code stratification plane understood that the linux systems basic princ

9、iple and realize. keywords:linux system;kernel;file system;ext2;read/write operations; 计算机和互联网的出现和蓬勃发展对人类生活的影响是革命性的,因为它彻底改变了人们获取信息乃至生活的方式,人们越来越多地在日常生活中频繁地使用到计算机和互联网。 人们为了能简便.快捷而准确地享用计算机技术飞速发展带来的成果,对一个简 3 单.高效.安全的操作系统需要也越来越大。现今的主流操作系统主要有windows系.unix系列和linux系列三种。三个系列操作系统各有自己的局限性:windows系列操作系统价格昂贵.相对安

10、全性和效率较低,但用户界面设计技术成熟;unix系列操作系统价格过于昂贵,且需要具有相当专业计算机知识才能对其进行操作;linux系列操作系统也存在用户界面不友好的问题,但是近些年,无数的有志之士对该系列的操作系统进行了全方位.深层次的改进,基本已经克服了用户界面的问题。而且在功能上也得到了很大的发展和丰富。最重要的一点是linux系列的系统与windows系列.unix系列操作系统相比,几乎是完全免费的,而功能却能与前两者媲美,并且所有源程序和应用程序的源代码都是公开的,我们可以很轻松的获得。因此,如果我们想要学习操作系统原理或者寻找一个便捷.实用的操作系统替代昂贵的windows系列.un

11、ix系列操作系统,对于广大的个人用户和中小企业来说,linux系列操作系统无疑是最好的选择之一。 近年来,linux系统在全球范围内掀起了一个又一个热潮,人们越来越意识到linux系统的优越性。本文也是在这种情况下诞生的。 本文的第一章对linux系统的定义.历史和现状做了详细的阐述。总结了linux系统对当今和未来世界的影响。 本文的第二章对linux系统的内核做了一个比较全面的介绍,主要从发展历史.设计目标.代码特点.内核体系结构以及研究内核的重要意义几个方面入手,为后面的深入研究打下理论基础。 本文的第三章,基本内容主要从一下几个方面着手:文件系统概述.基本体系结构.ext2文件系统简析

12、.ext2文件系统读/写操作相关源代码分析。这也是本文的分析重点。之所以选择ext2文件系统,是因为该文件系统作是一个专门为linux系统开发的可扩展和强大的文件系统。它至少在 linux 社区中是最成功也是最流行的文件系统,是所有当前的 linux 发布版的基础,其重要性和代表性不言而喻。 严格意义上来说,linux 操作系统是 unix 操作系统的一种克隆系统。它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。以后借助于internet 网络,并经过全世界各地计算机爱好者的共同努力下,现已成为今天世界上使用最 4 多的一种unix 类操作系统,并且使用人数还在迅猛增长。

13、linux 操作系统的诞生、发展和成长过程始终依赖着以下五个重要支柱:unix 操作系统、minix 操作系统、gnu 计划、posix 标准和internet 网络。 对上述linux 的五大支柱可以归纳如下: (1) unix 操作系统 - unix 于1969 年诞生在bell 实验室。linux 就是unix 的一种克隆系统。unix 的重要性就不用多说了。 (2) minix 操作系统 - minix 操作系统也是unix 的一种克隆系统,它于1987 年由著名计算机教授andrew s. tanenbaum 开发完成。由于minix 系统的出现并且提供源代码(只能免费用于大学内)在

14、全世界的大学中刮起了学习 unix 系统旋风。linux 刚开始就是参照minix 系统于1991 年才开始开发 (3) gnu 计划- 开发linux 操作系统,以及linux 上所用大多数软件基本上都出自gnu 计划。linux 只是操作系统的一个内核,没有gnu 软件环境(比如说bash shell),则linux 将寸步难行。 (4) posix 标准 - 该标准在推动 linux 操作系统以后朝着正规路上发展起着重要的作用。是linux 前进的灯塔。 (5) internet - 如果没有 intenet 网,没有遍布全世界的无数计算机骇客的无私奉献,那么linux 最多只能发展到0

15、.13(0.95)版的水平。 linux 系统的工作方式类似于unix 操作系统,拥有现代操作系统的所有内容,例如: 真正的抢先式多任务处理,支持多用户 内存保护 虚拟内存 支持对称多处理机smp(symmetric multiiprocessing),几多个cpu 及其,以及通常的单cpu 机器 符合posix 标准 联网 图形用户接口和多个桌面环境 速度和稳定性 随着linux 应用范围的迅速扩大,企业对linux 技术人才的需求空前膨胀,但 5 与广阔的市场需求相对应的却是linux 人才的严重匮乏。目前所拥有的专业人才远远不能满足linux 迅速发展的需要,不仅高级的专业型linux

16、技术人才寥寥无几,就连基础应用人才也没有形成规模。linux 内核本身的发展方向主要是硬件支持,嵌入系统和分布系统三个方面。提供更多高性能的硬件驱动程序,让更新,更好的硬件迅速在linux 系统下工作是linux 普及和广泛应用的基础。面队巨大的电子产品市场和潜在用户群,嵌入式软件的应用前景十分广阔,而linux 系统本身的开放特性以及稳定的性能都比较适合作为开发嵌入系统的原型,国内外都有这样的研究项目,也有相当成功的案例。分布式系统是当前操作系统发展的另一个重要领域,以linux 内核为基础,按照自由软件开发模式,发展高性能的自由分布操作系统发展的必然趋势。此外,linux 上的桌面系统,应

17、用系统,尤其是软件开发工具是linux发展的重要方面。桌面系统直接关系到linux 界面的友好性与易用性。应用软件关系到系统的可用性,而在自由软件开发模式中引入软件工程新技术和成功经验有助于快速开发linux 平台上的应用软件。 如果单单说linux,它其实只是一个内核的标识,不同于我们平时所说的redhat linux,debian gnu/linux 等发行版本,这些发行版本除了内核外还包括不同的外部应用程序以方便用户使用和管理操作系统。 内核(kernel)是操作系统的内部核心程序,它向外部提供了对计算机设备的核心管理调用。 一般来讲,操作系统上运行的代码可以分成两个部分:内核所在的地址

18、空间称作内核空间;而在内核以外,剩下的程序统称为外部管理程序,它们大部分是对外围设备的管理和界面操作。外部管理程序与用户进程所占据的地址空间称为外部空间或用户空间。通常,一个程序会跨越这两个空间。当执行到内核空间的一段代码时,我们称程序处于内核态,而当程序执行到外部空间代码时,我们称程序处于用户态。内核负责对计算机硬件的管理和抽象,并合理分配这些资源给各个执行程序共享使用。 一个完整的操作系统主要由四部分构成:硬件.操作系统内核.操作系统服务和 6 用户应用程序。而一个标准的gnu/linux 操作系统的基本体系结构如下图: 图2.1 gnu/linux 操作系统基本体系结构 fig 2.1

19、gnu/linux os basic architecture 最上面是用户(或应用程序)空间。这是用户应用程序执行的地方。用户空间之下是内核空间,linux 内核正是位于这里。 gnu c library (glibc)也在这里。它提供了连接内核的系统调用接口,还提供了在用户空间应用程序和内核之间进行转换的机制。这点非常重要,因为内核和用户空间的应 用程序使用的是不同的保护地址空间。每个用户空间的进程都使用自己的虚拟地址空间,而内核则占用单独的地址空间。 linux 内核可以进一步划分成 3 层。最上面是系统调用接口,它实现了一些基本的功能,例如 read 和 write。系统调用接口之下是

20、内核代码,可以更精确地定义为独立于体系结构的内核代码。这些代码是 所支持的所有处理器体系结构所通用的。在这些代码之下是依赖于体系结构的代码,构成了通常称为 bsp(board support package)的部分。这些代码用作给定体系结构的处理器和特定于平台的代码。 linux 内核主要由五个模块组成,它们分别是:进程调度模块.内存管理模块.文件系统模块.进程间通信模块.网络接口模块。 7 在linux 系统内核中,系统内核是关键的核心部分,完成了操作系统的基本任务。linux 系统支持多进程的并发运行,每个进程都请求系统资源,比如处理能力、内存、网络连接和其他一些资源等。内核作为大的可执行

21、代码,负责处理所有这些请求。根据内核完成任务的不同,可将内核功能分成如下几部分: (1)进程调度:进程调度功能负责创建和撤销进程以及处理它们和外部世界的连接(输入和输出)。不同进程之间的通信(通过信号、管道或进程间通信原语)是整个系统的基本功能,因此也由内核处理。除此之外,控制进程如何共享cpu 的调度程序也是进程管理的一部分。概括地说,内核的进程管理活动就是在单个或多个cpu 上实现多个进程的抽象。 (2)内存管理:内存是计算机的主要资源之一,用来管理内存的策略是决定系统 性能的一个关键因素。内核在有限的可用资源上为每个进程都创建了一个虚拟寻 址空间。内核的不同部分在和内存管理子系统交互时使

22、用一套相同的系统调用, 包括从简单的malloc/free 对到其他一些不常用的系统调用。 (3)文件系统:linux 在很大程度上依赖于文件系统的概念,linux 中的每个对象 几乎都可以被看作文件。内核在没有结构的硬件上构造结构化的文件系统,所构 造的文件系统抽象在整个系统中广泛使用。另外, linux 支持多种文件系统类型,即在物理介质上组织数据的不同方式。例如,可以把磁盘格式化为符合linux 标准的ext2/ext3 文件系统,也可格式化为常用的fat 文件系统。这方面的内核功能将是本文讨论的主要内容。 (4)设备控制:几乎每个系统操作最终都会映射到物理设备上。除了处理器、内 存以及

23、其他很有限的几个实体之外,所有设备控制操作都由与被控制设备相关的 代码来完成。这段代码就叫做设备驱动程序,内核必须为系统中的每件外设嵌入 相应的驱动程序,包括硬盘驱动器、键盘和网口等。 (5)网络功能:网络功能也必须由操作系统来管理,因为大部分网络操作都和具体进程无关,数据包的传入是异步事件。在某个进程处理这些数据包之前,数据包必须已经被收集、标识和分发。系统负责在应用程序和网络接口之间传递数据包,并根据网络活动控制程序的执行。另外,所有的路由和地址解析问题都由内核处理。linux的优良特性之一就是能够在运行时动态地扩展内核,这就意味着当系统正在运行时也可以给内核增添新的功能。所以,当系统添加

24、新的设备时,就可以动态的给linux内核添加新的设备驱动程序以支持新的设备。linux 内核具有可裁减性,并不是一 8 成不变的。我们通常所说的嵌入式 linux 操作系统,一般就是指经过一定裁减的linux 操作系统。 这几个模块的依赖关系如下图: 图2.2 linux 内核模块依赖关系 fig 2.2 linux kernel module reliant connection 由图可以看出,所有的模块都与进程调度模块存在依赖关系,因为它们都需要依靠进程调度程序来挂起或重新运行它们的进程。 其他几个模块的依赖关系不太明显,但同样也很重要。进程调度模块需要使用内存管理模块来调整特定进程所使用

25、的物理内存空间。进程间通信模块则需要依靠内存管理模块来支持共享内存通信机制。这种通信机制允许两个进程访问内存的同一个区域以进行进程间信息的交换。虚拟文件系统也会使用网络接口来支持网络文件系统(),同样也能使用内存管理模块提供内存虚拟盘()设备。而内存管理模块也会使用文件系统来支持内存数据块的交换操作。 综上所述,不难得出系统内核的体系结构图: 9 图2.3 linux系统内核体系结构 fig 2.3 linux system kernel architecture 在本小节,主要介绍linux内核代码配置与编译的方法。编译内核的第一步就是配置内核,这是增加或者减少对内核特性的支持以及修改内核的

26、一些特性发挥作用的方式的必要步骤。例如,你可以要求内核为自己的声卡指定一个不同的 dma 通道。 为了完成内核的配置,必须先切换到 root 用户,然后转入如下内核源程序目录: cd /usr/src/linux 接着敲入如下命令组: make config 10 make menuconfig make xconfig 这三条命令都可以让你来配置内核,但它们发挥作用的方式各不相同: make config三种方法中最简单也是最枯燥的一种。但是最基本的一点是,它可以适应任何情况。这种方法通过为每一个内核支持的特性向用户提问的方式来决定在内核 中需要包含哪些特性。对于大多数问题,你只要回答y(y

27、es,把该特性编译进内核中), m(作为模块编译)或者 n(no,根本不对该特性提供支持)。在决定之前用户应该考虑清楚,因为这个过程是不可逆的。如果你在该过程中犯了错误,就只能按 ctrl+c 退出。 你也可以敲入?以获取帮助。 make menuconfig一种基于终端的配置机制,用户拥有通过移动光标来进行浏览等功能。 make xconfig只有你能够在 x server 上用 root 用户身份运行x应用程序时,这种配置方式才可以使用(有些偏执的用户就不愿意使用这 种方式)。如上所述,这三种方法都实现了相同的功能:它们都生成在构建内核时使用的.config文件。而唯一的区别是在于创建这个

28、文件时的难易程度不同。构建内核要做的工作要比配置内核所做的工作少得多。虽然有几种方式都能实现这一功能,但是选择哪一种依赖于你希望怎样对系统进行设置。 首先,如果你还不在内核源程序目录中,请先再次转入这一目录:cd/usr/src/linux,现在,切换到 root 用户,使用下面显示的命令生成内核。现在在 shell 中敲入下面的命令:make dep clean zlilo boot modules modules_install。当给出了如上多个目标时,除非前面所有的目标都成功了,否则 make 能够知道没有必要继续尝试下面的目标。因此,如果 make 能够运行结束,成功退出,那么这就意味

29、着所有的目 标都正确构建了。现在你可以重新启动机器以运行新的内核。 linux系统开放的源代码为中国软件产业的发展和腾飞提供了前所未有的机遇,其主要意义体现在以下几个方面。 1)开发“自己的”操作系统 操作系统是所有软件赖以生存的基础因此it业强烈地需要拥有自己的操作系统。但是如果搞一套“自己的”体系结构,不同国际标椎兼容,结果也会严重阻碍软件产业的发展。目前,国产操作系统cosix没有占领市场,而windows又几乎处于 11 垄断地位,面对这种局面,出路何在? linux系统的出现正符合拢们的所有要求,因为源代码公开,开发者可以立即加入开发行列,不仅开发速度大大快于任何商业操作系统而且可以

30、保证操作系统中不存在任何黑洞和隐蔽的问题,不会受制于人。同时linux是国际化的,我们也不必考虑兼容性问题。因此linux系统对于我们来说,是实现民族腾飞的个难得的机遇。 实际上,操作系统的发展必将出现在某一标淮规范下百花齐放的局面,定制适合自己的操作系统也将不再仅仅是梦想。但是,开发一个操作系统不是一件容易的事,甚至分析一个现有的操作系统也并不简单。 linux系统作为开放式操作系统,其设计和实现并没有采用很多深奥的知识,有些关键的地方设计思想之简单,实现技术之巧妙确实让人惊叹。 开发适合自己的操作系统应从何着手呢?本质上,linux核心的东西应当保持不变,如对linux的进程调度机制、虚拟

31、管理机制等可以来用借鉴的方式,在此基础上,增加自己所需要的东西,譬如为了提高某件事的效率,可以增加一个相应的内核线程。linux内核本身的组织方式允许增加或减去相应的内容,但前提条件是必须对内核的内部比较清楚,这也是我们分析内核的主要目的之一。 2 )开发高水平软件 自由软件联盟及“中国自由软件库”已经涵盖了操作系统、开发语言、视窗系统、数据库、网络、文字处理、排版及多媒体等各个领域,还有vcd解压源程序、路由器源程序等。利用自由软件让pc带十几个硬盘实现磁盘阵列技术,及其亚微米超大规模集成电路cad系统,可直接输出生产线控制数据等,这能让我们学习到最先进的软件开发规范和开发技术,linux内

32、核的许多面向通信的底层代码,对开发我国白己的信息安全冲品有极高的参考价值。 实际上,目前linux的源代码中包含了世界各地几百名计算机高于的作品分析这些源代码对于我们掌握核心技术会起到事半功倍的作用,尤其是各种驱动程序的编写,对于我们把软硬件结合起来发展民族信息产业至关重要。要改变目前我国软件开发在低层次上的重复过程,必须掌握操作系统的核心技术。 只要站在“巨人”的肩上,认真钻研,就一定能深入了解它,利用它,研制出自己的解压芯片、路由器、磁盘阵列产品,开发出高级的cad系统等,打破国外的技术封锁,振兴我国的民族信息产业。 3 ) 计算机科学的教学和科研 12 对于从事计算机教学和科研的人来说,

33、linux具有更多一层的意义,一般商业出售的unix的完整版本,除了价格高之外,还不提供其核心程序的源代码,这样,若想了解unix的内核,或在内核程序上做一些改进就很困难,更谈不上作为操作系统教学和科研的平台了。而linux提供了从内核到上层的所有软件的全部源程序,在易于获得源代码的条件下,如果能对源代码的组织结构、实现原理及实现机制进行较详细的描述,那么对深入了解源程序将有很大帮助。 linux也很适合作教学用操作系统,般的操作系统教材只讲操作系统的实现原理,学生觉得既抽象又不能发现操作系统的重要价值。尽管有些书也是以unix为实例,但学生也很难接触到unix操作系统,这对学生真止深入了解操

34、作系统造成困难。 国外很多大学已经把linux作为教学用操作系统,这主要是因为:linux平台易于建立;linux内核源代码易于获得;linux结构简单、清晰:linux的实现采用了大量的数据结构,可以锻炼学生的抽象思维能力和知识应用能力。 若要问构成一个操作系统最重要的部件是什么?那就莫过于进程管理和文件系统了。事实上,有些操作系统(如一些嵌入式系统)可能有进程管理而没有文件系统;而另一些操作系统(如ms-dos)则只有文件系统没有进程管理。可是,要是二者都没有,这个系统就称不上操作系统了。 首先,文件系统这个词的含义比较宽泛。其中文件的含义就有狭义和广义之分。狭义地说,文件是指磁盘文件,进

35、而可以是有组织有次序地存储于任何介质中的一组信息。广义的说,unix 从一开始就把外部设备都当成了文件,从这个意义上来讲,凡是可以产生或小号信息的都是文件。以在网络环境中用来收发报文的插门机制来说,它就并不代表存储着的信息,但是插口的发送端消耗信息,而接收端则产出信息,所以把插口看成文件是合乎逻辑的。可是,即使抛开文件这一词语的宽泛性不说,文件系统这个词又进一步有几种不同的含义,要根据上下文才能加以区分: (1)指一种特定的文件格式,例如,我们说linux 的文件系统是ext2,ms-dos 的文件系统是fat16,而windows nt 的文件系统是ntfs 或fat32,就是这个意思。 (

36、2)指按特定格式进行了格式化的一块存储介质。当我们说安装或者拆卸一个文件系统时,指的就是这个意思。 13 (3)指操作系统中(通常是在内核中)用来管理文件系统以及对文件进行操作的机制和实现。显而易见,本论文的主要目的正是在此。 linux 最初采用的是 minix 的文件系统,但是 minix 只是一个实验性的操作系统,其文件系统的大小仅限于 64m ,文件名长度限于 14 个字节。所以,经过一段时间的改进和发展,特别是吸取了多年来对传统unix 文件系统的各种改进所累积起的经验,最后形成了现在的ext2 和ext3 文件系统,这个文件系统可以说就是linux文件系统。 除linux 本身的文

37、件系统外,设计人员很早就注意到了如何使linux 支持其他各种不同文件系统的问题。要实现这个目的,就要将对各种不同文件系统的操作和管理纳入到一个统一的框架中,让内核中的文件系统界面成为一个文件系统的总线,使得用户程序可以通过同一个文件系统操作界面,也就是同一组系统调用,对各种不同的文件系统以及文件进行操作。这样,就可以对用户程序隐去各种不同文件系统的实现细节,为用户程序提供一个统一的抽象的虚拟的文件系统界面,这就是所谓的虚拟文件系统 vfs,这个抽象的界面主要由一组标准的抽象的文件系统构成,以系统调用的形式提供于用户程序。 linux 文件系统文件类型主要有普通文件.目录.字符设备或块设备文件

38、.套接口文件.符号连接文件几种。这里就不一一细说了。 linux 系统所用的文件系统在0.0.1 版时使用的是minix 文件系统,直到0.95版才出现了现今通用的虚拟文件系统(vfs)。 在引进了vfs 的概念之后,能够与linux 系统兼容的文件系统得到了快速的发展,现今流行的主要有下列几种: 文件系统 类型名称 用途 second extended filesystem ext2 最常用的linux 文件系统 three extended filesystem ext3 ext2 的升级版,带日志功能 14 minix filesystem minix minix 文件系统,很少用 ra

39、m filesystem ramfs 内存文件系统,速度超快 network file system(nfs) nfs 网络文件系统,由sun 发明,主要用于远程文件共享 dos-fat filesystem msdos ms-dos 文件系统 vfat filesystem vfat windows95/98 采用的文件系统 nt filesystem ntfs windows nt 采用的文件系统 hpfs filesystem hpfs os/2 采用的文件系统 /proc filesystem proc 虚拟的进程文件系统 iso 9660 filesystem iso9660 大部份

40、光盘所用的文件系统 ufs filesystem ufs sun os 所用的文件系统 apple mac filesystem hfs macintosh 机采用的文件系统 novell filesystem ncpfs novell 服务器所采用的文件系统 smb filesystem smbfs samba 的共享文件系统 xfs filesystem xfs 由sgi 开发的先进的日志文件系统,支持超大容量文件 jfs filesystem jfs ibm 的aix 使用的日志文件系统 reiserfs filesystem reiserfs 基于平衡树结构的文件系统 15 linux

41、 文件系统基本体系结构直观表示如下图: 图3.1 linux 文件系统基本体系结构 fig 3.1 linux file system basic architecture linux 文件系统基本物理结构如下: 16 图3.2 linux 文件系统基本物理结构 fig 3.2 linux file system basic physics configuration ext2(the second extended file system或extended file system verson 2) 被发明( remy card )作为 linux 一个可扩展和强大的文件系统。它至少在 li

42、nux 社区中是最成功的文件系统,是所有当前的 linux 发布版的基础。 ext2 文件系统,象所有多数文件系统一样,建立在文件的数据存放在数据块中的前提下。这些数据块都是相同长度,虽然不同的 ext2 文件系统的块长度可以不同,但是对于一个特定的 ext2 文件系统,它的块长度在创建的时候就确定了(使用 mke2fs )。每一个文件的长度都按照块取整。如果块大小是 1024 字节,一个 1025 字节的文件会占用两个 1024 字节的块。不幸的是这一意味着平均你每一个 文件浪费半个块。通常计算中你会用磁盘利用来交换 cpu 对于内存的使用,这种 情况下, linux 象大多数操作系统一样,

43、为了较少 cpu 的负载,使用相对低效率 的磁盘利用率来交换。不是文件系统中所有的块都包含数据,一些块必须用于放置 17 描述文件系统结构的信息。 ext2 用一个 inode 数据结构描述系统中的每一个文 件,定义了系统的拓扑结构。一个 inode 描述了一个文件中的数据占用了哪些块 以及文件的访问权限、文件的修改时间和文件的类型。 ext2 文件系统中的每一个 文件都用一个 inode 枋觯恳桓?inode 都用一个独一无二的数字标识。文件 系统的 inode 都放在一起,在 inode 表中。 ext2 的目录是简单的特殊文件(它 们也使用 inode 描述),包括它们目录条目的 ino

44、de 的指针。 ext2 文件系统由一系列逻辑上线形排列的数据块组成,每个数据块具有相同的大小,所有块又被划分为若干个块组,每个块组包含相同个数的数据块,整个文件系统的布局如图所示。 图3.3 ext2 文件系统布局 fig 3.3 ext2 file system distribution 每个块组都包含了一份文件系统关键控制信息的拷贝(超级块和文件系统组描述符表),以及描述组内数据存储与控制信息的位示图、i 节点位图和i 节点表。 对于如何决定磁盘空间分配有如下目标: 首先,数据结构必须是可恢复的。即如果在向磁盘写入数据的时候发生错误(比如突然断电),整个文件系统不会丢失数据。虽然偶尔丢失某些当前正在写入的数据是可接受的,但绝不能丢失磁盘上的所有数据。 其次,数据结构应虑

温馨提示

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

评论

0/150

提交评论