《操作系统课程设计报告》.docx
- 文档编号:27328537
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:22
- 大小:19.72KB
《操作系统课程设计报告》.docx
《《操作系统课程设计报告》.docx》由会员分享,可在线阅读,更多相关《《操作系统课程设计报告》.docx(22页珍藏版)》请在冰豆网上搜索。
《操作系统课程设计报告》
10
操作系统课程设计
文件系统模拟
班级:
学号:
姓名:
指导老师:
提交时间:
实验地点:
课程设计目的2
课程设计要求2
课程设计内容2
文件系统实现2
数据结构设计2
程序流程图设计3
主要算法设计9
模拟实现文件系统10
程序调试与运行结果11
课程设计总结11
参考文献11
一、课程设计目的
通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识。
二、课程设计要求
通过课程设计,要求学生主要掌握如下内容:
1.设计出文件系统中常用的数据结构;
2.理解文件系统的工作流程,给出程序流程图;
3.设计出文件系统中关键的算法;
4.模拟实现二级目录文件系统,并给出一组运行结果。
三、课程设计内容
根据实验指导书补充
四、文件系统实现
1、数据结构设计
通过分析设计题目,具体设计出主要的三个数据结构。
UFD:
通过结构体,将文件名,文件属性,记录长度和文件的地址结合在一体。
UOF:
同样是通过结构体,将文件名,文件属性,记录长度,当前状态,读指针,写指针以及最后一块的指针结合在一起。
MFD:
通过一个类来实现其功能。
类中包括用户名,UFD及UOF中的文件个数,以及与用户相对应的UFD和UOF。
另外还包括两个初始化函数。
用户名
用户文件目录
文件名
文件属性
记录长度
文件地址
NL
栏栏
主文件目录MFD用户文件目录UFD
文件名
文件属性
记录长度
状态(打开/建立)
读指针
写指针
S
栏
开始
2、程序流程图设计
⑴、整体程序流程:
菜单选择:
初始化已有的用户或新建用户
新建用户
选择已有用户
初始化文件表
输入用户名后开始初始化
初始化结束后
菜单选择进入正式操作部分
列出目前所有用户
并等待输入用户名
显示:
无此用户
MFD中有该用户
无
有
列出指令列表并由用户选择
文件列表
删除
写
读
关闭
打开
建立
切换用户
结束
显示
错误
⑵、用菜单的形式来模拟用户程序中调用的文件操作,这些命令的说明如下:
Theorderis:
1=create
2=open
3=close
4=read
5=write
6=delete
7=changeUSER
8=list
9=end
Pleaseinputyourorder:
1建立文件(create)
模拟文件系统进行“建立文件”的处理,流程图后附。
2打开文件
约定操作类型与文件属性不符合活正处在“建立”状态的文件不允许打开。
3关闭文件
对某个文件不需要再读或写的时候,用户应关闭该文件。
4读文件
文件打开后可顺序读文件中的记录,读长度表示本次操作需读的记录个数。
5写文件
执行写文件操作时要区分两种情况,第一种是在执行create后要求写,第二种是执行open后要求写。
对第二种情况可认为用户要对一个已建立好的文件进行修改。
一个文件可以分多次写,既可按记录顺序写也可随机写一个记录,采用顺序写时可省略记录号。
6删除文件
把请求撤消的文件从拥护文件目录表中出名,收回该文件站用的存储区域。
7切换用户
可在多个用户间切换,彼此进行独立的操作。
8文件列表
将目前所有用户的文件列出,并列出相关的属性及所有者。
9结束
退出程序,返回原有操作系统。
创建文件流程图:
是
否
开始
查该用户的UFD
UFD中有该文件
显示:
同名文件不能建立
在UFD和UOF中找空登记栏
在UFD和UOF中登记文件名、记录长度、文件属性
返回
找一模拟磁盘的空闲块赋值给i,并在UFD登记栏中引用i
在该用户的UOF中登记
状态:
=建立,写指针:
=i
显示“创建成功”
返回
开始
打开文件流程图:
查找用户的UFD
UFD中有该文件
是否
查找用户的UOF
显示:
文件不存在,不能打开
UOF中有该文件
返回
是否
文件属性与操作类型相符
该文件为
“建立”状态
是
是
显示:
操作不合法,不能打开
否
登记UOF:
文件名,记录长度,文件属性
状态:
=“打开”
读指针:
=UFD中文件地址
写指针:
=UFD中文件地址
否
显示:
正在建立,不能打开
返回
显示:
文件已打开
返回
显示:
成功打开文件
返回
写文件流程图:
开始
查用户的UOF
UOF中有该文件
是否
显示:
文件尚未建立或打开,不能写
该文件为建立状态?
否(打开状态)
文件属性为“只读”?
是
返回
把记录信息写到“写指针”指出的物理块中
否是
顺序修改
否
是
找出存放指定记录的块号
取出“写指针”指出的块号
显示:
操作不合法,不能写
找一个空闲块填入文件链接字,修改“写指针”
返回
修改“写指针”
把修改信息写入找到的物理块中
显示:
写文件成功
返回
开始
读文件流程图:
查用户的UDF
返回
按读产度把信息读出传送给用户
修改“读指针”
显示:
读文件成功
返回
显示:
文件未打开,不能读
从“读指针”得到当前起始地址
文件已经打开
关闭文件流程图:
显示:
文件已关闭
显示:
关闭文件成功
开始
查用户的UOF
文件为“建立”状态?
消除该文件在UOF中的登记栏
文件为“建立”状态?
置文件结束标志
返回
开始
删除文件流程图:
查找用户目录表UFD
UFD中有该文件?
是否
查找用户的UOF
显示:
文件已删除
UOF中有该文件?
返回
是
在UOF中消除该文件的登记栏
否
归还文件所占用的存储区域
在UFD中清除该文件的登记栏
3、主要算法设计
新建用户:
由于MFD为类,所以只需输入用户名,并赋值给类中对应的属性mfd[i].UserName即可,其他属性在定义整个对象数组时已由默认构造函数定义。
程序运行实例:
……
0zhao
1qian
2sun
3li
4zhou
5new
6beginoperation
7end
Inputnumber:
(菜单1)
用户命令菜单:
将纯指令的操作加入了简单的菜单处理,在功能没有简化的基础上使操作更为简便。
Theorderis:
1=create
2=open
3=close
4=read
5=write
6=delete
7=changeUSER
8=list
9=end
Pleaseinputyourorder:
(菜单2)
4、模拟实现文件系统
菜单1部分程序段:
if(j>i+2){cout<<"Error!
!
\n"< elseif(j cons: cout<<"Nowusing"< ! \n"; ……//初始化过程 } elseif(j==i){cout<<"Pleaseinputthenewusername: "; cin>>username; mfd[j].UserName=username;i++; gotocons;} elseif(j==i+2)gotoend;//结束初始化UFD elsel=i; 菜单2部分程序段: order1: cout<<"Theorderis: \n"; cout<<"1=create\n"<<"2=open\n"<<"3=close\n"<<"4=read\n"<<"5=write\n"<<"6=delete\n"; cout<<"7=changeUSER\n"<<"8=list\n"<<"9=end\n\n"; cout<<"Pleaseinputyourorder: "; cin>>order; ……//根据变量order的值进行判断并执行相应的代码。 5、程序调试与运行结果 (1)程序调试 由于是在老师提供的程序基础上进行的进一步改进,所以首先是将整个程序看清理顺,之后又在其基础上添加了一部分外围功能。 在新建用户时,要将新加入的用户和其他用户级别一致,并且在菜单中要有相应的体现(这里在类数组建立时,构造函数使默认的未被使用的用户名为“0”),这样就可通过用户名是否为“0”来判断当前数组元素是否是已开启的用户。 (2)运行结果 我们以下面的条件为基础,进行一次运行演示。 当前已有默认的5个用户: zhao、qian、sun、li、zhou,并且每个用户没有任何文件。 首先以sun登陆,并建立两个文件sun1和sun2,文件类型均为只读,大小任意,其中sun1及如到UOF中。 后新建一用户liu,并初始化文件liu1,类型读写均可,大小任意。 开始操作后,先以sun登陆;列出所有文件;删除sun2;切换到liu用户;建立liu2文件,只读,大小任意;关闭并删除liu1;再次列出所有文件列表。 (运行结果后附) 五、课程设计总结 文件系统是操作系统中最直接可见的部分。 通过这次课程设计,使我对文件系统有了更深入的认识,但仍然存在许多想的到但却暂无法完成的功能,比如更加合理的存放文件,更有效的分配存储器空间,在删除和修改某个文件时,对存储区的调整。 这些功能会 六、参考文献 [1]张尧学,史美林,计算机操作系统教程,清华大学出版社,2000.8 附: 程序运行结果 假定系统可同时管理5个用户的文件,每个用户最多拥有10个文件,用户最多同时打开或建 立5个文件 PleaseinitializetheUFD. 0zhao 1qian 2sun 3li 4zhou 5new 6beginoperation 7end Inputnumber: 2//程序运行并初始化用户sun Nowusingsun'sfile! ! Pleaseinputfilename,fileattribute,recordlenght File1 filename: sun1 fileattribute('0': readonly,'1': readorwrite): 0 recordlength(1to100): 10 fileaddress: from1to10 DoyouwanttoaddthisfiletoUOF? (Y/N)): y Doyouwanttoinputanymore? (Y/N)): y Youhavealreadyinputtedthemostfiles! Youcann'tinputanymore. File2 filename: sun2 fileattribute('0': readonly,'1': readorwrite): 0 recordlength(1to100): 10 fileaddress: from11to20 DoyouwanttoaddthisfiletoUOF? (Y/N)): n Doyouwanttoinputanymore? (Y/N)): n//用户sun初始化完毕 0zhao 1qian 2sun 3li 4zhou 5new 6beginoperation 7end Inputnumber: 5//新建用户liu并初始化 Pleaseinputthenewusername: liu Nowusingliu'sfile! ! Pleaseinputfilename,fileattribute,recordlenght File1 filename: liu1 fileattribute('0': readonly,'1': readorwrite): 1 recordlength(1to100): 10 fileaddress: from21to30 DoyouwanttoaddthisfiletoUOF? (Y/N)): y Doyouwanttoinputanymore? (Y/N)): n 0zhao 1qian 2sun 3li 4zhou 5liu 6new 7beginoperation 8end Inputnumber: 7//开始文件操作 Now,youcaninputyourrequest! ! zhao qian sun li zhou liu Pleaseinputtheusername: sun//先以用户sun登陆 Theorderis: 1=create 2=open 3=close 4=read 5=write 6=delete 7=changeUSER 8=list 9=end Pleaseinputyourorder: 8//列出当前文件 FileNameFileAttributeUser sun10sun sun20sun liu11liu Theorderis: 1=create 2=open 3=close 4=read 5=write 6=delete 7=changeUSER 8=list 9=end Pleaseinputyourorder: 6 Inputthefilenamethatyouwanttodelete: sun2//删除用户sun下文件sun2 Filedeletingsuccessful! Filealreadydeleted! Theorderis: 1=create 2=open 3=close 4=read 5=write 6=delete 7=changeUSER 8=list 9=end Pleaseinputyourorder: 7 zhao qian sun li zhou liu Pleaseinputtheusername: liu//切换用户至liu Theorderis: 1=create 2=open 3=close 4=read 5=write 6=delete 7=changeUSER 8=list 9=end Pleaseinputyourorder: 1//在用户liu下新建文件liu2 Inputthefilenamethatyouwanttocreate: liu2 Inputfile'sattributeandlength: fileattribute('0': readonly,'1': readorwrite): 0 recordlength(1to100): 15 Filecreatingsuccessful. Theorderis: 1=create 2=open 3=close 4=read 5=write 6=delete 7=changeUSER 8=list 9=end Pleaseinputyourorder: 3//关闭处于UOF中的文件liu1 Inputthefilenamethatyouwanttoclose: liu1 Fileclosingsuccessful. Theorderis: 1=create 2=open 3=close 4=read 5=write 6=delete 7=changeUSER 8=list 9=end Pleaseinputyourorder: 6//删除文件liu1 Inputthefilenamethatyouwanttodelete: liu1 Filedeletingsuccessful! Filealreadydeleted! Theorderis: 1=create 2=open 3=close 4=read 5=write 6=delete 7=changeUSER 8=list 9=end Pleaseinputyourorder: 8//列出当前文件 FileNameFileAttributeUser sun10sun liu20liu Theorderis: 1=create 2=open 3=close 4=read 5=write 6=delete 7=changeUSER 8=list 9=end Pleaseinputyourorder: 9//结束
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统课程设计报告 操作系统 课程设计 报告