操作系统(2)实验四

操作系统(2)实验四

ID:1038681

大小:203.43 KB

页数:18页

时间:2017-11-07

操作系统(2)实验四_第1页
操作系统(2)实验四_第2页
操作系统(2)实验四_第3页
操作系统(2)实验四_第4页
操作系统(2)实验四_第5页
资源描述:

《操作系统(2)实验四》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、SHANGHAIUNIVERSITY<操作系统>实验报告学院计算机工程与科学学院学号10122050姓名王杰指导老师张建日期2014.03.07实验四文件操作与管理一、实验环境VisualC++二、实验目的随着社会信息量的极大增长,要求计算机处理的信息与日俱增,涉及到社会生活的各个方面。因此,文件管理是操作系统的一个极为重要的组成部分。学生应独立地用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲

2、授过的知识。三、实验要求(1)实际一个n个用户的文件系统,每个用户最多可保存m个文件。(2)限制用户在一次运行中只能打开l个文件。(3)系统应能检查打入命令的正确性,出错要能显示出错原因。(4)对文件必须设置保护措施,如只能执行,允许读、允许写等。在每次打开文件时,根据本次打开的要求,再次设置保护级别,即可有二级保护。(5)对文件的操作至少应有下述几条命令:creat建立文件。delete删除文件。open打开文件。close关闭文件。read读文件。write写文件。四、实验内容(1)本实习设计一个10

3、个用户的文件系统,每个用户最多可保存10个文件,一次运行中用户可打开5个文件。(2)程序采用二级文件目录,即设置了主文件目录(MFD)和用户文件目录(UFD)。前者应包含文件主(即用户)及他们的目录区指针;后者应给出每个文件主占有的文件目录,即文件名,保护码,文件长度以及他们存放的位置等。另外为打开文件设置了运行文件目录(AFD),在文件打开时应填入打开文件号,本次打开保护码和读写指针等。(3)为了便于实现,对文件的读写作了简化,在执行读写命令时,只修改读写指针,并不进行实际文件的读写操作。五、设计思路1

4、.因系统小,文件目录的检索使用了简单的线性搜索,而没有采用Hash等有效算法。2.文件保护简单实用了三位保护码,对应于允许读、允许写和运行执行,如下所示:111允许写允许读允许执行如对应位为0,则不允许。3.程序中使用的主要数据结构如下:①主文件目录和用户文件目录打开文件目录:4.程序框图:六、实验过程1.整个程序运行过程如下:输入用户名—>在MFD中查找—>显示UFD文件链表—>初始化AFD运行文件表—>输入操作命令—>执行操作命令—>保存文件目录—>打印文件目录—>结束2.MFD、UFD和AFD的结构

5、定义如下:structUFD{stringfilename;intpro[3];intcodel;UFD*next;};structMFD{stringusername;UFD*file;MFD*next;};structAFD{intfilenum;charfilepro[3];UFD*point;AFD*next;};1.voidinit()初始化函数将文件链表变成循环链表,方便执行插入和删除操作。2.intcheckUser()检查用户检查输入的用户名是否在用户文件目录中。3.voidCreate(

6、)创建一个文件选择CREATE命令后,查看该用户的UFD链表内是否还有空闲结点:(1)若有则设置该结点的内容,然后打开、修改AFD;(2)若无则报错并退出。4.voidOpen()打开一个文件选择OPEN命令后,输入要打开的文件名,在UFD查找是否有该文件名:(1)若有则打开并修改AFD;(2)若无则报错并退出。5.voidClose()关闭一个文件选择CLOSE命令后,输入需要关闭的文件名,在UFD中搜索是否有该文件名。(1)若无则报错;(2)若有,还要分两种情况:l通过检查,该文件并未被打开,则报错l

7、存在该文件,且被打开,则正常调用voidClose1(AFD*f),关闭文件。1.voidDelete()删除一个文件选择DELETE命令后,输入需要删除的文件名,在UFD中搜索是否有该文件名:(1)若无则报错;(2)若有,还要分两种情况:l通过检查,该文件已被打开,则需要先关闭该文件,确定需要关闭该文件后,通过调用voidClose1(AFD*f),关闭文件,然后删除该文件。l存在该文件,且未被打开,则课正常删除该文件,即重新初始化该文件的UDF结点。2.voidRead()读一个文件读文件的关键是保护

8、码的判断。选择了READ命令后,输入需要读的文件名,在UFD中搜索是否有该文件名:(1)若有,但该文件没被打开,则报错;(2)若有,且已被打开,此处要分两种情况:l如果保护码的读位为“0”,则不能对该文件进行读操作。l否则,就通过文件号来读文件,即通过AFD中的point指针来查找该文件。3.voidWrite()写一个文件写文件的关键也是保护码的判断。选择了WRITE命令后,输入需要读的文件名,在UFD中搜索是否有该文件名:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。