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