版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统试验班级:计科0801姓名:韩伟伟 学号: 日期:2011/6/15实验六 模拟实现文件系统一.实验目的通过模拟程序实现文件的建立、打开、删除、关闭、复制、读、写、查询等功能,了解 文件系统实现的特点,掌握文件系统的各种功能实现方法。二.实验属性设计三.实验内容模拟实现文件系统问题是一个经典的关于文件的处理问题,包括:实现文件的建立、 打开、删除、关闭、复制、读、写、查询等功能。设计思想如下:在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。文件物理结构可采用显式链接或其他方法。磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,
2、并采用显式链接分配方式,则可以将位示图合并到FAT中。文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、 长度等信息,还可以通过目录项实现对文件的读和写的保护。目录组织方式可以不使用 索引结点的方式,但使用索引结点,则难度系数为1.2。设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:(1)具有login (用户登录)(2)系统初始化(建文件卷、提供登录模块)(3)文件的创建:create(4)文件的打开:open(5)文件的读:read(6)文件的写: write(7)文件关闭:close(8)删除文件:delete(9)列出文件目录:dir(10)退出:l
3、ogout四.设计思路.本系统初始化了十个用户,每个用户初始化五个文件,最多可拥有十个文件,所以 每个用户在此基础上可为自己再创建五个文件,也可以在删除文件后再创建。.系统使用 create , open, read , write , close , delete , dir 和 exit 来创建文件, 打开文件,读文件,写文件,关闭文件,删除文件和显示文件。.程序采用二级文件目录(即设置主目录MFD)和用户文件目录(UED。另外,为打 开文件设置了运行文件目录( AFD。.为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并 不进行实际的读写操作。模拟实现文件系统的主要
4、流程图如下:五.实验报告1.写出你编写的C+利序。#include stdio.h#include #include #include #define getpch(type) (type*)malloc(sizeof(type)define NULL 0define UserNumber 10define UserFNumber 10define UserOFNumber 5struct fnamechar fnamea1;int flag; fnameA26=a,0,b,0,c,0,d,0,e,0,f,0,g,0,h,0,i,0,j,0,k,0,T,0, m,0,n,0,o,0,p,0,q
5、,0,r0,s,0,t,0,u,0,v,0,W,0,x,0,y,0,z,0;struct afd char opname10;/*打开文件名*/int flag;char opfprotect3;/*打开保护码 */int rwpoint;/*读写指针 */ AFDUserOFNumber;/*用户打开的文件*/typedef struct char fname10;/* 用户文件名 */int flag;/*文件存在标志 */int fprotect3;/* 文件保护码 rwt */int flength; ufd,UFUserFNumber;/*用户文件 */struct mdf char
6、 uname10;/* 用户名 */UF Udir;/*用户文件目录*/ UFDUserNumber;/*用户*/void intFSystem()int i,j,k,l;strcpy(UFD0.uname,a);strcpy(UFD1.uname,b);strcpy(UFD2.uname,c);strcpy(UFD3.uname,d);strcpy(UFD4.uname,e);strcpy(UFD5.uname,f);strcpy(UFD6.uname,g);strcpy(UFD7.uname,h);strcpy(UFD8.uname,i);strcpy(UFD9.uname,j); for
7、(i=0;i10;i+) for(k=0;k5;k+)do j=rand()%26; while(fnameAj.flag); strcpy(UFDi.Udirk.fname,fnameAj.fnamea);fnameAj.flag=1;UFDi.Udirk.flength=rand()%2048+1;UFDi.Udirk.flag=1;UFDi.Udirk.fprotect0=rand()%2;UFDi.Udirk.fprotect1=rand()%2;UFDi.Udirk.fprotect2=rand()%2; for(j=0;j26;j+) fnameAj.flag=0; for(l=0
8、;l5;l+) strcpy(AFDi.opname,);AFDl.flag=0;AFDl.opfprotect0=0;AFDl.opfprotect1=0;AFDl.opfprotect2=0;AFDl.rwpoint=0; void Open(int i) int l,k,n;char ;for(l=0;l5;l+) if(!AFDl.flag) break; printf(请输入你想打开的文件名:); scanf(%s,file);for(n=0;n5;n+)if(!strcmp(AFDn.opname,n.flag)printf(heopened!n,;for(k=0;k10;k+)
9、if(!strcmp(UFDi.Udirk.fname,i.Udirk.flag)strcpy(AFDl.opname,UFDi.Udirk.fname);AFDl.opfprotect0=UFDi.Udirk.fprotect0;AFDl.opfprotect1=UFDi.Udirk.fprotect1;AFDl.opfprotect2=UFDi.Udirk.fprotect2;AFDl.flag=1;printf(文件已打开!n);return;printf(文件不存在!n);return;void Create(int i) int k;for(k=0;k=10) printf( 一个用
10、户不能拥有超过10个文件nn);return;printf(请输入你想创建的文件名:);scanf(%s,UFDi.Udirk.fname);printf(请输入文件长度:);scanf(%d”,&UFDi.Udirk.flength);printf(只读?(1 yes,0 no):);scanf(%d”,&UFDi.Udirk.fprotect0);printf(可写?(1 yes,0 no):);scanf(%d”,&UFDi.Udirk.fprotect1);printf(可执行?(1 yes,0 no):);scanf(%d”,&UFDi.Udirk.fprotect2);UFDi.U
11、dirk.flag=1; return;void Delete(int i)char ; int k;printf(请输入你想删除的文件名:);scanf(%s,file);for(k=0;k10;k+) if(UFDi.Udirk.flag&!strcmp(UFDi.Udirk.fname,file)printf(文件已删除! n);UFDi.Udirk.flag=0;break;else if(!UFDi.Udirk.flag&!strcmp(UFDi.Udirk.fname,file) printf(文件不存在!n); return; void Read() int l;char ;pr
12、intf(请输入你想读的文件:);scanf(%s,file);for(l=0;l=5) printf(文件尚未打开,请先打开文件 n); return;void Write()int l;char ;printf(请输入你想写的文件:);scanf(%s,file);for(l=0;l=5) printf(文件尚未打开,请先打开文件 n); return;void printUFD(int i)int k;printf(主文件目录:n,UFDi.uname);printf(用户名t文件名t可读 可写 可执行t文件长度n);for(k=0;k10;k+)if(UFDi.Udirk.flag)p
13、rintf(%st%st%d %d %dtt%dBn,UFDi.uname,UFDi.Udirk.fname,UFDi.U dirk.fprotect0,UFDi.Udirk.fprotect1,UFDi.Udirk.fprotect2,UFDi.Udirk.flength); void printAFD(int i) int l,k;if (!AFD0.flag&!AFD1.flag&!AFD2.flag&!AFD3.flag&!AFD4.flag) printf(当前没有运行的文件! n); return; else printf(运行文件目录:n); printf(文件名t可读 可写 可
14、执行n); for(l=0;l5;l+)for(k=0;k10;k+) if(!strcmp(UFDi.Udirk.fname,AFDl.opname)&UFDi.Udirk.flag&aAFDl.flag) break ;)else continue; )if(!strcmp(UFDi.Udirk.fname,AFDl.opname)&UFDi.Udirk.flag&AFDl.flag) printf(%st%d %d %dn,AFDl.opname,AFDl.opfprotect0,AFDl.opfprot ect1,AFDl.opfprotect2); ) void Close() in
15、t l; char ; printf(请选择文件:); scanf(%s,file); for(l=0;l=5) printf(文件打开失败!n); return;void main() int i,n=0;char m10;char login10;intFSystem();printf(欢迎使用 n);printf(1.本系统模拟文件管理2.系统已初始化10个用户,n用户名分别是aj,每个用户已分配五个文件n);printf(*本系统的命令包括如下:n);printf(* 创建文件(create)n);printf(* 删除文件(delete)n);printf(* 打开文件(open)n
16、);printf(* 关闭文件(close)n);printf(* 读取文件(read)n);printf(* 编写文件(write)n);printf(* 显示文件目录(printufd)n);printf(*显示打开文件目录(dir)n);printf(* 退出(exit)n);lgin: printf(请输入用户名(aj) :);scanf(%s,login);if(!strcmp(login,exit) return;for(i=0;i=10) printf(该用户名不存在!); goto lgin; printUFD(i);for(;n!=1;)printf(请输入命令:);scan
17、f(%s,&m);if(strcmp(m,create)=0) Create(i);else if(strcmp(m,delete)=0) Delete(i);else if(strcmp(m,open)=0) Open(i);else if(strcmp(m,close)=0) Close();else if(strcmp(m,read)=0) Read();else if(strcmp(m,write)=0) Write();else if(strcmp(m,printufd)=0) printUFD(i);else if(strcmp(m,dir)=0) printAFD(i);else
18、 if(strcmp(m,exit)=0) n=1;else printf(出错 n);printf(Saving.n);printUFD(i);getch();return;用户登录时的界面如下:彼编显显退要户隆麴耀疆望粮第 叩彳包括如1 =( c i* e ate C delete Cc lose Cifce slACwr-it;e:目录PLlntufQ)文件目录用户名(J =b件名可读可与可执行(T户,文件长度 1R3RB 1247B 1092B 1284B用户对此模拟系统进行各项操作的界面如下:可执彳 19N k件Id.瞿:黑打,读u写:P牛事二:1IH1 Fn H H 111 0QtXnl 一心c1好记 殳-受 d内1-土时 一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安徽中医药高等专科学校高职单招职业适应性测试备考试题有答案解析
- 2026年黑龙江旅游职业技术学院单招职业技能笔试模拟试题带答案解析
- 儿科护理心理护理策略
- 医疗人工智能在辅助决策中的应用
- 护理专业课程体系建设与改革研究
- 医疗健康保险的区块链技术应用
- 医疗资源分配与护理效率提升
- 2026年黑龙江商业职业学院高职单招职业适应性测试备考试题带答案解析
- 思修题库及答案
- 2026年安徽邮电职业技术学院单招综合素质笔试备考题库带答案解析
- 高校科研项目立项及管理规范
- 钣喷质检员考试题及答案
- 学生安全教育家长会课件
- 2026年云南省高二物理学业水平合格考试卷试题(含答案详解)
- 《事故隐患排查治理资金使用专项制度》
- 完整版污水处理池施工组织设计方案
- 2025版数据安全风险评估报告(模板)
- 国开11073+《法律文书》期末复习资料
- 钢结构工程监理合同
- 企业ERP系统维护操作手册
- 眼耳鼻喉科2019年院感工作计划
评论
0/150
提交评论