EXT2文件系统跟踪程序的设计与实现全套毕业作品.docx

上传人:b****6 文档编号:7487286 上传时间:2023-01-24 格式:DOCX 页数:39 大小:571.84KB
下载 相关 举报
EXT2文件系统跟踪程序的设计与实现全套毕业作品.docx_第1页
第1页 / 共39页
EXT2文件系统跟踪程序的设计与实现全套毕业作品.docx_第2页
第2页 / 共39页
EXT2文件系统跟踪程序的设计与实现全套毕业作品.docx_第3页
第3页 / 共39页
EXT2文件系统跟踪程序的设计与实现全套毕业作品.docx_第4页
第4页 / 共39页
EXT2文件系统跟踪程序的设计与实现全套毕业作品.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

EXT2文件系统跟踪程序的设计与实现全套毕业作品.docx

《EXT2文件系统跟踪程序的设计与实现全套毕业作品.docx》由会员分享,可在线阅读,更多相关《EXT2文件系统跟踪程序的设计与实现全套毕业作品.docx(39页珍藏版)》请在冰豆网上搜索。

EXT2文件系统跟踪程序的设计与实现全套毕业作品.docx

EXT2文件系统跟踪程序的设计与实现全套毕业作品

 

BIYESHEJI

(二零届)

EXT2文件系统跟踪程序的设计与实现

所在学院

专业班级计算机科学与技术

学生姓名学号

指导教师职称

完成日期年月

摘要:

Linux操作系统是20世纪90年代推出的一个多用户任务操作系统,它与UNIX兼容,有UNIX最新的全部功能。

Linux操作系统功能强大、性能稳定、便于使用,其最大的特点之一就是对很多种文件系统的支持,包括ext,ext2,minix,ncp,xia,fat,hpfs,msdos,vfat,smb,affs以及ufs等。

其中EXT2文件系统是Llinux操作系统配置的标准文件系统,其结构与UNIX的文件系统极为类似。

本课题在Linux环境下编写一个EXT2文件系统跟踪程序,实现EXT2文件系统关键数据结构的显示任务:

完成超级块数据结构每个字段信息的显示;显示每块组数据结构字段的信息;根据输入的路径显示指定目录下所有文件的目录数据结构字段信息;根据输入的文件的I节点号显示其I节点数据结构字段信息。

关键词:

Linux操作系统;EXT2文件系统;数据结构

 

DesignandImplementationof

EXT2FileSystemTrackingProgram

Abstract:

Linuxoperatingsystemisthe1990sthereleaseofamulti-usertaskwithUNIXoperatingsystem,anditslatestcompatibility,allofthefunctionsofaUNIX.Linuxoperatingsystempowerful,stableperformance,easytouse,oneofitsbiggestcharacteristicistoavarietyoffilesystemsupport,includingtheextext2,ncp,minix,fat,hpfs,msdos,vfat,smb,affsandufsandsoon.AmongthemEXT2filesystemisLlinuxoperatingsystemconfigurationofstandardfilesystems,itsstructureandUNIXfilesystemisextremelysimilar.ThistopicinLinuxenvironmentwriteaEXT2filesystemtrackingproceduresEXT2filesystem,realizethekeydatastructuredisplaytask:

completesuperblockofdatastructureeveryfieldinformationdisplay;Showeachsetofdatastructurefieldinformation;Accordingtotheinputpathwayshowsunderthespecifieddirectoryalldocumentsdirectorydatastructurefieldinformation;AccordingtotheinputfileInodenumbershowsitsInodedatastructurefieldinformation.

Keywords:

Linuxoperatingsystem;EXT2filesystem;datastructure

 

1绪论

1.1课题研究背景

1.1.1操作系统文件系统及其功能

在早期,对文件的管理和使用是相当复杂和繁琐的,由于文件放在外存储器中,为了管理和使用文件,无论是系统还是用户都是十分熟悉外存的物理特性,并且需要记住外存空间的利用状况和文件在外存上的分布情况,还是知道文件在外存的物理地址。

这对用户无疑是一个沉重的负担,也给系统带来了不安全因素。

特别是在多道系统中,如果由用户直接管理和存取外存中的文件,必然出现不同用户之间外存区域的交叉访问,从而不能保证系统和用户的信息安全。

所以,现代计算机系统都把设置了一个统一的公共信息管理机构,由它复负责管理外存的文件存储空间,提供文件在外存中的组织方式,以及控制文件的存取等。

这样的机构就是操作系统中的文件管理系统,简称文件系统(filesystem)[8]。

因此文件系统的定义就是在操作系统中负责管理和存储文件信息的软件机构。

文件系统由三部分组成:

与文件管理有关的软件、被管理的文件以及实施文件管理所需的数据结构。

从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件的存储并对存入的文件进行保护和检索的系统。

具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。

不同的操作系统有着各自的不同的文件系统,如windows、ext2,、minix、sysv等。

文件系统是操作系统的重要组成部分,它为系统本身及计算机用户在管理和使用文件信息上的提供了极大地方便。

对用户而言,文件系统允许用户按自己的需要,按照文件系统的规则来定义文件结构和使用文件,面对系统,文件系统则将用户的需要转换成对文件的管理和控制操作。

文件系统的功能主要有以下4个方面。

(1)文件组织

文件组织提供了文件信息的组织结构。

面向用户,系统提供了用户组织文件信息的结构方式,称为文件的逻辑结构。

用户可以按照流式文件的逻辑结构把文件信息看做是一个有序的数据流,也可以按照记录式文件的逻辑结构把信息组织成记录,以记录为单位管理文件的信息。

面向系统,根据存储设备的特点把文件信息按照一定的组织结构存放在外存空间,称为文件的物理组织。

不同的物理组织方式形成了不同物理结构的文件:

连续文件、链接文件和索引文件,根据文件的物理组织,系统可以有效的分配和回收文件的存取空间,准确的确定文件的存放位置。

(2)文件存取

在需要处理文件必须把它从外存传送到内存空间的过程称为取文件;当文件处理完毕需要把它放回外存的过程称为存文件。

文件系统提供了若干对文件的存取方法,主要有顺序存取、随机存取和直接存取。

(3)文件使用

文件系统对用户提供了文件操作的统一接口,它们是用户使用文件的界面,界面主要有两种:

一是由用户通过命令来操作和管理文件,称为文件操作的命令界面;另一种则是在程序设计中使用操作系统提供的系统调用来使用文件,称为文件操作的程序界面。

(4)文件控制

从逻辑控制上,文件系统提供了对文件的访问权限。

用用户或用户组必须按照访问权限使用文件。

在物理控制上,系统设置了文件的保护级别和访问文件时的检查保护机制。

与此同时,为了共享系统的信息资源,必须允许多个用户可以同时使用某些文件,文件系统要控制用户对共享文件的使用,包括不同用户对共享文件的访问权限和操作限制,记录共享某个文件的用户进程数目等。

综上所述,文件系统的功能如图1-1所示。

1.1.2Linux文件系统

Linux操作系统,是一套自由使用(一般可以免费使用)和自由传播的类Unix操作系统。

这个系统是由世界各地的成千上万的程序员设计和实现的。

其目的是建立不受任何商品化软件的版权制约、全世界都能自由使用的UNIX兼容产品。

其中Linux文件系统继承了UNIX的特点,它采用了树形目录结构,并把文件目录分解成目录和基本目录,有效的提高了文件搜索的速度。

Linux处理的文件种类十分的简单,它把设备视为文件,设备与文件使用统一的接口进行处理。

1.Linux文件系统的树形结构

Linux文件系统采用了多级的树形层次结构。

树形结构的最上层是根目录,用/表示。

在根目录之下的是各层目录和文件。

系统在运行中可以通过使用命令或系统调用进入任何一层目录,这时系统所处的目录称为当前目录。

Linux使用绝对路径和相对路径来表示文件或目录的位置。

绝对路径是从根目录开始从上到下的依次指出各层目录的名字,之间用”/”分隔。

相对路径是从当前目录开始,指定其下层各个文件及目录。

Linux采用目录文件的形式管理目录,每一个目录是一个驻留在磁盘上的目录文件。

Linux采取了目录分解的方法管理文件目录。

字树型目录中的目录项是文件的符号目录。

它的基本目录是一个称为i节点的结构体,称为Inode号。

Linux符号目录目录项只由两部分组成:

文件名和Inode号。

文件系统中包括大量的文件,在对文件作各种处理中,必须找到文件的位置,所以文件检索式文件处理中十分频繁的操作,因此文件检索的速度就称为决定文件系统质量的主要因素。

在检索文件中,主要是根据给定路径中各个分量的名字逐项与各级树型目录中的目录项进行比较。

所以,实际上文件检索的大量工作是进行名字的比较,只在找到名字相符的目录项后,才需要使用该目录或文件的管理信息。

2.Linux文件的类型

Linux操作系统可以处理的文件种类十分简单,从文件本身的形态分为以下几种类型:

(1)普通文件

普通文件是计算机用户和操作系统用于存放数据、程序等信息的文件。

(2)目录文件

目录文件是是文件系统中一个目录所包含的目录项组成的文件。

(3)设备文件

设备文件时用于与I/O设备提供连接的一种文件,分为字符设备文件和块设备文件,分别对应于字符设备和块设备。

(4)管道文件

管道文件主要用于在进程间传递数据。

(5)链接文件

链接文件实际上是不存在的,它仅是指向另一个实际存在的原始文件。

从对文件内容处理的角度,无论是哪种类型的文件,Linux都把它们看做事无结构的流式文件,即把文件的内容看作是一系列有序的字符流,对文件的内容和结构是由应用程序进行解释的。

3.Linux文件系统的特点:

(1)支持多种不同的文件系统

目前,Linux支持的文件系统有:

ext、ext2、ext3、minix、ncp、以及ufs等。

每一种文件系统都代表整个系统结构的一部分,这种结构很灵活,使得不同的文件系统能够很好地共存。

(2)系统内核注册文件系统当作一个模块。

通过ker_neld和insmod命令向注册表登记它的类型。

向系统内核注册文件系统的类型有两种途径:

一是在编译内核系统时确定的,并在系统初始时通过内嵌的函数调用向注册表登记;二是利用Linux的模块的特点,把某个文件系统

(3)提供虚拟文件系统

在EXT2文件系统开发过程中,引入了一个非常重要的概念,即虚拟文件系统(VFS)。

Linux能支持各种文件系统是通过VFS来实现的。

Linux的虚拟文件系统层允许同时透明地安装许多不同的文件系统。

对VFS来说,它一方面要高速和高效地存取系统文件,另一方面还要保证文件和数据能够正确保存。

(4)目录结构

Linux操作系统中,文件系统的目录组织是一个树形结构,从根节点到叶子称为文件的路径名,文件可以由其路径名惟一确定。

4.文件的访问权限

由于linux是一个多用户多进程操作系统,多个用户以及系统本身的文件都置于同一个系统中。

为了保证文件信息的安全,linux设置了文件保护机制,其中之一就是给不论哪种类型的文件都设置了一定的访问权限。

当文件被访问时,系统首先检验访问者的权限,只有当访问者的权限与文件设置的访问权限相符时才允许对文件进行访问。

Linux文件访问权限体现于两个方面:

限定访问者的身份和限制对文件的操作。

同时,linux文件设置了三种针对访问者身份的权限:

文件所有者、与文件所有者同组的用户、其它用户。

在一个文件的文件说明中记录着允许访问该文件的文件所有者用户标识和用户组标识。

对文件的访问限制主要体现在对文件的3种操作上,即文件的读取、写入和执行。

对这三种访问者的3种操作限制形成了9种情况,用9位二进制代码表示的话,如下所示:

这个9位二进制代码称为文件的访问的访问权限代码,其中每3位一组,一次表示所有者、同组用户和其它用户的读取、写入和执行的权限。

1.1.2Linux文件系统的发展与兴起

Linux是一种类Unix操作系统,它最初是以Minix为基础开发的,所以早期的Linux引进的是Minix文件系统[8]。

但是Minix有两个重要的限制:

其文件名最长不能超过14个字符且块地址最多只能存放16位整数(2个字节),因此最大的文件不超过64MB。

为了解决这些限制,并把它们加入新的Linux内核中,于是提出VFS(虚拟文件系统)。

VFS最初是由ChrisProvenzano编写,然后被LinusTorvalds的改写整合嵌入Linux内核。

VFS使得Linux可以支持多个不同的文件系统,每个表示一个VFS的通用接口。

由于软件将Linux文件系统的所有细节进行了转换,所以Linux核心的其它部分及系统中运行的程序将看到统一的文件系统。

Linux的虚拟文件系统允许用户同时能透明地安装许多不同的文件系统。

在VFS被加人内核,并于1992年4月开发出了第一个专门为Linux设计的文件系统被称为扩展文件系统(ExtendedFileSystem)或EXT,被正式加入到Linux0.96c版本中[8]。

在性能上比Minix有了较大的提高,解除了Minix的两个大的限制,如文件名最多可以使用256个字符,文件最大长度可达2GB[8],但是EXT文件系统仍存在不少的问题,如处理速度不如Minix,不支持数据时间戳的修改等问题。

这一文件系统使用链接表来追踪空闲块和空闲的inode,这也使此文件系统产生了一些负面影响:

一旦此文件系统被使用过,这些链接表就会变得混乱,而且文件系统也变得支离破碎。

对于上述问题,1993年1月的alpha版本中出现了两个新的文件系统——XIA文件系统和第二代扩展文件系统(EXT2)。

XIA文件系统主要基于MINIX文件系统内核代码,在之前的文件系统上增加了一些新的改进。

它基本上提供了长文件名、支持大磁盘和3个时间戳的特性。

EXT2文件系统在EXT文件系统的基础上,进行代码重组和许多改进[13]。

它在思想上进行了前所未有的演变,并为以后的改进留下很大的空间。

当这两文件系统首次发布时,它们的特点基本上一样。

但XIA文件系统在设计时着重于小型化,因此XIA文件系统比EXT2文件系统更稳定。

但是随着文件系统被广泛使用,EXT2文件系统逐渐地修复了一些BUG,越来越多的新功能也被添加上去了,集成了一些新的特性。

现在EXT2文件系统已经非常稳定,并成为Linux操作系统的标准文件系统。

EXT2在速度和CPU利用率上较为突出,既可以用于标准的块设备,也可应用在软盘等移动存储器上。

EXT2是GNU/Linux系统中标准的文件系统。

它存取文件的性能极好,对于中、小型的文件更显示出优势。

EXT2可以坚持256B的长文件名,其单一文件大小和文件系统本身的容量上限与文件系统本身的簇大小有关。

但是,EXT2也存在一些问题。

由于它的设计者主要考虑的是文件系统性能方面的问题,而在写入文件内容的同时,并没有写入文件的meta-data(和文件有关的信息,例如权限、所有者、创造和访问时间)[10]。

随着Linux系统的不断发展,所支持的文件系统也在迅速扩充,特别是Linux2.4内核正式的推出,出现了大量的文件系统[8]。

在2001年之前,EXT2一直是Linux的标准文件系统。

之后,选择就比较多了:

兼容EXT2的EXT3,ReiserFS。

SGI公司移植到Linux的XFS文件系统,IBM开发的JFS。

鉴于种种原因,从RedHatLinux7.2发布版本开始,Linux默认的文件系统为EXT3文件系统。

EXT3直接从EXT2文件系统发展而来,它不仅继承了EXT2的全部优点,还在可用性、完整性、速度和易于迁移四个方面表现突出。

EXT3还采用了日志技术,在系统突然发生故障的情况下,可以大大提高文件系统的可靠性。

而EXT3最大的缺点是没有现代文件系统所具有的能提高文件数据处理速度和解压的高性能,另外使用EXT3文件系统时要注意硬盘限额问题[9]。

于是便催生了EXT4。

EXT4在性能、伸缩性和可靠性方面进行了大量的改进,并引用了很多新的技术(如:

使用区段(EXTENT)来管理块和块管理相关的特性——延迟分配技术等),还改进了对大文件的访问效率,在使用4KB大小的数据块时,EXT4可以支持的最大文件系统为1EB。

2.6.28内核发布时,ext4结束了开发版,开始接受用户的使用。

似乎ext4就将成为Linux文件系统的代名词。

然而当您阅读很多有关ext4的文章时,会发现都不约而同地提到了Btrfs,并认为ext4将是一个过渡的文件系统。

ext4的作者TheodoreTso也盛赞Btrfs并认为Btrfs将成为下一代Linux标准文件系统。

Oracle,IBM,Intel等厂商也对Btrfs表现出了极大的关注,投入了资金和人力。

在KevinBowling看来,ext2/3等文件系统属于”古典时期”。

文件系统的新时代是2005年由Sun公司的ZFS开创的。

ZFS代表”lastwordinfilesystem”,意思是此后再也不需要开发其他的文件系统了。

ZFS的确带来了很多崭新的观念,对文件系统来讲是一个划时代的作品。

如果比较Btrfs的特性,将会发现Btrfs和ZFS非常类似。

也许我们可以认为Btrfs就是Linux社区对ZFS所作出的回应。

从此往后在Linux中也终于有了一个可以和ZFS相媲美的文件系统。

Linux文件系统从诞生到现在,在不到半个世纪的时间里,已形成了坚实的理论基础广泛的应用领域,吸引越来越多的研究者加入。

EXT扩展文件系统是一个专门为Linux设计的文件系统,从Ext1发展到Ext4。

并在实践应用中充分证明了它是一个设计合理、性能稳定、功能强大的文件系统,值得我们不断地去学习和研究应用。

1.1.3EXT2文件系统的构造

在ext2文件系统中,文件由inode(包含文件的所有信息)进行唯一标识。

一个文件可能对应多个文件名,只有在所有文件名都被删除后,该文件才会被删除。

此外,同一文件在磁盘中存放和被打开时所对应的inode是不同的,并由内核负责同步。

ext2文件系统采用三级间接块来存储数据块指针,并以块(block,默认为1KB)为单位分配空间[14]。

其磁盘分配策略是尽可能将逻辑相邻的文件分配到磁盘上物理相邻的块中,并尽可能将碎片分配给尽量少的文件,以从全局上提高性能。

ext2文件系统将同一目录下的文件(包括目录)尽可能的放在同一个块组中,但目录则分布在各个块组中以实现负载均衡。

在扩展文件时,会尽量一次性扩展8个连续块给文件(以预留空间的形式实现)。

1.磁盘组织

  在ext2系统中,所有元数据结构的大小均基于”块”,而不是”扇区”。

块的大小随文件系统的大小而有所不同。

而一定数量的块又组成一个块组,每个块组的起始部分有多种多样的描述该块组各种属性的元数据结构。

ext2文件系统中对各个结构的定义都包含在原始的include/linux/ext2_fs.h文件中。

  

(1)超级块[8]

  每个ext2文件系统都必须包含一个超级块,其中存储了该文件系统的大量基本信息,包括块的大小、每块组中包含的块数等。

同时,系统会对超级块进行备份,备份被存放在块组的第一个块中。

超级块的起始位置为其所在分区的第1024个字节,占用1KB的空间。

 

(2)块组描述符

  一个块组描述符用来描述一个块组的属性。

块组描述符组由若干块组描述符组成,描述了文件系统中所有块组的属性,存放于终极块所在块的下一个块中。

 (3)块位图和inode位图

  块位图和inode位图的每一位分别指出块组中对应的那个块或inode是否被使用。

 (4)inode表

  inode表用于跟踪定位每个文件,包括位置、大小等(但不包括文件名),一个块组只有一个inode表。

 (5)数据块

数据块中存放文件的内容,包括目录表、扩展属性、符号链接等。

2.目录结构

在ext2文件系统中,目录是作为文件存储的。

根目录总是在inode表的第二项,而其子目录则在根目录文件的内容中定义。

 3.文件扩展属性

  文件的属性大多数是位于该文件的inode结构中的标准属性,也还包含其他一些扩展属性(与系统中所有的inode相关,通常用于增加额外的功能)。

inode的i_file_acl字段中保存扩展属性的块的块号。

属性头部项位于属性块的起始位置,其后为属性入口项,而属性值能根据属性入口项找到所在位置。

1.2课题研究的基本思想

Linux系统的最大特点之一是对多种文件系统的支持,EXT2文件系统是Linux系统配置的标准文件系统,其结构与UNIX的文件系统类似。

在Linux环境下编写一个EXT2文件系统跟踪程序,实现EXT2文件系统关键数据结构的显示任务:

1.完成超级块数据结构每个字段信息的显示;

2.显示每块组数据结构字段的信息;

3.根据输入的路径显示指定目录下所有文件的目录数据结构字段信息;

4.根据输入的文件的I节点号显示其I节点数据结构字段信息。

显示的主要信息包括:

1.超级块信息;

2.块组信息;

3.块位图和I节点位图的信息;

4.目录信息;

5.I节点信息;

6.文件内容。

1.3课题研究的目的与意义

Linux文件系统从诞生到现在,在不到半个世纪的时间里,已形成了坚实的理论基础广泛的应用领域,吸引越来越多的研究者加入。

EXT扩展文件系统是一个专门为Linux设计的文件系统,从Ext1发展到Ext4。

并在实践应用中充分证明了它是一个设计合理、性能稳定、功能强大的文件系统,值得我们不断地去学习和研究应用。

通过编写简单的EXT2文件系统跟踪程序,加深对Linux文件系统的认识,进一步学习EXT2文件系统的关键数据结构构成和操作,进而更加熟练的掌握并运用Linux操作系统。

1.4研究的方法与技术路线、研究难点,预期达到的目标

1.研究的方法与技术路线:

熟悉Linux操作系统下的C语言高级编程,了解Linux操作系统的shell执行方式,熟练运用C语言对字符串进行处理。

学习并掌握LinuxC语言系统库函数的用法,熟练运用某些库函数来完成本文件跟踪系统的设计。

2.研究难点:

Ext2文件系统结构的掌握。

3.预期目标:

在RedHatLinux操作系统下,设计并实现一个简单的EXT2文件系统跟踪程序,实现EXT2文件系统关键数据结构的显示任务等功能,能识别并提示错误的命令,同时具有一定的安全机制,并初步达到实用的水平。

 

2开发环境与开发工具

2.1RedHat9.0简介

对于RedHat来说,开放源代码已经不只是一个软件模型,这正是RedHat的商业模式。

因为RedHat坚信只有协作,企业才能创造出非凡质量和价值的产品。

在RedHat的300名工程师中,有6名来自于全世界最顶尖的10名Linux核心开发者,7名来自全球最出色10名Linux开发工具工程师。

全世界,也许只有RedHat能够把Linux和开源技术以及企业级的培训、技术支持和咨询融合得如此美妙。

RedHat的培训及认证被认为是Linux认证的标准。

Certification杂志的最新调查显示,RHCE(RedHat认证工程师)认证被公认为总体质量最高的国

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1