您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 天津科技大学操作系统课程设计报告
专业:学号:姓名提交日期:操作系统课程设计报告操作系统课程设计报告10201226王芳1【设计目的】1、本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现。2、结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统。……………………………………..【设计内容】为Linux系统设计一个简单的二级文件系统。要求做到以下几点:①可以实现下列几条命令:login用户登录dir列目录create创建文件delete删除文件open打开文件close关闭文件read读文件write写文件cd进出目录②列目录时要列出文件名,物理地址,保护码和文件长度③源文件可以进行读写保护………………………………….【实验环境】Windows7操作平台VisualStudio2010【相关知识综述】理解二级目录的文件系统的组织;掌握常用的数据结构;系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件;使用文件来模拟外存,进行数据结构设计和操作算法的设计,实现一个文件系统并实现基本的文件操作(为了简便文件系统,不考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容)。【设计思路】采用的数据结构、主要的函数说明、程序流程设计等本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记1.主要的数据结构#defineMAXNAME25/*thelargestlengthofmfdname,ufdname,filename表示三种文件的长度都为25*/操作系统课程设计报告10201226王芳2#defineMAXCHILD50/*thelargestchild每个用户下可以有50个文件*/#defineMAX(MAXCHILD*MAXCHILD)/*thesizeoffpaddrno定义一个常量2500个扇区*/typedefstruct/*thestructureofOSFILE*/{intfpaddr;/*filephysicaladdress物理地址*/intflength;/*filelength文件长度*/intfmode;/*filemode:0-ReadOnly;1-WriteOnly;2-ReadandWrite;3-Protect;*/charfname[MAXNAME];/*filename文件名*/}OSFILE;typedefstruct/*thestructureofOSUFD*/{charufdname[MAXNAME];/*ufdname*/OSFILEufdfile[MAXCHILD];/*ufdownfile*/}OSUFD;/*osf文件的数据结构*/typedefstruct/*thestructureofOSUFD'LOGIN*/{charufdname[MAXNAME];/*ufdname*/charufdpword[8];/*ufdpassword*/}OSUFD_LOGIN;typedefstruct/*fileopenmode*/{intifopen;/*ifopen:0-close,1-open*/intopenmode;/*0-readonly,1-writeonly,2-readandwrite,3-initial*/}OSUFD_OPENMODE;2.主要函数voidLoginF();/*LOGINFileSystem*/voidDirF();/*DirFileSystem*/voidCdF();/*ChangeDir*/voidCreateF();/*CreateFile*/voidDeleteF();/*DeleteFile*/voidModifyFM();/*ModifyFileMode*/voidOpenF();/*OpenFile*/voidCloseF();/*CloseFile*/voidReadF();/*ReadFile*/voidWriteF();/*WriteFile*/voidQuitF();/*QuitFileSystem退出文件系统*/voidhelp();3.总体功能程序结构图操作系统课程设计报告10201226王芳3①打开命令的程序流程图②关闭命令的程序流程图操作系统课程设计报告10201226王芳4③写命令程序流程图④删除命令的程序流程图:操作系统课程设计报告10201226王芳5【源程序清单】#includestdio.h#includestring.h#includeconio.h#includestdlib.h#defineMAXNAME25/*thelargestlengthofmfdname,ufdname,filename表示三种文件的长度都为25*/#defineMAXCHILD50/*thelargestchild每个用户下可以有50个文件*/#defineMAX(MAXCHILD*MAXCHILD)/*thesizeoffpaddrno定义一个常量2500个扇区*/typedefstruct/*thestructureofOSFILE*/{intfpaddr;/*filephysicaladdress物理地址*/intflength;/*filelength文件长度*/intfmode;/*filemode:0-ReadOnly;1-WriteOnly;2-ReadandWrite;3-Protect;文件标识可读可写可执行*/charfname[MAXNAME];/*filename文件名*/}OSFILE;//osfile文件的数据结构,一级文件系统上创建的文件上例如WANGFANG存储的就是这些内容typedefstruct/*thestructureofOSUFD*/{charufdname[MAXNAME];/*ufdname*/OSFILEufdfile[MAXCHILD];/*ufdownfile*/}OSUFD;/*osf文件的数据结构*/typedefstruct/*thestructureofOSUFD'LOGIN登录文件的数据结构*/{charufdname[MAXNAME];/*ufdname*/charufdpword[8];/*ufdpassword*/}OSUFD_LOGIN;typedefstruct/*fileopenmode*/{intifopen;/*ifopen:0-close,1-open*/intopenmode;/*0-readonly,1-writeonly,2-readandwrite,3-initial*/}OSUFD_OPENMODE;OSUFD*ufd[MAXCHILD];/*ufdandufdownfiles将osfile实例化ufd,有50个指向该结构的指针*/OSUFD_LOGINufd_lp;//声明了一个具体的变量intucount=0;/*thecountofmfd'sufds表示用户的个数*/intfcount[MAXCHILD];/*thecountofufd'sfiles*/操作系统课程设计报告10201226王芳6intloginsuc=0;/*whetherloginsuccessfully*/charusername[MAXNAME];/*recordloginuser'sname22定义了一个字符数组,存放用户名最大可放25个*/chardirname[MAXNAME];/*recordcurrentdirectory*/intfpaddrno[MAX];/*recordfilephysicaladdressnum*/OSUFD_OPENMODEifopen[MAXCHILD][MAXCHILD];/*recordfileopen/close*/intwgetchar;/*whethergetchar()*/FILE*fp_mfd,*fp_ufd,*fp_file_p,*fp_file;voidLoginF();/*LOGINFileSystem*/voidDirF();/*DirFileSystem*/voidCdF();/*ChangeDir*/voidCreateF();/*CreateFile*/voidDeleteF();/*DeleteFile*/voidModifyFM();/*ModifyFileMode*/voidOpenF();/*OpenFile*/voidCloseF();/*CloseFile*/voidReadF();/*ReadFile*/voidWriteF();/*WriteFile*/voidQuitF();/*QuitFileSystem退出文件系统*/voidhelp();char*rtrim(char*str);/*removethetrailingblanks.*/char*ltrim(char*str);/*removetheheadingblanks.*/voidInputPW(char*password);/*inputpassword,use'*'replace*/voidSetPANo(intRorW);/*Setphysicaladdressnum设置物理地址*/intExistD(char*dirname);/*WhetherDirNameExist,Exist-i,NotExist-0该函数在退出的时候将内容写回磁盘*/intWriteF1();/*writefile*/intExistF(char*filename);/*WhetherFileNameExist,Exist-i,NotExist-0*/intFindPANo();/*findoutphysicaladdressnum找到物理地址*///清屏voidclrscr(){system(cls);}intmain(){inti,choice1;charchoice[50];/*choiceoperation:dir,create,delete,open,delete,modify,read,write*/操作系统课程设计报告10201226王芳7intchoiceend=1;/*whetherchoiceend表示选择是否结束*/char*rtrim(char*str);/*removethetrailingblanks.去除后面的空格*/char*ltrim(char*str);/*removetheheadingblanks.去除前面的空格*///该if语句的目的只是为了检测该文件是否存在,若不存在则创建if((fp_mfd=fopen(c:\\osfile\\mfd.txt,rb))==NULL)//以只写的方式打开文件,返回一个指针,若不存在{fp_mfd=fopen(c:\\osfile\\mfd.txt,wb);//则创建该文件fclose(fp_mfd);//创建成功之后关闭该文件}//将模拟的磁盘区域全部初始化为零for(i=0;iMAX;i++)fpaddrno[i]=0;//textattr(BLACK*16|WHITE);clrscr();/*clearscreen*/LoginF();/*userlogin*/clrscr();if(loginsuc==1)/*LoginSuccessfully*/{while(1){wgetchar=0;if(choiceend==1)printf(\n\nC:\\%s,strupr(dirname));elseprintf(Badcommandorf
本文标题:天津科技大学操作系统课程设计报告
链接地址:https://www.777doc.com/doc-6235011 .html