欢迎来到天天文库
浏览记录
ID:56902605
大小:1.50 MB
页数:33页
时间:2020-07-21
《操作系统实验五-文件系统.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算机科学与技术学院2018-2019学年第一学期《操作系统》实验报告班级:XXXXXXX学号:XXXXXXXXX姓名:XXX教师:XXX成绩:1.题目分析1.1设计目的深入了解磁盘文件系统的实现。1.2设计内容(1)设计一个简单的文件系统,用文件模拟磁盘,用数组模拟缓冲区,要求实现:(2)支持多级目录结构,支持文件的绝对读路径;(3)文件的逻辑结构采用流式结构,物理结构采用链接结构中的显示链接方式;(4)采用文件分配表;(5)实现的命令包括建立目录、列目录、删除空目录、建立文件、删除文件、显示文件内容、打开文件、读文件、写文件(追加方式)、关闭文件、改变文件属性。(6)最后编写主函数对
2、所做工作进行测试。1.3相关知识概述(1)文件的操作:①创建文件;②删除文件;③读文件;④写文件;⑤设置文件读/写位置。(2)文件的逻辑结构:从用户的观点出发所能观察到的文件组织形式,即问价是由一系列的逻辑记录组成的,是用户可以直接处理的数据及其结构。文件的物理结构:系统将文件存储在外存上所形成的一种存储组织形式,用户不可见。(3)磁盘空间的管理:采取合理的文件分配方式,为每个文件分配必要的存储空间,使每个文件都能“各得其所”,并能有效减少磁盘碎片。(4)磁盘目录结构2.实验设计2.1基本设计思路用一个文件模拟磁盘:0123456789101112FAT根目录目录1目录2目录3目录4…文
3、件1文件2…文件分配表FAT(128B):第几项0123456789…内容-1-1-149078-112…根目录(64B)目录1(64B)目录6(64B)目录n……….8B8B8B8B8B8B8B8B实验中,模拟的磁盘有128块,每块64B,故文件分配表有128项,每项3一个字节,共占磁盘的前两块,盘块编号0、1;根目录紧邻在文件分配表后面,占编号为2的盘块。文件管理系统要实现的功能包括:(1)磁盘操作:①磁盘分配(2)目录操作:①建立目录②显示目录内容③删除空目录(3)文件操作:①建立文件②打开文件③关闭文件④读文件⑤写文件⑥删除文件(磁盘回收)⑦显示文件内容⑧改变文件属性⑨使用绝对路
4、径名查找文件(4)对数据结构——已打开文件表的操作:①在已打开文件表中查找某文件②将文件从已打开文件表中删除③将某文件插入已打开文件表2.2主要数据结构描述1、每个目录项的数据结构(8B):typedefstruct{charname[3];//文件/目录名chartype[2];//文件类型目录未使用字节(填充空格)intattribute;//属性intstartnum;//起始盘块号intlength;//文件长度目录未使用字节(填充0)}DF_item;2、已打开文件表项类型:typedefstruct{charname[20];//文件绝对路径名charattribute;//
5、文件的属性,用1个字节表示,所以采用char类型intnumber;//文件起始盘块号intlength;//文件长度,文件占用的字节数intflag;//操作类型,用“0”表示以读操作方式开文件,用“1”表示写操作方式打开文件pointerread;//读文件的位置,文件打开时dnum为文件起始盘块号,bnum为“0”pointerwrite;//写文件的位置,文件刚建立时dnum为文件起始盘块号,bnum为“0”,打开文件时dnum和bnum为文件的末尾位置}OFILE;3、已打开文件登记表:struct{OFILEfile[n];//已打开文件登记表intlength;//已打开文
6、件登记表中登记的文件数量}openfile;2.3主要算法描述(1)磁盘分配:开始找到文件分配表第x项,i=x第i项值是否为0?第i项是否为最后一项?磁盘满,分配失败结束i=i+1分配第i块NYNY图2-10分配一个磁盘块的流程图(2)对已打开文件表的操作:①在已打开文件表中查找某文件:图2-13在已打开文件表中查找某文件的流程图结束查找路径名为pname的文件i=0i为已打开文件表一栏?查找成功结束查找失败i=i+1文件路径名相符?NNYY②将某文件从已打开文件表中删除开始删除路径名为name的文件在已打开文件表中查找路径名为name的登记项i找到该文件登记项?删除第i项:openfi
7、le.file[i]=openfile[openfile.length-1]openfile.length=openfile.length-1结束文件没有打开,删除失败NY图2-14将某文件从已打开文件表中删除的流程图③将某文件插入已打开文件表结束插入路径名为name的文件在已打开文件表中查找路径名为name的登记项找到该文件登记项?已打开文件表已满?文件登记表满,无法打开文件结束在openfile.file[length]处填写该
此文档下载收益归作者所有