操作系统实验十_操作系统10实验大纲
操作系统实验十由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“操作系统10实验大纲”。
试验十
文件系统设计
数计学院教师实验教案
(实验十)
实验项目名称:文件系统设计 教师评分:
一、实验项目名称:
文件系统设计
二、实验目的和要求:
目的:通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及实现。
任务:首先确定文件系统的数据结构,然后利用C语言编写相应的程序,并在计算机上进行调试,得出相应的结果。
三、实验内容
用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。要求设计一个 10 个用户的文件系统,每次用户可保存 10 个文件,一次运行用户可以打开5 个文件。要求做到以下几点:
①可以实现下列几条命令 LOGIN 用户登陆 DIR 列文件目录 CREATE 创建文件 DELETE 删除文件 OPEN 打开文件 CLOSE 关闭文件 READ 读文件 WRITE 写文件
②列目录时要列出文件名,物理地址,保护码和文件长度。③源文件可以进行读写保护。
四、实验原理:(设计思想)
试验十
文件系统设计
息。该结构需支持以下操作:在尾部插入,查找,修改,在任意位置删除。
ⅲ.物理设计
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”;//保护标记的显示形式
五、参考源代码
#include #include
#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
试验十
文件系统设计
tmp[3]=' ';printf(“%20s”,tmp);if(UFD[User][i].status){ printf(“%20sn”,“Opened”);} else { printf(“%20sn”,“Ready”);} }
printf(“%ld file(s)in totaln”,num[User]);}
long login()//切换用户 { long i;char NameInput[SizeOfUserName];do { printf(“Please input your ID:”);scanf(“%s”,NameInput);i=0;while(i
试验十
文件系统设计
for(i=0;i
void create()//创建文件
试验十
文件系统设计
UFD[User][num[User]].safe[i]=0;} else { UFD[User][num[User]].safe[i]=1;} }
UFD[User][num[User]].status=0;++num[User];printf(“Succe!n”);}
void open()//打开文件 { long i;char filename[SizeOfFileName];
if(num_open[User]==5){ printf(“Failed...You have already opened 5 filesn”);//打开文件数已到上限 return;} printf(“Input filename>”);scanf(“%s”,filename);for(i=0;i
试验十
文件系统设计
for(i=0;i
void read()//读文件 { long i;char filename[SizeOfFileName];
printf(“Input filename>”);scanf(“%s”,filename);
试验十
文件系统设计
printf(“Input filename>”);scanf(“%s”,filename);for(i=0;i
void mydelete()//删除文件 {
试验十
文件系统设计
void save()//保存本 { FILE *fp=fopen(“D:123record.txt”,“w”);long i,j,k;char tt[4]=“rwe”;char tmp[4];
//保存用户列表
for(i=0;i
for(i=0;i
试验十
文件系统设计
if(strcmp(command,“bye”)==0){ printf(“Byebye.n”);over=1;continue;} if(strcmp(command,“ls”)==0 || strcmp(command,“dir”)==0){ ls();continue;} if(strcmp(command,“create”)==0){ create();
continue;} if(strcmp(command,“delete”)==0){ mydelete();continue;} if(strcmp(command,“open”)==0){ open();continue;}
试验十
文件系统设计
work();return 0;}
六、结果显示
1.LOGIN 用户登陆
2.CREATE 创建文件
3.DIR 列文件目录
4.DELETE 删除文件