2022年操作系统文件系统实验程序 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年操作系统文件系统实验程序 .pdf》由会员分享,可在线阅读,更多相关《2022年操作系统文件系统实验程序 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一 . 实验目的用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。二、实验要求要求设计一个n 个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create 、delete 、open、close 、read 、write等命令。程序采用二级文件目录(即设置主目录MFD)和用户文件目录(UFD )。另外,为打开文件设置了运行文件目录(AFD )。在执行读写命令时,需改读写指针。因系统小,文件目录的检索使用了简单的线性搜索。文件保护简单使用了三位保护码:允许读写执行
2、、对应位为1,对应位为0,则表示不允许读写、执行。程序中使用的主要设计结构如下:主文件目录和用户文件目录(MFD 、UFD )、打开文件目录( AFD )(即运行文件目录)M D F 用户名文件目录指针U F D 文件名保护码文件长度A F D 打开文件名打开保护码读写指针文件系统算法的流程图如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 11 页 - - - - - - - - - #include #include #define N 10 #define L
3、10 #define S 6 struct mfd_type char uname20; int uaddr; ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - struct ufd_type char fname20; char fattr10; int recordl; int addrf; ; struct uof_type char fname20; char fattr10; int recordl; char f
4、statue;/1:建立0:打开int readp; int writep; ; int fdphN*L;/存放文件在磁盘上的第一个空间编号int fdptN*L;/存放文件在磁盘上的最末一个空间编号int disk400;/ 存放磁盘空闲块号int diskt,diskh;/ 空闲块的尾、首指针最末struct mfd_type mfdN; struct ufd_type ufdN *L; struct uof_type uofN *S; int temp,mi,ni,uno ,ucounter; void create(char cfname20,int crecordl,char cfa
5、ttr10) int cltemp1=uno*L,cltemp2=(uno+1)*L,frd; while (cltemp1cltemp2)&(strcmp(ufdcltemp1.fname,cfname)!=0) cltemp1+; if(strcmp(ufdcltemp1.fname,cfname)!=0) cltemp1=uno*L; while (cltemp1cltemp2)&(strcmp(ufdcltemp1.fname,)!=0) cltemp1+; if(strcmp(ufdcltemp1.fname,)=0) frd=cltemp1; cltemp1=uno*S; clte
6、mp2=(uno+1)*S; while (cltemp1cltemp2)&(strcmp(uofcltemp1.fname,)!=0) cltemp1+; if(strcmp(uofcltemp1.fname,)=0) if (diskdiskh!=-1) strcpy(uofcltemp1.fname,cfname); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 11 页 - - - - - - - - - strcpy(uofcltemp1.fattr,cfat
7、tr); uofcltemp1.recordl=crecordl; uofcltemp1.fstatue=1; uofcltemp1.readp=diskdiskh; uofcltemp1.writep=diskdiskh; fdphfrd=diskdiskh; fdptfrd=diskdiskh; strcpy(ufdfrd.fname,cfname); strcpy(ufdfrd.fattr,cfattr); ufdfrd.recordl=crecordl; ufdfrd.addrf=diskdiskh; diskh=diskdiskh; printf(%sn, 文件建立成功!); els
8、e printf(%sn, 磁盘没有空间,不能建文件!); else printf(%sn, 没有空的登记拦1,不能建文件 ); else printf(%sn, 没有空的登记拦2,不能建文件); else printf(%sn, 同名文件不能建立!); ; void open(char pfname20,char ooptype10) int cltemp1=uno*L,cltemp2=(uno+1)*L; int cltemp3=uno*S,cltemp4=(uno+1)*S; while (cltemp1cltemp2)&(strcmp(ufdcltemp1.fname,pfname)!
9、=0) cltemp1+; if(strcmp(ufdcltemp1.fname,pfname)=0) while (cltemp3cltemp4)&(strcmp(uofcltemp3.fname,pfname)!=0) cltemp3+; if(strcmp(uofcltemp3.fname,pfname)=0)/有文件 if(uofcltemp3.fstatue=0) printf(%sn,文件已打开!); else printf(%sn, 此文件正在建立,不能打开!); else/无文件 if(strcmp(ufdcltemp1.fattr,ooptype)!=0) printf(%s
10、n,操作不合法, 不能打开! ); else cltemp3=uno*S; while (cltemp3cltemp4)&(strcmp(uofcltemp3.fname,)!=0) cltemp3+; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 11 页 - - - - - - - - - if(strcmp(uofcltemp3.fname,) printf(%sn, 在已开表中没有空拦,不能打开文件!); else strcpy(uofcltemp3.fname
11、,pfname); uofcltemp3.recordl=ufdcltemp1.recordl; strcpy(uofcltemp3.fattr,ufdcltemp1.fattr); uofcltemp3.readp=ufdcltemp1.addrf; uofcltemp3.writep=ufdcltemp1.addrf; uofcltemp3.fstatue=0; printf(%sn, 打开文件成功!); else printf(%sn, 此文件已不存在,不能打开!); ; void write(char wfname20,int wrecordno) int cltemp1=uno*L,
12、cltemp2=(uno+1)*L; int cltemp3=uno*S,cltemp4=(uno+1)*S; while (cltemp3cltemp4)&(strcmp(uofcltemp3.fname,wfname)!=0) cltemp3+; if(strcmp(uofcltemp3.fname,wfname) printf(文件没有建立或打开,不能写 );/ 在已开文件中没有次文件,不能写else/文件建立或打开 if(uofcltemp3.fstatue)/ 建立 printf(%s%d%s, 写第 ,uofcltemp3.writep,块空间! ); if(diskdiskt=-
13、1) printf(%sn, 没有空闲块不能写!); else uofcltemp3.writep=diskdiskt; diskt=diskdiskt; printf(%sn, 写文件成功!); else/打开 if(strcmp(uofcltemp3.fattr,r)=0) printf(%sn, 操作不合法,不能写!); else 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 11 页 - - - - - - - - - if(diskdiskt=-1) prin
14、tf(%sn, 没有空闲块不能写!); else printf(%s%d%sn, 写第 ,uofcltemp3.writep,块空间! ); uofcltemp3.writep=diskuofcltemp3.writep; printf(%sn, 写文件成功!); ; void read(char rfname20,int rreadl) int cltemp1=uno*S,cltemp2=(uno+1)*S,frd; while (cltemp1cltemp2)&(strcmp(uofcltemp1.fname,rfname)!=0) cltemp1+; if(strcmp(uofcltem
15、p1.fname,rfname)=0) printf(%s%d%sn, 第,uofcltemp1.readp, 块读 ); frd=fdphuno*L; while (cltemp2!=diskfrd)&(diskfrd!=-1) frd=diskfrd; uofcltemp1.readp=diskfrd; printf(%sn, 文件读成功 ); else printf(%sn, 文件未打开不能读); ; void close(char cofname20) int cltemp1=uno*S,cltemp2=(uno+1)*S; while (cltemp1cltemp2)&(strcmp
16、(uofcltemp1.fname,cofname)!=0) cltemp1+; if(strcmp(uofcltemp1.fname,cofname)=0) printf(uofcltemp1.fname=%s,cofname%sn,uofcltemp1.fname,cofname); cltemp2=uofcltemp1.fstatue; printf(uofcltemp1.fstatue=%dn,cltemp2); switch (cltemp2) case 1:printf(%sn, 写文件结束符。);/ 置文件结束状态case 0:strcpy(uofcltemp1.fname,);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年操作系统文件系统实验程序 2022 操作系统 文件系统 实验 程序
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内