1、 本科 毕业 设计 (论文 ) (二零 届) EXT2 文件系统跟踪程序的设计与实现 所在学院 专业班级 计算机科学与技术 学生姓名 学号 指导教师 职称 完成日期 年 月 I 摘要 : Linux操作系统是 20世纪 90年代推出的一个多用户任务操作系统,它与 UNIX兼容,有 UNIX最新的全部功能。 Linux操作系统功能强大、性能稳定、便于使用,其 最大的特点之一就是对很多种文件系统的支持,包括 ext, ext2,minix, ncp, xia, fat, hpfs, msdos, vfat, smb, affs 以及 ufs 等。其中 EXT2 文件系统是 Llinux 操作系统配
2、置的标准文件系统,其结构与 UNIX 的文件系统极为类似。本课题 在 Linux 环境下编写一个 EXT2 文件系统跟踪程序,实现 EXT2文件系统关键数据结构的显示任务:完成超级块数据结构每个字段信息的显示;显示每块组数据结构字段的信息;根据输入的路径显示指定目录下所有文件 的目录数据结构字段信息;根据输入的文件的 I节点号显示其 I节点数据结构字段信息。 关键词 : Linux 操作系统; EXT2文件系统;数据结构 II Design and Implementation of EXT2 File System Tracking Program Abstract: Linux opera
3、ting system is the 1990s the release of a multi-user task with UNIX operating system, and its latest compatibility, all of the functions of a UNIX. Linux operating system powerful, stable performance, easy to use, one of its biggest characteristic is to a variety of file system support, including th
4、e ext ext2, ncp, minix, fat, hpfs, msdos, vfat, smb, affs and ufs and so on. Among them EXT2 file system is Llinux operating system configuration of standard file systems, its structure and UNIX file system is extremely similar. This topic in Linux environment write a EXT2 file system tracking proce
5、dures EXT2 file system, realize the key data structure display task: complete super block of data structure every field information display; Show each set of data structure field information; According to the input pathway shows under the specified directory all documents directory data structure fi
6、eld information; According to the input file I node number shows its I node data structure field information. Keywords: Linux operating system; EXT2 file system; data structure 目录 1 绪论 . 1 1.1 课题研究背景 . 1 1.1.1 操作系统文件系统及其功能 . 1 1.1.2 Linux文件系统 . 3 1.1.3 Linux文件系统的发展与兴起 . 5 1.1.4 EXT2文件系统的构造 . 7 1.2 课
7、题研究的基本思想 . 8 1.3 课题研究的目的与意义 . 9 1.4 研究的方法与技术路线、研究难点,预期达到的目标 . 9 2 开发环境与开发工具 . 10 2.1 Red Hat 9.0简介 . 10 2.2 Gcc . 10 2.2.1 Gcc概括 . 10 2.2.2 基本规则 . 11 2.2.3 基本用法 . 11 2.3 Vi . 12 2.3.1 Vi编辑器的工作模式 . 12 2.3.2 进入插入模式 . 12 2.3.3 末行模式下的常用命令 . 12 3 系 统设计与实现 . 14 3.1 系统设计思想 . 14 3.2 系统实现 . 14 3.2.1 main()函数
8、 . 14 3.2.2 super()函数 . 16 3.2.3 show_group()函数 . 17 3.2.4 directory()函数 . 20 3.2.6 Makefile文件 . 24 3.3 运行结果 . 25 3.3.1 系统菜单显示 . 25 3.3.2 超级块数据结构显示 . 26 3.3.3 文件系统块位图显示 . 27 3.3.4 路径显示 . 28 3.3.5 文件内容显示 . 29 4 总结及展望 . 30 致 谢 . 错误 !未定义书签。 参考文献 . 31 1 1 绪论 1.1 课题研究背景 1.1.1 操作系统文件系统及其功能 在早期,对文件的管理和使用是相
9、当复杂和繁琐的,由于文件放在外存储器中,为了管理和使用文件,无论是系统还是用户都是十分熟悉外存的物理特性,并且需要记住外存空间的利用状况和文件在外存上的分布情况,还是知道文件在外存的物理地址。这对用户无疑是一个沉重的负担,也给系统带来了不安全因素。特别是在多道系统中,如果由用户直接管理和存取外存中的文件,必然出现不同用户之间外存区域的交叉访问,从而不能保证系统和用户的信息安全。所以,现代计算机系统都把设置了一个统一的公共信息管理机构,由它复负责管理外存的文件存储空间,提供文件在外存中的组织方式,以及控制文件的存取等。这样的机构就是操作系统中的文件管理系统,简称文件系统( file system
10、) 8。 因此文件系统的定义就是在 操作系统中负责管理和存储文件信息的软件机构。文件系统由三部分组成:与文件管理有关的软件、被管理的文件以及实施文件管理所需的数据结构。从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件的存储并对存入的文件进行保护和检索的 系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件 等。 不同的操作系统有着各自的不同的文件系统,如 windows、 ext2,、 minix、 sysv等。 文件系统是操作系统的重要组成部分,它为系统本身及计算机用户在管理和使用文件信息上的提供了极大地方便。对用户而言
11、,文件系统允许用户按自己的需要,按照文件系统的规则来定义文件结构和使用文件,面对系统,文件系统则将用户的需要转换成对文件的管理和控制操作。文件系统的功能主要有以下 4个方面。 ( 1)文件组织 2 文件 组织提供了文件信息的组织结构。面向用户,系统提供了用户组织文件信息的结构方式,称为文件的逻辑结构。用户可以按照流式文件的逻辑结构把文件信息看做是一个有序的数据流,也可以按照记录式文件的逻辑结构把信息组织成记录,以记录为单位管理文件的信息。 面向系统,根据存储设备的特点把文件信息按照一定的组织结构存放在外存空间,称为文件的物理组织。不同的物理组织方式形成了不同物理结构的文件:连续文件、链接文件和
12、索引文件,根据文件的物理组织,系统可以有效的分配和回收文件的存取空间,准确的确定文件的存放位置。 ( 2)文件存取 在需要处理文件必须把它从外存传送到内存空间的过程称为取文件;当文件处理完毕需要把它放回外存的过程称为存文件。文件系统提供了若干对文件的存取方法,主要有顺序存取、随机存取和直接存取。 ( 3)文件使用 文件系统对用户提供了文件操作的统一接口,它们是用户使用文件的界面,界面主要有两种:一是由用户通过命令来操作和管理文件,称为文件操作的命令界面;另一种则是在程序设计中使用操作系统提供的系统调用来使用文件,称为文件操作的程序界面。 ( 4)文件控制 从逻辑控制上,文件系统提供了对文件的访
13、问权限。用用户或用户组必须按照 访问权限使用文件。在物理控制上,系统设置了文件的保护级别和访问文件时的检查保护机制。与此同时,为了共享系统的信息资源,必须允许多个用户可以同时使用某些文件,文件系统要控制用户对共享文件的使用,包括不同用户对共享文件的访问权限和操作限制,记录共享某个文件的用户进程数目等。 综上所述,文件系统的功能如图 1-1所示。 3 1.1.2 Linux 文件系统 Linux操作系统 ,是一套自由使用 ( 一般可以免费使用)和自由传播的类 Unix 操作系统 。这个系统是由世界各 地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约、全世界都能自由使用的
14、 UNIX兼容产品。 其中 Linux文件系统继承了 UNIX的特点,它采用了树形目录结构,并把文件目录分解成目录和基本目录,有效的提高了文件搜索的速度。 Linux处理的文件种类十分的简单,它把设备视为文件,设备与文件使用统一的接口进行处理。 1.Linux文件系统的树形结构 Linux 文件系统采用了多级的树形层次结构。树形结构的最上层是根目录,用 /表示。在根目录之下的是各层目录和文件。系统在运行中可以通过使用命令或系 统调用进入任何一层目录,这时系统所处的目录称为当前目录。 Linux使用绝对路径和相对路径来表示文件或目录的位置。绝对路径是从根目录开始从上到下的依次指出各层目录的名字,
15、之间用” /”分隔。相对路径是从当前目录开始,指定其下层各个文件及目录。 Linux采用目录文件的形式管理目录,每一个目录是一个驻留在磁盘上的目录文件。 Linux采取了目录分解的方法管理文件目录。字树型目录中的目录项是文件的符号目录。它的基本目录是一个称为 i节点的结构体,称为 Inode 号。 Linux符号目录目录项只由两部分组成:文件名和 Inode 号。 4 文件系统中包括大量的文件,在对文件作各种处理中,必须找到文件的位置,所以文件检索式文件处理中十分频繁的操作,因此文件检索的速度就称为决定文件系统质量的主要因素。在检索文件中,主要是根据给定路径中各个分量的名字逐项与各级树型目录中
16、的目录项进行比较。所以,实际上文件检索的大量工作是进行名字的比较,只在找到名字相符的目录项后,才需要使用该目录或文件的管理信息。 2. Linux文件的类型 Linux 操作系统可以处理的文件种类十分简单,从文件本身的形态分为以下几种类型: ( 1)普通文件 普通文件是计算 机用户和操作系统用于存放数据、程序等信息的文件。 ( 2)目录文件 目录文件是是文件系统中一个目录所包含的目录项组成的文件。 ( 3)设备文件 设备文件时用于与 I/O 设备提供连接的一种文件,分为字符设备文件和块设备文件,分别对应于字符设备和块设备。 ( 4)管道文件 管道文件主要用于在进程间传递数据。 ( 5)链接文件
17、 链接文件实际上是不存在的,它仅是指向另一个实际存在的原始文件。 从对文件内容处理的角度,无论是哪种类型的文件, Linux 都把它们看做事无结构的流式文件,即把文件的内容看作是一系列有序的字符流 ,对文件的内容和结构是由应用程序进行解释的。 3. Linux文件系统的特点: ( 1)支持多种不同的文件系统 目前, Linux 支持的文件系统有: ext、 ext2、 ext3、 minix、 ncp、以及 ufs 等。每一种文件系统都代表整个系统结构的一部分,这种结构很灵活,使得不同的文件系统能够很好地共存。 ( 2)系统内核注册文件系统当作一个模块。通过 ker_neld 和 insmod
18、 命令向注册表登记它的类型。 向系统内核注册文件系统的类型有两种途径:一是在编译内核系统时确定的 ,并在系统初始时通过内嵌的函数调用向注 册表登记;二是利用 Linux 的模块的特点,把某个文件系统 ( 3)提供虚拟文件系统 在 EXT2 文件系统开发过程中,引入了一个非常重要的概念,即虚拟文件系统( VFS)。Linux 能支持各种文件系统是通过 VFS 来实现的。 Linux 的虚拟文件系统层允许同时透明地5 安装许多不同的文件系统。对 VFS 来说,它一方面要高速和高效地存取系统文件,另一方面还要保证文件和数据能够正确保存。 ( 4) 目录结构 Linux 操作系统中,文件系统的目录组织
19、是一个树形结构,从根节点到叶子称为文件的路径名,文件可以由其路径名惟一确定。 4.文件的访问权限 由于 linux 是一个多用户多进程操作系统,多个用户以及系统本身的文件都置于同一个系统中。为了保证文件信息的安全, linux 设置了文件保护机制,其中之一就是给不论哪种类型的文件都设置了一定的访问权限。当文件被访问时,系统首先检验访问者的权限,只有当访问者的权限与文件设置的访问权限相符时才允许对文件进行访问。 Linux 文件访问权限体现于两个方面:限定访问者的身份和限制对文件的操作。同时, linux 文件设置了三种针对访问者身份的权限:文件所有者、与文件所有者同组的用户、其它用户。在一个文
20、件的文件说 明中记录着允许访问该文件的文件所有者用户标识和用户组标识。 对文件的访问限制主要体现在对文件的 3 种操作上,即文件的读取、写入和执行。对这三种访问者的 3 种操作限制形成了 9 种情况,用 9 位二进制代码表示的话,如下所示: 这个 9 位二进制代码称为文件的访问的访问权限代码,其中每 3 位一组,一次表示所有者、同组用户和其它用户的读取、写入和执行的权限。 1.1.2 Linux 文件系统的发展与兴起 Linux 是一种类 Unix操作系统, 它最初是以 Minix为基础开发的,所以早期的 Linux引进的是 Minix文件系统 8。但是 Minix有 两个重要的限制:其文件名
21、最长不能超过 14 个字符且块地址最多只能存放 16 位整数( 2 个字节),因此最大的文件不超过 64MB。为了解决这些限制,并把它们加入新的 Linux内核中,于是提出 VFS(虚拟文件系统 )。 VFS最初是由 Chris Provenzano编写 ,然后被 Linus Torvalds的改写整合嵌入 Linux内核。 VFS使得 Linux可以支持多个不同的文件系统,每个表示一个 VFS 的通用接口。由于软件将 Linux 文件系统的所有细节进行了转换 ,所以 Linux核心的其它部分及系统中运行的程序将看到统一的文件系统。 Linux 的虚拟文件系统允许用户同时能透明地安装许多不同的文件系统。 在 VFS被加人内核,并于 1992年 4月开发出了第一个专门为 Linux设计的文件 系统被称为