2022年二级文件系统设计报 .pdf

上传人:C****o 文档编号:39725115 上传时间:2022-09-07 格式:PDF 页数:19 大小:626.81KB
返回 下载 相关 举报
2022年二级文件系统设计报 .pdf_第1页
第1页 / 共19页
2022年二级文件系统设计报 .pdf_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《2022年二级文件系统设计报 .pdf》由会员分享,可在线阅读,更多相关《2022年二级文件系统设计报 .pdf(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第 1 页 共 19 页一.设计目的:通过课程设计,加深对操作系统各资源管理模块的理解,掌握操作系统的基本原理及功能,具有初步分析实际操作系统、设计、构造和开发现代操作系统的基本能力。(1)掌握 linux文件系统的基本原理、结构和实现方法。(2)掌握 linux文件系统中文件的建立、打开、读/写、执行、属性等系统调用的使用(3)学会设计简单的文件系统并实现一组操作(4)通过实验学习文件系统的系统调用命令,提高文件系统实现功能的理解和掌握。二.设计内容:题目:多用户文件系统模拟设计要求:1在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。2文件物理结构可采用显式

2、链接或其他方法。3磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。4文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。5设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:(1)具有login(用户登录)(2)系统初始化(建文件卷、提供登录模块)(3)文件的创建:create(4)文件的打开:open(5)文件的读:read(6)文件的写:write(7)文件关闭:close(8)删除文件:delete(9)创建目录(建立子目录

3、):mkdir(10)改变当前目录:cd(11)列出文件目录:dir(12)退出:logout 三设计过程1、实现功能(1)具有 login(用户登录)(2)系统初始化(建文件卷、提供登录模块)(3)文件的创建:create(4)文件的打开:open(5)文件的读:read(6)文件的写:write(7)文件关闭:close(8)删除文件:delete(9)创建目录(建立子目录):mkdir(10)改变当前目录:cd(11)列出文件目录:dir(12)退出:logout 2、添加功能用位示图的方法把内存的占用情况形象的显示出来,实现多级目录。3、设计思路通过程序模拟 linux 文件系统,在内

4、存中申请100个来模拟存储设备,空间分为三部分,第一部分用来存放位示图,用于标识内存的使用情况,第二部分用于放置文件索引的数据,用于快速的查找数据,第三部分放置数据信名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 19 页 -第 2 页 共 19 页息,设计一个多用户的文件系统,实现一般的创建文件,目录、删除文件、目录,切换目录,打开、关闭文件,读写文件等操作。用户目录中能实现多级目录。Fcb 控制块:Firstblock(第一个物理块)Lastblock(最 后 一个物理块)Blocknum(物 理 块数)Attribute(文 件 属性)数据结构:(1)fat:typedef

5、 struct fat1 int nextblock;/下一个物理块的地址int useflag;/位示图 useflag 0 物理块为空,useflag 1 物理块不空FAT;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 19 页 -第 3 页 共 19 页(2)fcd 文件控制块:typedef struct fcb1 /FAT fat;int firstblock;/第一个物理块号int lastblock;/最后一个物理块号int blocknum;/物理块数int attribute;/0 只读;1 读写;2 可执行FCB;(3)ufd 用户文件目录:struct u

6、fd1 char name20;/文件或文件夹名FCB*fcb;struct ufd1*brother;struct ufd1*parent;struct ufd1*child;int kind;/0 文件夹;1 文件;(4)mfd 主文件目录:struct mfd1 char username20;名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 19 页 -第 4 页 共 19 页UFD*ufd;struct mfd1*next;(5)用户打开的文件表:typedef struct afd UFD*op;char filename20;int attribute;int rea

7、d;int write;AFD;4、算法和流程图名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 19 页 -第 5 页 共 19 页录录名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 19 页 -第 6 页 共 19 页(1)用户登录:void login():用于用户登录实现:通过选择界面选择用户,判断是否有匹配的用户,是则继续,否则,输出错误信息。(2)void initiate():初始化函数实现:用户信息的初始化,文件、文件夹的初始化。(3)void createfile():创建文件用户 1用户 2用户 3用户 n内存System 磁盘件名名?否够用显示位

8、示图名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 19 页 -第 7 页 共 19 页(4)void openfile():打开文件(5)void readfile():读文件模拟把文件读出来并修改读标志位。(6)void writefile():写文件将文件的物理块数增加10 个。(7)void closefile():关闭文件(8)void deletefile():删除文件(9)void createdir():创建子目录打开找文件名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 19 页 -第 8 页 共 19 页(10)void CD():改变子目录四操作

9、界面截图及分析(1)用户登录:(2)创建文件:(3)打开文件:名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 19 页 -第 9 页 共 19 页(4)读文件:(5)写文件:(6)关闭文件:(7)删除文件:(8)创建子目录:名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 19 页 -第 10 页 共 19 页(9)列出文件列表:(10)改变当前目录:五.设计总结:在课程设计之前,我先思考课程设计的思路,熟悉一下所有内容,把以前忘得东西温习一遍,然后才开始课程设计。开始不知要从哪里下手,对文件的知识掌握的也不是很牢固,后来通过上网找资料,采用一个模块一个模块的测试,成

10、功之后才写另一个模块,开始时写登录函数,这个函数也不难,所以不名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 19 页 -第 11 页 共 19 页用花很多时间就把他写完了。接下来的创建文件、读文件、写文件、创建子目录、删除文件、列目录就没有那么简单实现,从网上找来的代码总有些错误,自己反复的调试,有时有调不出个结果来。最后通过自己不断的调试及修改,不懂的上网找资料查书,最终才把各个模块的功能实现。虽然本次课程设计的程序规模不是很大,但在编程中我也体会到作为一名程序员,要有严密的逻辑思维能力的重要性,充分学好一些逻辑学科的重要性;通过这次课程设计,加深了我对 c语言知识的理解,

11、培养了耐心,认真的态度。当然我也深深地感到自己对某些知识的认识不足与缺陷,今后我将通过多看书及多编程来提高自己的编程能力。附录:void login()/用户登录 MFD*t;char name20;int flag=1;printuser();printf(please switch the usern);scanf(%s%*c,name);for(t=mfd-next;t!=NULL&flag=1;t=t-next)if(strcmp(t-username,name)=0)/找到用户 currentuser=t;currentdir=t-ufd;flag=0;if(flag=1)print

12、f(Cannot find the user!n);/申请空间函数,申请成功会返回第一个物理块的位置,返回-1 时,表示申请空间不成功/名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 19 页 -第 12 页 共 19 页void applymemory(UFD*u)if(u-fcb-blocknum=restmemory)int i;int j=0;int t=0;for(i=0;iBNUM&jfcb-blocknum;i+)if(fati.useflag=0)j+;if(j=1)u-fcb-firstblock=i;else fatt.nextblock=i;fati.us

13、eflag=1;restmemory-;t=i;fati-1.nextblock=0;u-fcb-lastblock=i-1;else u-fcb-firstblock=-1;printf(There is not enouth memory);/*显示 fat表 displayfat*/void displayfat()int i;for(i=0;i100;i+)printf(%d,fati.useflag);if(i%10=9)printf(n);else printf();/*initiate*/初始化函数void initiate()MFD*p,*s;名师资料总结-精品资料欢迎下载-名

14、师精心整理-第 12 页,共 19 页 -第 13 页 共 19 页UFD*u,*t,*c;inituser();int i;for(i=0;iufd=getpch(UFD);p-ufd-fcb=getpch(FCB);switch(i)case 0:strcpy(p-username,user1);break;case 1:strcpy(p-username,user2);break;case 2:strcpy(p-username,user3);break;default:printf(There is a mistake);p-ufd-kind=0;strcpy(p-ufd-name,p

15、-username);p-ufd-brother=NULL;p-ufd-child=NULL;p-ufd-parent=NULL;c=p-ufd;/*初始化文件*/u=getpch(UFD);u-fcb=getpch(FCB);u-kind=1;strcpy(u-name,file1);u-fcb-blocknum=10;u-fcb-attribute=i;applymemory(u);if(u-fcb-firstblock!=-1)/申请内存成功 if(c-child=NULL)c-child=u;else t=findlastchild(c);t-brother=u;名师资料总结-精品资料

16、欢迎下载-名师精心整理-第 13 页,共 19 页 -第 14 页 共 19 页 u-brother=NULL;u-parent=c;u-child=NULL;else free(u);/?/*初始化文件夹*/u=getpch(UFD);u-fcb=getpch(FCB);u-kind=0;strcpy(u-name,folder1);c-child-brother=u;u-brother=NULL;u-parent=c;u-child=NULL;for(s=mfd;s-next!=NULL;s=s-next);s-next=p;p-next=NULL;void createfile()UFD

17、*u,*t,*p;u=getpch(UFD);u-fcb=getpch(FCB);u-kind=1;printf(Please input filename:);scanf(%s%*c,u-name);for(p=currentdir-child;p!=NULL;p=p-brother)if(strcmp(p-name,u-name)=0)/如果文件重名,则要求输入 printf(The file exist!n);return;printf(please write down the lengthn);scanf(%d,&u-fcb-blocknum);printf(Please write

18、 the file attribute:0 for read,1 for write,2 for excutabeln);scanf(%d,&u-fcb-attribute);applymemory(u);displayfat();if(u-fcb-firstblock!=-1)名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 19 页 -第 15 页 共 19 页if(currentdir-child=NULL)currentdir-child=u;else t=findlastchild(currentdir);t-brother=u;u-brother=NULL;u-par

19、ent=NULL;u-child=NULL;else free(u);/释放/*open file*/void openfile()char name20;int flag=1;int j=0;UFD*p;printf(Please input name:n);scanf(%s%*c,&name);while(jchild;p!=NULL&flag=1;p=p-brother)/判断在文件目录中该文件是否存在 if(strcmp(p-name,name)=0)if(listfcb-attribute;openlistlist.read=0;openlistlist.write=p-fcb-bl

20、ocknum;list+;名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 19 页 -第 16 页 共 19 页 else/如果超出 5 个,便给出提示信息 printf(You can only open five files at one time!n);flag=0;if(flag=1)printf(The file does not exist!n);/*read file*/void readfile()char name20;int flag=1;int j=0;printf(please input filename:);scanf(%s%*c,&name);wh

21、ile(jlist&flag=1)/先在用户打开文件表中看看是否可以找到该文件名 if(strcmp(openlistj.filename,name)=0)openlistj.read=openlistj.write;/默认将文件读完,即读指针在文件末尾处flag=0;j+;if(flag=1)/如果该文件没有被打开,给出提示信息printf(The file has not been opened!n);/*write file*/void writefile()char name20;int flag=1;int j=0;printf(please input filename:);sca

22、nf(%s%*c,&name);while(jlist&flag=1)/先在用户打开文件表中看看是否可以找到该文件名 if(strcmp(openlistj.filename,name)=0)openlistj.write=openlistj.write+10;/写文件,默认在原来文件长度上追加10 名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 19 页 -第 17 页 共 19 页flag=0;j+;if(flag=1)/如果该文件没有被打开,给出提示信息printf(The file has not been opened!n);*close file*/void clo

23、sefile()int j=0;int flag=1;char name20;UFD*p;printf(please input filename:);/读文件名scanf(%s%*c,&name);while(jchild;p!=NULL&flag=1;p=p-brother)if(strcmp(p-name,name)=0)/判断是否在文件目录中也存在 if(p-fcb-blocknum!=openlistj.write)p-fcb-blocknum=openlistj.write;/如果写过,便将长度写回文件目录中的 length addapplymemory(openlistj.op)

24、;displayfat();flag=0;for(int k=j;klist-1;k+)/将该记录从打开文件表中删掉,并且把后面的记录往前移动 strcpy(openlistk.filename,openlistk+1.filename);openlistk.attribute=openlistk+1.attribute;openlistk.read=openlistk+1.read;openlistk.write=openlistk+1.write;openlistk.op=openlistk+1.op;list-;/用户打开的文件表的记录总数减1 名师资料总结-精品资料欢迎下载-名师精心整

25、理-第 17 页,共 19 页 -第 18 页 共 19 页j+;if(flag=1)printf(The filename does not exist!n);void deletefile()UFD*p,*t;int j=0,i=0;int flag=1;char name20;printf(Please input filename:);/输入文件名scanf(%s%*c,&name);while(jchild;p!=NULL&flag=1;p=p-brother)/在用户的文件目录中找文件 if(strcmp(p-name,name)=0)/如果找到文件 deletememory(p)

26、;displayfat();if(i=0)currentdir-child=p-brother;else t-brother=p-brother;free(p);/释放flag=0;printf(delete the file successfully!n);i+;t=p;if(flag=1)/找不到,即文件不存在printf(The file doesnt exist!n);/*create dir*/void createdir()名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 19 页 -第 19 页 共 19 页UFD*u,*t;u=getpch(UFD);u-fcb=getpch(FCB);u-kind=0;printf(please write down the namen);scanf(%s,u-name);if(currentdir-child=NULL)currentdir-child=u;else t=findlastchild(currentdir);t-brother=u;u-brother=NULL;u-parent=currentdir;u-child=NULL;名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 19 页 -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁