好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

实验五磁盘文件操作.docx

11页
  • 卖家[上传人]:闪****
  • 文档编号:289811798
  • 上传时间:2022-05-08
  • 文档格式:DOCX
  • 文档大小:20.73KB
  • / 11 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 本文格式为Word版,下载可任意编辑实验五 磁盘文件操作 测验五 磁盘文件操作 一、测验目的 深入了解磁盘文件系统的实现 二、测验预备学识 文件的操作; 文件的规律布局和物理布局; 磁盘空间的管理; 磁盘目次布局 三、测验内容 设计一个简朴的文件系统,用文件模拟磁盘,用数组模拟缓冲区,要求实现: 支持多级目次布局,支持文件的十足读路径; 文件的规律布局采用流式布局,物理布局采用链接布局中的显示链接方式; 采用文件调配表; 实现的命令包括建立目次、列目次、删除空目次、建立文件、删除文件、显示文件内容、开启文件、读文件、写文件(追加方式)、关闭文件、变更文件属性 结果编写主函数对所做工作举行测试 四、提示与讲解 为了正确地实现文件的存取,文件系统设计了一组与存取文件有关的功能模块,用户可以用“访管指令”调用这些功能模块,以实现文件的存取要求我们把文件系统设计的这一组功能模块称为“文件操作”,测验就是要模拟实现一些文件操作文件操作不是独立的,它和文件系统的其他片面紧密相关,若要实现文件操作就离不开文件的目次布局、文件的组织布局和磁盘空间的管理。

      因此,这个测验虽然是文件操作的模拟实现,但是还务必模拟一片面文件的组织布局、目次布局和磁盘空间管理的实现 (1)文件的组织布局 文件的规律布局有两种形式:流式文件和记录式文件测验中只支持流式文件,采用称为显示链接的物理文件布局,把磁盘中每一块的指针片面提出来,组织在一起,形成文件调配表(FAT)文件调配表的作用不仅如此,其他的作用下面将提到 磁盘有多少块,文件调配表就有多少项,若某文件的一个磁盘块号为i,那么这个文件的下一个磁盘的块号理应记录在文件调配表第i项例如,某系统文件调配表前几项值如图10所示某个文件的起始盘块号为3,那么该文件的磁盘块号依次为3、4、9、12、13 第几项 内容 0 -1 1 -1 2 -1 3 4 4 9 5 0 6 7 7 8 8 -1 9 12 10 11 11 -1 12 13 13 -1 14 0 15 0 … 图10 某磁盘文件调配表片面内容 (2)磁盘空间的管理 首先要模拟一个磁盘由于是测验,不使用真正的磁盘,所以测验中用一个文件模拟一个小磁盘假设模拟磁盘有128个物理块,每个物理块大小为64字节盘块的块号从0编起,0,1,2,3??,127。

      将前面所讲的文件调配表放在磁盘的开头处,由于盘块有128块,所以文件调配表有 128项,每项占用一个字节这样文件调配表占用了磁盘的0块和1块,这两块就不能作其他用处若一个盘块是某个文件的结果一块,填写“-1”表示文件终止 文件的建立和删除就需要对磁盘的空间举行调配和回收,所以要建立确定的数据表格来记录磁盘的使用处境用文件调配表的第i项表示第i个盘块的使用处境磁盘的第0块确定会被系统数据占用,所以任何一个文件的某个盘块块号都不成能是“0”,因而还可以用“0”表示磁盘盘块空闲,若这个盘块已经调配出去,即是某个文件的一块,由上面我们知道文件调配表中对应项记录的是文件下一块的块号或终止标志都不是“0”这样非“0”值表示盘块已分像前面图10那张文件调配表中,块号为5、14和15的盘块是空闲的,其余是已调配的在文件调配表中可以用一个超过盘块编号的正整数表示文件终止,在此测验中采用255代替-1表示文件终止 假设磁盘中某些片面损坏,只要不是系统区(引导扇区、文件调配表或根目次等),不调配那些坏的盘块,磁盘可以持续使用在文件调配表对应坏盘块的项不能是“0”,一般也需要特定的数值表示(这个数值理应是盘块编号以外并且不是终止标志的数值,例如,测验中128~254之间的数值)。

      假设测验中模拟磁盘的第13块和第49块已经损坏,不能使用,那么在文件调配表的第13项和第49项写入“254”表示该盘块损坏不能使用 由于磁盘调配时,有时不能预定文件的大小,例如建立文件时并不知道文件的大小因而磁盘的调配有时是一块一块申请的磁盘空间回收时,整个文件删除时回收好多块,但有时文件修改时可能会删除某些内容,造成归还磁盘块,这时是一块一块回收的这里给出申请一块磁盘空间的流程图,若调配多块时,循环屡屡即可调配一个磁盘块时,不理应从文件调配表第一项查起,由于磁盘中最开头的几块为系统数据区(引导扇区、文件调配表、根目次等占用),所以理应从这之后的可调配数据区开头查询假定系统区域占用了x个盘块,调配一个磁盘块的流程如图11所示回收一个磁盘块的流程图很简朴,譬如回收磁盘块的块号为x,只要找到文件调配表中第x项,将第x项的值改为0即可 开头找到文件调配表第x项,i=xY第i项值是否为0?i=i+1NN第i项是否为结果一项?Y磁盘满,调配失败调配第i块终止 图11 调配一个磁盘块的流程图 (3)目次布局 文件目次是用于检索文件的,它是文件系统实现按名存取的主要手段文件目次由若干目次项组成,每一个目次记录一个文件的有关信息。

      一般地说,目次项理应包括如下内容: ① 有关文件的操纵信息例如,用户名、文件名、文件类型、文件属性测验模拟个人计算机上的文件操作,这片面内容仅包括文件名、文件类型和属性; ② 有关文件布局的信息例如,文件的规律布局、文件的物理布局、记录个数、文件在存储介质的位置等测验中,仅仅支持流式文件,不支持记录式文件,所以这片面内容仅仅包括文件在存储介质的位置(分给文件第一个盘块的块号,即起始盘块号)、文件的长度; ③ 有关文件管理的信息例如,文件的建立日期、文件被修改的日期、文件留存期限和记帐信息等测验中为了简朴起见,这片面内容都不采用 因此,测验中文件的目次项包括:文件名、文件类型、文件属性、文件的起始盘块号、文件的长度,每个目次项占用8个字节,概括布局如下所示: 文件名:3个字节(测验中合法文件名仅可以使用字母、数字和除“$”、“.”和“/”以外的字符,第一个字节的值为“$”时表示该目次为空目次项,文件名和类型名之间用“.”分隔,用“/”作为路径名中目次间分隔符); 文件类型名:2个字节; 文件属性:1字节; 起始盘块号:1个字节; 文件长度:1个字节(为了测验的简朴,文件长度单位为盘块)。

      有了文件目次后,当用户要求使用某个文件时,文件系统可以依次查找目次项,并对比文件名,就可以找到指定文件的目次项,根据目次项中有关内容核对使用权限、并读出文件供用户使用因此文件目次的组织和管理要便于检索和防止冲突 在操作系统中目次就有根目次和子目次两种目次除了文件需要登记形成目次外,还要登记子目次的处境测验中,根目次固定位置、固定大小(可以登记有限个文件或子目次项),子目次像文件一样,可使用任何一个空闲磁盘块为了测验简朴,测验中根目次占用了一个盘块,子目次的长度没有采用可以任意长的方法,而是采用了定长的方法,每个子目次的长度也是一个盘块,只能放8个目次项文件和目次的登记项是混在一起的,登记项的布局理应和文件目次一样,每个目次项占用8个字节,布局如下: 目次名:3个字节(测验中合法文件名仅可以使用字母、数字和除“$”、“.”、“/”以外的字符,第一个字节的值为“$”时表示该目次为空目次); 未使用2字节(在测验中填写空格); 目次属性:1字节; 起始盘块号:1个字节; 未使用1字节(在测验中填写“0”) 在目次登记项中,系统为目次名后2个字节(对应文件类型名位置)填写空格,目次起始盘块号后1字节(对应文件长度位置)填写0。

      目次属性和文件属性占用同一个字节,为了识别目次和文件,该字节每一位代表不同的含义(为“1”表示“是”,为“0”表示“否”),如图12所示,第0位表示文件为只读文件,第1位表示文件为系统文件,第2位表示文件为一般可读、可写的普遍文件,第3位表示该登记项不是文件的登记项,而是目次的登记项,其余几位闲置未用如该字节为8(8=(00001000)2)表示该目次是一个目次的登记项,该字节为3(3=(00000011)2)表示该目次是一个只读系统文件的登记项,该字节为(4=(00000100)2)表示该目次是一个可读可写的普遍文件 第7位 第6位 第5位 第4位 第3位 第2位 第1位 第0位 未使用 未使用 未使用 未使用 目次属性 普遍文件 系统文件 只读文件 图12 属性字节各位作用示意图 目次检索的方法常用的是依次检索,根据十足路径名查找文件的方法一般如下:先找到根目次的起始盘块,一般根目次位置是固定的,测验中就是模拟磁盘的第2块,将该盘块读出;取出路径名中根目次后的目次名或文件名,和根目次中目次项依次对比,对比完一块,再根据文件调配表找到下一块,再读入对比,直到找到名字一致的目次项或根目次登记项均已查完为止;若没有找到,那么查找失败,终止;若查找的是文件,终止;若查找的是目次,从找到的目次项中,取出目次的起始盘块号,读入此盘块,然后用上述一致的查找方法持续查找,直到找到该文件(或目次)或查找失败终止。

      测验中,使用十足路径查找文件(或目次)的流程如图13所示 查找十足路径名namei=根目次的起始盘块号;last=0;pna=从name中分开出“/”后下一个目次名(或文件名);若是文件,分开出类型名type读出磁盘第i块,存在buffer2中若pna为目次名或文件名结果一片面,last=1i=该目次起始盘块号是十足路径的结果一片面且是文件名?Nj=0Yj=0NN第j项是该盘块一项?Y文件名为pna且类型名为type?Y查找告成j=j+1第j项是该盘块一项?j=j+1NY第j项是目次且名字等于pna?Ylast==1?Y查找告成Y终止NN查找失败,该文件或目次不存在 图13 使用十足路径查找文件(目次)的流程图 查找文件除了十足路径名外,还可以使用相对路径名相对路径名是从当前目次启程到指定文件的路径假设文件(或目次)在当前目次下,使用相对路径名查找速度对比快和十足路径的查找方法一样,只是查找的起点是当前目次,不是根目次测验中只使用了十足路径名 (4)文件操作 确定文件组织布局、目次布局和磁盘空间管理的方法后,就可以模拟文件操作的实现测验中文件操作包括建立文件(create_file)、开启文件(open_file)、关闭文件(close_file)、读文件(read_file)、写文件(write_file)、删除文件(delete_file)、显示文件内容(typefile)和变更文件属性(change),目次命令包括建立目次(md)、显示目次内容(dir)和删除空目次(rd)。

      在测验中没有程序调用这些指令,为了看到它们的模拟处境,从键盘输入选择指令来模拟用户程序的调用 首先要建立一个“已开启文件表”,用来记录开启或建立文件的相关内容,布局如图14所示 文件路径名 文件属性 起始盘块号 文件长度 操作类型 读指针 块号 块内地址 写指针 块号 块内地址 ? ? ? ? ? ? 图14 已开启文件表布局 用数组模拟已开启文件表,数据布局定义如下: #define n 5 //测验中系统允许开启文件的最大数量 typedef struct { int dnum; //磁盘盘块号 int bnum; //磁盘盘块内第几个字节 }pointer; //已开启文件表中读、写指针的布局 typedef struc。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.