操作系统2实验4报告.doc
文本预览下载声明
实验(四)文件操作与管理
一、目的与要求
1、目的
随着社会信息量的极大增长,要求计算机处理的信息与日俱增,涉及到社会生活的各个方面。因此,文件管理是操作系统的一个极为重要的组成部分。学生应独立地用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识。
2、要求
(1)实际一个 n 个用户的文件系统,每个用户最多可保存 m 个文件。
(2)限制用户在一次运行中只能打开 l 个文件。
(3)系统应能检查打入命令的正确性,出错要能显示出错原因。
(4)对文件必须设置保护措施,如只能执行,允许读、允许写等。在每次打开文件时,根据本次打开的要求,再次设置保护级别,即可有二级保护。
(5)对文件的操作至少应有下述几条命令:
creat 建立文件。
delete 删除文件。
open 打开文件。
close 关闭文件。
read 读文件。
write 写文件。
二、实验题目
(1)本实习设计一个 10 个用户的文件系统,每个用户最多可保存 10 个文件,一次运行中用户可打开 5 个文件。
(2)程序采用二级文件目录,即设置了主文件目录(MFD)和用户文件目录(UFD)。前者应包含文件主(即用户)及他们的目录区指针;后者应给出每个文件主占有的文件目录,即文件名,保护码,文件长度以及他们存放的位置等。另外为打开文件设置了运行文件目录(AFD),在文件打开时应填入打开文件号,本次打开保护码和读写指针等。
(3)为了便于实现,对文件的读写作了简化,在执行读写命令时,只修改读写指针,并不进行实际文件的读写操作。
三、实验源代码
#include cstdio
#include cstring
#define SizeOfUserName 255
#define SizeOfUser 10
#define SizeOfFile 10
#define SizeOfCommand 255
#define SizeOfFileName 255
char UserName[SizeOfUser][SizeOfUserName];
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;
void ls()//列文件目录
{
char tmp[100];
long i,j;
printf(%20s%20s%20s\n,Name,Property,Status);
for (i=0;inum[User];i++)
{
printf(%20s,UFD[User][i].Name);
for (j=0;j3;j++)
{
if (UFD[User][i].safe[j])
{
tmp[j]=z[j];
}
else
{
tmp[j]=-;
}
}
tmp[3]=\0;
printf(%20s,tmp);
if (UFD[User][i].status)
{
printf(%20s\n,Opened);
}
else
{
printf(%20s\n,Ready);
}
}
printf(%ld file(s) in total\n,num[User]);
}
long login()//切换用户
{
long i;
char NameInput[SizeOfUserName];
do
{
printf(Please input your ID:);
scanf(%s,NameInput);
i=0;
while (iSizeOfUser strcmp(NameInput,UserName[i])!=0)
{
i++;
}
if (strcmp(NameInput,UserName[i])!=0)
{
printf(Bad UserID.\n);
}
}while (strcmp(NameInput,UserName[i])!=0);
显示全部