1、操作系统课程设计报告文件系统模拟班 级:计 0109学 号: 10姓 名:刘 凡指导老师:孙静宇提交时间:2004-6-25实验地点:网络实验室太原理工大学信息工程学院101课程设计 目的 2课程设计要求 2课程设计内容 2文件系统实现 2数据结构设计 .2程序流程图设计 .3主要算法设计 .9模拟实现文件系统 .10程序调试 与运行结果 .11课程 设计总结 11参考文献 112一、课程设计目的通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识。二、课程设计要求通过课程设计,要求学生主要掌握如下内容:1设计出文件系统中常用的数据结构;2理解文件系统的工作流程,给出程序流程图;3设计
2、出文件系统中关键的算法;4模拟实现二级目录文件系统,并给出一组运行结果。三、课程设计内容根据实验指导书补充四、文件系统实现1、数据结构设计通过分析设计题目,具体设计出主要的三个数据结构。UFD:通过结构体,将文件名,文件属性,记录长度和文件的地址结合在一体。UOF:同样是通过结构体,将文件名,文件属性,记录长度,当前状态,读指针,写指针以及最后一块的指针结合在一起。MFD:通过一个类来实现其功能。类中包括用户名,UFD 及 UOF中的文件个数,以及与用户相对应的 UFD和 UOF。另外还包括两个初始化函数。N L栏 栏主文件目录 MFD 用户文件目录 UFDS栏用户名 用户文件目录 文件名 文
3、件属性 记录长度 文件地址文件名 文件属性 记录长度 状态(打开/建立) 读指针 写指针32、程序流程图设计、整体程序流程:新建用户选择已有用户无有开始菜单选择:初始化已有的用户或新建用户输入用户名后开始初始化初始化文件表初始化结束后菜单选择进入正式操作部分列出目前所有用户并等待输入用户名MFD 中有该用户 显示:无此用户列出指令列表并由用户选择建立 打开 关闭 读 写 删除切换用户 结束显示错误文件列表4、用菜单的形式来模拟用户程序中调用的文件操作,这些命令的说明如下:The order is:1=create2=open3=close4=read5=write6=delete7=chang
4、eUSER8=list9=endPlease input your order: 建立文件(create)模拟文件系统进行“建立文件”的处理,流程图后附。 打开文件约定操作类型与文件属性不符合活正处在“建立”状态的文件不允许打开。 关闭文件对某个文件不需要再读或写的时候,用户应关闭该文件。 读文件文件打开后可顺序读文件中的记录,读长度表示本次操作需读的记录个数。 写文件执行写文件操作时要区分两种情况,第一种是在执行 create 后要求写,第二种是执行 open 后要求写。对第二种情况可认为用户要对一个已建立好的文件进行修改。一个文件可以分多次写,既可按记录顺序写也可随机写一个记录,采用顺序写
5、时可省略记录号。 删除文件把请求撤消的文件从拥护文件目录表中出名,收回该文件站用的存储区域。 切换用户可在多个用户间切换,彼此进行独立的操作。 文件列表将目前所有用户的文件列出,并列出相关的属性及所有者。 结束退出程序,返回原有操作系统。5UFD 中 有 该 文 件创建文件 流程图:是否开始查该用户的UFD显 示 : 同 名文 件 不 能 建 立返回在 UFD 和 UOF 中找空登记栏在 UFD 和 UOF 中登记文件名、记录长度、文件属性找一模拟磁盘的空闲块赋值给i,并在 UFD 登记栏中引用 i在该用户的 UOF 中登记状态:=建立,写指针 :=i显示“创建成功”返回6文件属性与操作类型相
6、符打开文件 流程图:是 否是 否是是否否开始查找用户的UFDUFD 中 有 该 文 件显 示 : 文 件 不存 在 , 不 能 打开返回查找用户的UOFUOF 中 有 该 文 件该 文 件 为“建 立 ”状态显 示 : 正 在建 立 , 不 能打 开显示:文 件 已 打 开返回显示:操 作 不 合 法 ,不 能 打 开返回登记 UOF:文件名,记录长度,文件属性状态:=“打开”读指针:=UFD 中文件地址写指针:=UFD 中文件地址显示:成功打开文件返回7写文件 流程图:是 否否(打开状态)是否 是否是开始查用户的 UOFUOF 中有该文件把 记 录 信 息 写到 “写 指 针 ”指 出 的
7、物 理 块中该文件为建立状态?找 一 个 空 闲 块填 入 文 件 链 接字 , 修 改 “写指 针 ”显示:文件尚未建立或打开,不能写返回文件属性为“只读”?显示:操作不合法,不能写返回顺序修改取出“写指针”指出的块号修改“写指针”找出存放指定记录的块号把修改信息写入找到的物理块中显示:写文件成功返回8读文件 流程图:关闭文件 流程图:开始查用户的 UDF文件已经打开从“读指针”得到当前起始地址按读产度把信息读出传送给用户修改“读指针”显示:读文件成功显示:文件未打开,不能读返回返回开始查用户的 UOF文件为“建立”状态?文件为“建立”状态?置文件结束标志显示:文件已关闭消除该文件在UOF
8、中的登记栏显示:关闭文件成功返回9删除文件 流程图:是 否是否3、主要算法设计新建用户:由于 MFD为类,所以只需输入用户名,并赋值给类中对应的属性 mfdi.UserName即可,其他属性在定义整个对象数组时已由默认构造函数定义。程序运行实例:开始查找用户目录表 UFDUFD 中有该文件?显示:文件已删除返回查找用户的 UOFUOF 中有该文件?在 UOF 中 消 除该 文 件 的 登 记 栏归还文件所占用的存储区域在 UFD 中清除该文件的登记栏100 zhao1 qian2 sun3 li4 zhou5 new6 begin operation7 endInput number :(菜单
9、 1)用户命令菜单:将纯指令的操作加入了简单的菜单处理,在功能没有简化的基础上使操作更为简便。The order is:1=create2=open3=close4=read5=write6=delete7=changeUSER8=list9=endPlease input your order:(菜单 2)4、模拟实现文件系统菜单 1部分程序段:if(ji+2)coutusername;mfdj.UserName=username;i+;11goto cons;else if(j=i+2)goto end;/结束初始化 UFDelse l=i;菜单 2部分程序段:order1: coutor
10、der;/根据变量 order的值进行判断并执行相应的代码。5、程序调试与运行结果(1)程序调试由于是在老师提供的程序基础上进行的进一步改进,所以首先是将整个程序看清理顺,之后又在其基础上添加了一部分外围功能。在新建用户时,要将新加入的用户和其他用户级别一致,并且在菜单中要有相应的体现(这里在类数组建立时,构造函数使默认的未被使用的用户名为“0” ) ,这样就可通过用户名是否为“0”来判断当前数组元素是否是已开启的用户。(2)运行结果我们以下面的条件为基础,进行一次运行演示。当前已有默认的 5个用户:zhao、qian、sun、li、zhou,并且每个用户没有任何文件。首先以 sun登陆,并建
11、立两个文件 sun1和 sun2,文件类型均为只读,大小任意,其中 sun1及如到 UOF中。后新建一用户 liu,并初始化文件 liu1,类型读写均可,大小任意。开始操作后,先以 sun登陆;列出所有文件;删除 sun2;切换到 liu用户;建立 liu2文件,只读,大小任意;关闭并删除 liu1;再次列出所有文件列表。 (运行结果后附)五、课程设计总结文件系统是操作系统中最直接可见的部分。通过这次课程设计,使我对文件系统有了更深入的认识,但仍然存在许多想的到但却暂无法完成的功能,比如更加合理的存放文件,更有效的分配存储器空间,在删除和修改某个文件时,对存储区的调整。这些功能会12六、参考文
12、献1张尧学,史美林,计算机操作系统教程,清 华大学出版社,2000.8附:程序运行结果假定系统可同时管理 5 个用户的文件,每个用 户最多拥有 10 个文件,用 户最多同时打开或建立 5 个文件Please initialize the UFD.0 zhao1 qian2 sun3 li4 zhou5 new6 begin operation7 endInput number :2 /程序运行并初始化用户 sunNow using suns file!Please input filename,fileattribute,recordlenghtFile 1filename:sun1filea
13、ttribute(0:read only,1:read or write):0recordlength(1 to 100):10fileaddress:from 1 to 10Do you want to add this file to UOF?(Y/N):yDo you want to input any more?(Y/N):yYou have already inputted the most files!You cannt input any more.File 2filename:sun2fileattribute(0:read only,1:read or write):0rec
14、ordlength(1 to 100):10fileaddress:from 11 to 20Do you want to add this file to UOF?(Y/N):nDo you want to input any more?(Y/N):n /用户 sun 初始化完毕0 zhao1 qian2 sun3 li134 zhou5 new6 begin operation7 endInput number :5 /新建用户 liu 并初始化Please input the new username:liuNow using lius file!Please input filenam
15、e,fileattribute,recordlenghtFile 1filename:liu1fileattribute(0:read only,1:read or write):1recordlength(1 to 100):10fileaddress:from 21 to 30Do you want to add this file to UOF?(Y/N):yDo you want to input any more?(Y/N):n0 zhao1 qian2 sun3 li4 zhou5 liu6 new7 begin operation8 endInput number :7 /开始文
16、件操作Now,you can input your request!zhaoqiansunlizhouliuPlease input the username:sun /先以用户 sun 登陆The order is:1=create2=open3=close4=read5=write146=delete7=changeUSER8=list9=endPlease input your order:8 /列出当前文件FileName FileAttribute User sun1 0 sunsun2 0 sunliu1 1 liuThe order is:1=create2=open3=clos
17、e4=read5=write6=delete7=changeUSER8=list9=endPlease input your order:6Input the filename that you want to delete:sun2 /删除用户 sun 下文件 sun2File deleting successful!File already deleted!The order is:1=create2=open3=close4=read5=write6=delete7=changeUSER8=list9=endPlease input your order:7zhaoqian15sunli
18、zhouliuPlease input the username:liu /切换用户至 liuThe order is:1=create2=open3=close4=read5=write6=delete7=changeUSER8=list9=endPlease input your order:1 /在 用 户 liu 下 新 建 文 件 liu2Input the filename that you want to create:liu2Input files attribute and length:fileattribute(0:read only,1:read or write):0
19、recordlength(1 to 100):15File creating successful.The order is:1=create2=open3=close4=read5=write6=delete7=changeUSER8=list9=endPlease input your order:3 /关 闭 处 于 UOF 中 的 文 件 liu1Input the filename that you want to close:liu1File closing successful.The order is:1=create2=open163=close4=read5=write6=
20、delete7=changeUSER8=list9=endPlease input your order:6 /删除文件 liu1Input the filename that you want to delete:liu1File deleting successful!File already deleted!The order is:1=create2=open3=close4=read5=write6=delete7=changeUSER8=list9=endPlease input your order:8 /列出当前文件FileName FileAttribute User sun1 0 sunliu2 0 liuThe order is:1=create2=open3=close4=read5=write6=delete7=changeUSER8=list9=endPlease input your order:9 /结束