文档详情

操作系统课程设计磁盘文件操.doc

发布:2018-09-03约1.17万字共24页下载文档
文本预览下载声明
课程设计4 磁盘文件操作 课程设计目的 ·深人了解磁盘文件系统的实现。 预备知识 ·文件的操作。 ·文件的逻辑结构和物理结构。 ·磁盘空间的管理。 ·磁盘目录结构。 小组人员 课程设计内容 设计一个简单的文件系统,用文件模拟磁盘。用数组模拟缓冲区,要求实现: 支持多级目录结构.支待文件的绝对读路径; ②文件的逻辑结构采用流式结构,物理结构采用链接结构中的显示链接方式; ③采用文件分配表; ④实现的命令包括建立目录、,列目录、删除空目、建立文件、删除文件、显示文件、打开文件、读文件、写文件(追加方式)、关闭文作、改变文件属性。 ⑤最后编写主函数对所做工作进行测试。 提示与讲解 为了正确地实现文件的存取。文件系统设汁了一组与存取文件有关的功能模块。用户可以用“访管指令”调用这些功能模块.以实理文件的存取要求,把文件系统设计的这一组功能模块称为“文件操作”。文件操作不是独立的,和文件系统的其他部分密切相关。若要实现文件操作就离不开文件的目录结构、文件的组织结构和磁盘空间的管理。因此,这个实验虽然是文件操作的模拟实现,但是还必须模拟一部分文件的组织结构、目录结构和磁盘空间管理的实现。 (1)文件的组织钻构 文件的逻辑结构有两种形式:流式文件和记录式文件。实脸中只支持流式文件,采用称为显示链接的物理文件结构,把磁盘中每一块的指针部分提出来组织在一起,形成文件分配表(FAT)。 磁盘有多少块,文件分配表就有多少项。若某文件的一个磁盘块号为i,则这个文件的下 一个磁盘的块号应该记录在文件分配表第i项。例如,某系统文件分配表前几项值如表2-5-1所示:某个文件的起始盘块号为3,则该文件的磁盘块号依次为3、4、9、12、13。 表2-5-1 某磁盘文件分配表部分内容 第几项 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 … 内容 -1 -1 -1 4 9 0 7 8 -1 12 11 -1 13 -1 0 0 … 〔2)磁盘空间的管理 首先要模拟一个磁盘。因为是实验,不使用真正的磁盘,所以实验中用一个文件模拟一 个小磁盘。假设模拟磁盘有128个物理块,每个物理块大小为64B。盘块的块号从0编起, 依次为0,1,2,3…,127。 将前面所讲的文件分配表放在磁盘的开始处。因为盘块有128块,所以文件分配表有128项,每项占用一个字节。这样文件分配表占用了磁盘的0块和1块,这两块就不能作其他用处。若一个盘块是某个文件的最后一块。填写“-1”表示文件结束。 文件的建立和删除操作需要对磁盘的空间进行分配和回收,所以要建立一定的数据表格 来记录磁盘的使用情况。用文件分配表的第i项表示第i个盘块的使用情况。磁盘的第0块 一定会被系统数据占用。所以任何一个文件的某个盘块块号都不可能是“0”,因而还可以用“0”表示磁盘盘块空闲,若这个盘块已经分配出去,即是某个文件的一块,由上面已知知道文件分配表中对应记录的是文件下一块的块号或结束标志都不是“0”。这样非“0”值表示盘块已分。像前面图2-5-1那张文件分配表中。块号为5、14和15的盘块是空闲的,其余是已分配的。在文件分配表中可以用一个超过盘块号的正整数表示文件结束,在此实验中 Y开始找到文件分配表第x项,i=x第i项值是否为0? Y 开始 找到文件分配表第x项,i=x 第i项值是否为0? 分配第i块 磁盘满,分配失败 结束 Y 第i项是否 为最后一项 如果磁盘中某些部分损坏,只要不是系统 区(引导扇区、文件分配表或根目录等)。不 分配那些坏的盘块、磁盘就可以继续使用。在 文件分配表对应坏盘块的项不能是“0”,一般 也需要特定的数值表示(这个数值应该是盘块 i=i+1编号以外并且不是结N束标志的数值,例如实验 i=i+1 N 中128~254之间的数值)。假设试验中模拟磁 盘的筑第13块和第49块已经损坏不能使用, 则在文件分配表的第13项和第14项写入 “254”表示该盘块损坏不能使用。 由于磁盘分配,有时不能预订文件大小,例 如建立文件时并不知道文件大小,因而磁盘的分 配有时是一块一块申请的。.磁盘空间回收时,整 个文件删除时回收很多块,但有时文件修改时可 图2-5-1 分配一个磁盘块的流程图能会删除某些内容,造成归还磁盘块,这时是一 图2-5-1 分配一个磁盘块的流程图 块一块回收的。这里给出申请一块磁盘空间的流 程图,若分配多块时,循环多次即可。分配一个盘块时,不应该从文件分配表第一项查起,因为磁盘中最开始的J几块为系统数据区(引导扇区,文件分配表、根目录等占用)。所以应该从这之后的可分配数据区开始查询.。假定系统区域占用了x个盘块,则分配一个磁盘盘块的流程如图2-5-1所示。回收一个磁盘块的流程图很简单,例如回收磁盘块的块号为
显示全部
相似文档