当前位置:文档之家› 计算机操作系统实验-文件管理

计算机操作系统实验-文件管理

哈尔滨工业大学计算机科学与技术学院实验报告课程名称:操作系统课程类型:必修实验项目名称:文件管理实验题目:设计一个多用户的文件系统班级:实验学院一班学号:6040310110姓名:张元竞设计成绩报告成绩指导老师一、实验目的随着社会信息量的极大增长,要求计算机处理的信息与日俱增,涉及到社会生活的各个方面。

因此,文件管理是操作系统的一个非常重要的组成部分。

学生应独立用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。

从而对各种文件操作命令的实质内容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识。

二、实验要求及实验环境用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。

要求设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。

系统能够检查打入命令的正确性,出错时能显示出错原因。

对文件必须设置保护措施,例如只能执行,允许读等。

在每次打开文件时,根据本次打开的要求,在此设置保护级别,即有二级保护。

文件的操作至少有Create、delete、open、close、read、write等命令。

所编写的程序应采用二级文件目录,即设置主文件目录和用户文件目录。

前者应包含文件主及它们的目录区指针;后者应给出每个文件占有的文件目录,即文件名,保护码,文件长度以及它们存放的位置等。

另外为打开文件设置运行文件目录(AFD),在文件打开时应填入打开文件号,本次打开保护码和读写指针等。

三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)1.程序流程图2.逻辑设计使用线性表表示UFD,每个元素包括用户ID、保存的文件数、再使用线性表表示文件信息,每个元素包括文件名,文件属性(保护码),文件的状态等信息。

该结构需支持以下操作:在尾部插入,查找,修改,在任意位置删除。

3、物理设计char UserName[SizeOfUser][SizeOfUserName];//用户ID long User;//当前用户标志struct InfoOfFile{Name[SizeOfFileName];//文件名charboolsafe[3];//Read,Write,Executestatus;//ready,open;long}UFD[SizeOfUser][SizeOfFile];long num[SizeOfUser];//保存文件数long num_open[SizeOfUser];//打开文件数char z[4]="rwe";//保护标记的显示形式四、测试结果注:蓝色行表示该行包括了输入内容Please input your ID:hackerBad UserID.Please input your ID:ACRushName Property Statusskin.map r-- ReadyTian --e Ready2 file(s) in totalACRush>lsName Property Statusskin.map r-- ReadyTian --e Ready2 file(s) in totalACRush>loginPlease input your ID:GaminerieName Property Status0 file(s) in totalGaminerie>lsName Property Status0 file(s) in totalGaminerie>createInput filename and property>kkk rweSuccess!Gaminerie>lsName Property Statuskkk rwe Ready 1 file(s) in totalGaminerie>createInput filename and property>2.txt ---Success!Gaminerie>lsName Property Statuskkk rwe Ready 2.txt --- Ready 2 file(s) in totalGaminerie>openInput filename>2.txtSuccess!Gaminerie>openInput filename>2.txtFailed... File 2.txt is already openedGaminerie>closeInput filename>2.txtSuccess!Gaminerie>lsName Property Statuskkk rwe Ready 2.txt --- Ready 2 file(s) in totalGaminerie>openInput filename>2.txtSuccess!Gaminerie>lsName Property Statuskkk rwe Ready 2.txt --- Opened 2 file(s) in totalGaminerie>openInput filename>kkkSuccess!Gaminerie>readInput filename>kkkFailed... File kkk is already openedGaminerie>closeInput filename>kkkSuccess!Gaminerie>readInput filename>kkkSuccess!Gaminerie>lsName Property Statuskkk rwe Ready 2.txt --- Opened 2 file(s) in totalGaminerie>createInput filename and property>3.txt rw-Success!Gaminerie>lsName Property Statuskkk rwe Ready2.txt --- Opened3.txt rw- Ready 3 file(s) in totalGaminerie>deleteInput filename>2.txtFailed... File 2.txt is already openedGaminerie>close 2.txtInput filename>Success!Gaminerie>deleteInput filename>2.txtSuccess!Gaminerie>createInput filename and property>t ---Success!Gaminerie>createInput filename and property>qq.exe --eSuccess!Gaminerie>lsName Property Statuskkk rwe Ready3.txt rw- Ready t --- Ready qq.exe --e Ready 4 file(s) in totalGaminerie>createInput filename and property>luck ---Success!Gaminerie>createInput filename and property>rp rweSuccess!Gaminerie>lsName Property Statuskkk rwe Ready3.txt rw- Ready t --- Ready qq.exe --e Readyluck --e Readyrp rwe Ready 6 file(s) in totalGaminerie>createInput filename and property>do rw-Success!Gaminerie>createInput filename and property>65.txt --eSuccess!Gaminerie>lsName Property Statuskkk rwe Ready3.txt rw- Ready t --- Ready qq.exe --e Readyluck --e Readyrp rwe Readydo rw- Ready65.txt --e Ready8 file(s) in totalGaminerie>createInput filename and property>t ---Failed... File t already existsGaminerie>createInput filename and property>i r-eSuccess!Gaminerie>createInput filename and property>kpp ---Success!Gaminerie>lsName Property Statuskkk rwe Ready3.txt rw- Ready t --- Ready qq.exe --e Readyluck --e Readyrp rwe Readydo rw- Ready65.txt --e Readyi r-e Ready kpp --- Ready 10 file(s) in totalGaminerie>createFailed... You can only save 10 filesGaminerie>deleteInput filename>tSuccess!Gaminerie>lsName Property Statuskkk rwe Ready3.txt rw- Readyqq.exe --e Readyluck --e Readyrp rwe Readydo rw- Ready65.txt --e Readyi r-e Ready kpp --- Ready 9 file(s) in totalGaminerie>createInput filename and property>tt ---Success!Gaminerie>lsName Property Statuskkk rwe Ready3.txt rw- Readyqq.exe --e Readyluck --e Readyrp rwe Readydo rw- Ready65.txt --e Readyi r-e Ready kpp --- Ready tt --- Ready 10 file(s) in totalGaminerie>saveSuccess!Gaminerie>byeByebye.可见各项功能都已实现并且正确。

相关主题