资源描述:
《实验六 文件系统设计结果.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.实验六文件系统设计1.目的和要求本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现。2.实验内容为DOS系统设计一个简单的二级文件系统,可以实现下列几条命令DIR列文件目录CREATE创建文件DELETE删除文件MODIFY修改文件OPEN打开文件CLOSE关闭文件列目录时要列出文件名,物理地址,保护码和文件长度。3.实验环境①PC兼容机②Windows、DOS系统、Turboc2.0③C语言4.实验提示①首先应确定文件系统的数据结构:主目录、活动文件等。主目录文件
2、的形式存放于磁盘,这样便于查找和修改。主目录结构:Ufdname用户名Ufdfile指向用户的活动文件活动文件结构:Fpaddr文件物理地址Flength文件长度Fmode文件属性(filemode:0-ReadOnly;1-WriteOnly;2-ReadandWrite(default))Fname文件名称②用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2…word范文.并以编号作为物理地址,在目录中进行登记。③本程序需要在c:下建一个名为osfile的目录及一个名为f
3、ile的子目录,在利用程序创建了文件系统后,可以在这个文件夹下查看到相关的内容。5.实验程序#include"stdio.h"#include"string.h"#include"conio.h"#include"stdlib.h"#defineMAXNAME25/*thelargestlengthofmfdname,ufdname,filename*/#defineMAXCHILD50/*thelargestchild*/#defineMAX(MAXCHILD*MAXCHILD)/*thesizeo
4、ffpaddrno*/typedefstruct/*thestructureofOSFILE*/{intfpaddr;/*filephysicaladdress*/intflength;/*filelength*/intfmode;/*filemode:0-ReadOnly;1-WriteOnly;2-ReadandWrite(default);*/charfname[MAXNAME];/*filename*/}OSFILE;typedefstruct/*thestructureofOSUFD*/{c
5、harufdname[MAXNAME];/*ufdname*/OSFILEufdfile[MAXCHILD];/*ufdownfile*/}OSUFD;typedefstruct/*thestructureofOSUFD'LOGIN*/{charufdname[MAXNAME];/*ufdname*/charufdpword[8];/*ufdpassword*/}OSUFD_LOGIN;typedefstruct/*fileopenmode*/{intifopen;/*ifopen:0-close,1
6、-open*/intopenmode;/*0-readonly,1-writeonly,2-readandwrite,3-initial*/}OSUFD_OPENMODE;OSUFD*ufd[MAXCHILD];/*ufdandufdownfiles*/OSUFD_LOGINufd_lp;intucount=0;/*thecountofmfd'sufds*/word范文.intfcount[MAXCHILD];/*thecountofufd'sfiles*/intloginsuc=0;/*whethe
7、rloginsuccessfully*/charusername[MAXNAME];/*recordloginuser'sname22*/chardirname[MAXNAME];/*recordcurrentdirectory*/intfpaddrno[MAX];/*recordfilephysicaladdressnum*/OSUFD_OPENMODEifopen[MAXCHILD][MAXCHILD];/*recordfileopen/close*/intwgetchar;/*whetherge
8、tchar()*/FILE*fp_mfd,*fp_ufd,*fp_file_p,*fp_file;voidmain(){inti,j,choice1;charchoice[50];/*choiceoperation:dir,create,delete,open,delete,modify,read,write*/intchoiceend=1;/*whetherchoiceend*/char*rtrim(char*str);/*removethetrail