实验五 文件管理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程名称:操作系统

课程类型:必修

实验项目名称:文件管理

实验题目:设计一个多用户的文件系统

一、实验目的

随着社会信息量的极大增长,要求计算机处理的信息与日俱增,涉及到社会生活的各个方面。因此,文件管理是操作系统的一个非常重要的组成部分。学生应独立用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识。

二、实验要求及实验环境

用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。要求设计一个10 个用户的文件系统,每次用户可保存10 个文件,一次运行用户可以打开5 个文件。系统能够检查打入命令的正确性,出错时能显示出错原因。对文件必须设置保护措施,例如只能执行,允许读等。在每次打开文件时,根据本次打开的要求,在此设置保护级别,即有二级保护。文件的操作至少有Create、delete、open、close、read、write 等命令。所编写的程序应采用二级文件目录,即设置主文件目录和用户文件目录。前者应包含文件主及它们的目录区指针;后者应给出每个文件占有的文件目录,即文件名,保护码,文件长度以及它们存放的位置等。另外为打开文件设置运行文件目录(AFD),在文件打开时应填入打开文件号,本次打开保护码和读写指针等。

三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)

1.程序流程图

2.逻辑设计

使用线性表表示UFD,每个元素包括用户ID、保存的文件数、再使用线性表表示文件信息,每个元素包括文件名,文件属性(保护码),文件的状态等信息。该结构需支持以下操作:在尾部插入,查找,修改,在任意位置删除。3、物理设计

char UserName[SizeOfUser][SizeOfUserName];//用户ID

long User;//当前用户标志

struct InfoOfFile

{

char Name[SizeOfFileName];//文件名

bool safe[3];//Read,Write,Execute

long status;//ready,open;

}UFD[SizeOfUser][SizeOfFile];

long num[SizeOfUser];//保存文件数

long num_open[SizeOfUser];//打开文件数char z[4]="rwe";//保护标记的显示形式四、测试结果

注:蓝色行表示该行包括了输入内容Please input your ID:hacker

Bad UserID.

Please input your ID:ACRush

Name Property Status

skin.map r-- Ready

Tian --e Ready

2 file(s) in total

ACRush>ls

Name Property Status

skin.map r-- Ready

Tian --e Ready

2 file(s) in total

ACRush>login

Please input your ID:Gaminerie

Name Property Status

0 file(s) in total

Gaminerie>ls

Name Property Status

0 file(s) in total

Gaminerie>create

Input filename and property>kkk rwe Success!

Gaminerie>ls

Name Property Status

kkk rwe Ready

1 file(s) in total

Gaminerie>create

Input filename and property>2.txt --- Success!

Gaminerie>ls

Name Property Status

kkk rwe Ready

2.txt --- Ready

2 file(s) in total

Gaminerie>open

Input filename>2.txt

Success!

Gaminerie>open

Input filename>2.txt Failed... File 2.txt is already opened Gaminerie>close

Input filename>2.txt

Success!

Gaminerie>ls

Name Property Status

kkk rwe Ready

2.txt --- Ready

2 file(s) in total

Gaminerie>open

Input filename>2.txt

Success!

Gaminerie>ls

Name Property Status

kkk rwe Ready

2.txt --- Opened

2 file(s) in total

Gaminerie>open

Input filename>kkk

Success!

Gaminerie>read

Input filename>kkk Failed... File kkk is already opened Gaminerie>close

相关文档
最新文档