您好,欢迎访问三七文档
重庆邮电大学研究生堂下考试答卷2010/2011学年第1学期考试科目Linux操作系统姓名谭鹏年级S110203048专业计算机应用技术2011年12月21日一个类Ext2文件系统的设计和实现I目录1实验内容....................................................................................................................11.1选题意义..........................................................................................................11.2实验内容..........................................................................................................11.3实验环境..........................................................................................................12Linux的EXT2文件系统..........................................................................................13Ext2文件系统设计思想...........................................................................................33.1总体功能设计...................................................................................................33.2实验技术路线..................................................................................................33.3数据结构设计..................................................................................................43.3.1启动区....................................................................................................43.3.2超级区....................................................................................................43.3.3inode表区...............................................................................................53.3.4目录数据结构........................................................................................53.4操作接口设计..................................................................................................64详细设计.....................................................................................................................74.1实验流程图......................................................................................................74.2文件与目录操作流程图..................................................................................75编译过程及编译结果...............................................................................................106运行及测试结果.......................................................................................................127实验总结..................................................................................................................14参考文献......................................................................................................................15附录..............................................................................................................................16一个类Ext2文件系统的设计和实现11实验内容1.1选题意义本实验要求通过模拟EXT2系统,设计并实现一个简化的文件系统,以了解操作系统组织和管理文件的方法和机制。要求:(1)掌握文件系统的工作机理;(2)理解文件系统的主要数据结构;(3)学会较为复杂的Linux系统下的编程。1.2实验内容构建一级(单用户)文件系统,该文件系统提供以下操作:文件创建/删除接口命令:create/del。目录创建/删除接口命令:mkdir/del。读/写文件命令:write/read显示目录内容命令:ls。切换目录命令:cd创建的文件不要求格式和内容。1.3实验环境硬件环境:x86体系结构个人计算机操作系统:LinuxUbuntu9.04编译器:GCC2Linux的EXT2文件系统在Linux中,普通文件和目录文件保存在称为“块物理设备”的磁盘或者磁带等存储介质上。一套Linux系统存贮在若干物理盘,每个物理盘可以定义一个或者多个文件系统。每个文件系统均由逻辑块的序列组成。一般来说,一个逻辑盘可以划分为几个用途各不相同的部分:引导块﹑超级块﹑inode区以及数据区。一个类Ext2文件系统的设计和实现2Linux使用一种叫虚拟文件系统的技术,从而可以支持多达几十种的不同文件系统,而EXT2是Linux自己的文件系统。他有几个重要的数据结构:超级块﹑inode(索引节点)﹑组描述符﹑块位图﹑inode位图等。其中最重要的一个是超级块,用来描述目录和文件在磁盘上的物理位置﹑文件大小和结构等信息。另一个是inode,文件系统中的每个目录和文件均由一个inode描述。它包含文件模式(类型和存取权限)﹑数据块位置等信息。1.组描述符EXT2文件系统将它所占用的逻辑分区划分成块组(blockgroup),如图2-1所示:图2-1EXT2文件系统结构图1)超级块和组描述符每个块组中保存着关于文件系统的备份信息(比如超级块和所有组描述符)。在某个组的超级块或者inode受损时,可以用来恢复系统。2)块位图(blockbitmap)记录本组内各个数据块的使用情况,其中每一位对应于一个数据块,0表示空闲;非0表示已经分配。3)Inode位图(inodebitmap)记录inode表中inode的使用情况。4)Inode表(inodetable)保存本组所有的inode。EXT2文件系统使用inode描述文件。一个inode对应于一个文件,而目录属于一种特殊的文件。每个inode对应于一个唯一的inode号。Inode包含了文件内容﹑在磁盘上的位置﹑文件的存取权限﹑修改时间以及类型的文件描述信息。5)数据块(datablock)真正的文件数据区。在EXT2文件系统当中所有的数据块长度是一样的,数据块是系统为文件分配存储空间的单位。组0组1组2…组N超级块组描述符表块位图inode位图inode表数据块一个类Ext2文件系统的设计和实现32.超级块超级块主要用来描述目录和文件在磁盘上的静态分布,包括大小和结构。超级块对于文件系统的维护至关重要。它的数据结构位于include/Linux/ext2_fs.h中。一般地,只有块组号为0的超级块才读入内存,其他块组的超级块仅仅作为备份。3.inodeinode是EXT2的基本组成部分。文件系统的每个文件(目录被看成文件)由一个inode描述。属于同一块组的inode保存在同一个inode表中,与该组的inode位图一一对应。Linux关于inode数据结构的描述位于include/Linux/ext2_fs.h中。3Ext2文件系统设计思想3.1总体功能设计通过对此磁盘文件进行操作,以模仿真实文件系统的运作机制,能够对文件及目录进行新建、读写、删除和查询等操作;总体模块图,如图3-1所示。EXT2文件系统创建文件或目录查询文件或目录读写文件或目录删除文件或目录图3-1EXT2文件系统模块图3.2实验技术路线首先程序会在磁盘中检查是否存在指定的磁盘文件,如果存在,则表明在程序运行之前已经存在文件系统,程序将不对文件进行格式化,如果未找到磁盘文件,程序将询问用户是否法要对文件进行格式化操作,并建立新的磁盘文件。磁盘格式化时,按照操作系统原理中所介绍的文件系统结构,首先,向文件中写入一个类Ext2文件系统的设计和实现4super块,以对整个文件系统进行控制,该块的数据结构定义为filesys结构,其中包含的主要信息主要有整个系统的原始资源信息,当前使用信息,资源剩余信息以及缓存等等。随后写入的block的映射表,用一个拥有1024个元素的字符型数组表示,每一个元素与一个相应位置的block块一一对应,当block块空闲时,对应元素值为0,非空闲状态时元素值为1。文件系统管理部分,最后存储了所有inode节点的管理信息,在这里文件系统可以对所有文件、文件夹、inode以及block进行管理,以形成逻辑上目录和文件等概念。3.3数据结构设计根据EXT2文件系统的原理,磁盘分为启动区,超级区,inode表区,数据区。如图3-2所示;BootblockSuperblockInodetableDatablock图3-2磁盘分区3.3.1启动区启动区,在这个模拟实验中没有多大的涉及到。只是简单的把他的长度写在结构体中。以供以后扩展使用。数据结构定义:structbootblock{intbootblock_size;//超级块的大小512B};3.3.2超级区超级区,存储的是文件系统的重要内容,包括系统可用空间、系统大小、已用记录、未用记录等等。数据结构定义:typedefstructfilesys//super_block{intfilesys_size;//文件系统大小intfree_size;//可用空间一个类Ext2文件系统的设计和实现5charblock_free_arr[ARR_FREE_BLOCK
本文标题:操作系统实验报告
链接地址:https://www.777doc.com/doc-1793733 .html