为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

操作系统课程设计文件系统管理

2021-08-31 8页 doc 111KB 11阅读

用户头像 个人认证

tong

暂无简介

举报
操作系统课程设计文件系统管理PleasureGroupOffice【T985AB-B866SYT-B182C-BS682T-STT18】操作系统课程设计文件系统管理评定等级操作系统课程设计文件系统管理学院计算机学院专业计算机科学与技术班级姓名学号2013年1月8日广东工业大学计算机学院制文件系统管理一、实验目的模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看,加深了解文件系统的内部功能的实现。通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了解。...
操作系统课程设计文件系统管理
PleasureGroupOffice【T985AB-B866SYT-B182C-BS682T-STT18】操作系统课程设计文件系统管理评定等级操作系统课程设计文件系统管理学院计算机学院专业计算机科学与技术班级姓名学号2013年1月8日广东工业大学计算机学院制文件系统管理一、实验目的模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看,加深了解文件系统的内部功能的实现。通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质和执行过程有比较深入的了解。二、实验内容和要求编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。在用户程序中通过使用文件系统提供的create,open,read,write,close,delete等文件命令,对文件进行操作。以下主要包括:1.可行性2.需求分析3.概要设计4.详细设计5.测试6.三、可行性分析1、技术可行性对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。利用大二期间学习的数据结构可以模拟出此课程设计的要求。2、经济可行性课程设计作为本课程的练习及进一步加深理解。与经济无关,可以不考虑。(零花费,零收益)3.法律可行性自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。四、需求分析编写程序实现文件系统,主要有以下几点要求:1、实现无穷级目录管理及文件管理基本操作2、实现共享“别名”3、加快了文件检索五、概要设计为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录UFD(UserFileDirectory)。这些文件目录可以具有相似的结构,它由用户所有文件的文件控制块组成。此外,在系统中再建立一个主文件目录MFD(MasterFileDirectory);在主文件目录中,每个用户目录文件都占有一个目录项,其目录项中包括用户名和指向该用户目录的指针。本设计主要实现下面几个数据结构:MDF用户名文件目录指针用户名文件目录指针UFD文件名保护码文件长度文件名···AFD打开文件名打开保护码读写指针总体的流程图如下:六、详细设计主要数据结构:(MasterFileDirectory),主要用以存放用户,可以增加存放密码的字符数组,本设计没有保密安全方面的忧虑,为了使用时操作更简单省去密码。所以,MFD结构仅包括用户名和指向子目录的一个指针,以及指向下一用户的连接点,为线性结构。structMFD{charname[20];UFD(UserFileDirectory),用于存放文件的数据结构。由于本设计为了加快检索速度,使用了二叉排序树的结构,所以UFD结构中相应加入了用于树结构的parent,leftchild,和rightchild记录链接情况。当本文件为普通文件时,为下级记录申请AFD(file),folder为空。同样,当本文件为文件夹时,为它申请相应的空间,AFD为空。以此来达到无穷级别目录的存储。structUFD{UFD*parent;UFD*leftchild;UFD*rightchild;UFD*folder;");printf("\n");temp=temp->link;}}voidBSTtraverse(UFD*fileBST)以区分文件夹printf("..\t");elseprintf("\t");if(fileBST->leftchild!=NULL)创建文件\n");printf("2.创建文件夹\n");printf("3.取消\n");printf("请选择:\n");scanf("%c",&s);fflush(stdin);if(s=='3')return;if(s!='1'&&s!='2')printf("输入错误,请重新输入!\n");}while(s!='1'&&s!='2');if(strcmp(fileBST->name,"NULL")==0)追加\n");printf("2.重写\n");printf("3.取消\n");printf("请选择:\n");scanf("%c",&s);fflush(stdin);if(s=='3')return;if(s!='1'&&s!='2')printf("输入错误,请重新输入!\n");}while(s!='1'&&s!='2');printf("请输入要重写或追加的内容(<100):");scanf("%s",newfile);fflush(stdin);if(s=='1')\t");stemp=stemp->link;}printf("\n是否尝试在共享文件夹中打开(y/n):");do{s=getchar();if(s=='n'||s=='N')returnNULL;elseif(s=='y'||s=='Y')break;elseprintf("输入错误,请重新输入:");}while(s!='y'&&s!='n'&&s!='Y'&&s!='N');stemp=share_file;while(stemp!=NULL){if(strcmp(stemp->file->name,name)==0){temp=stemp->file;break;}stemp=stemp->link;}returntemp;}UFD*operations(UFD*fileBST){while(1){chars;system("cls");if(open_file!=NULL){printf("已打开文件,请及时关闭!\n");printf("文件名\t文件长度\t读写\t共享\t内容");printf("\n");print_open_file();printf("\n");}printf("当前路径:");print_path(fileBST);printf("\n");if(strcmp(fileBST->name,"NULL")==0)printf("本层文件为空!\n");else{printf("本文件夹包含以下文件:\n");BSTtraverse(fileBST);}printf("\n");printf("1.创建文件create\n");printf("2.删除文件delete\n");printf("3.打开文件open\n");printf("4.关闭文件close\n");printf("5.读文件read\n");printf("6.写文件write\n");printf("0.返回上一层/注销\n\n");printf("请选择:");printf("");scanf("%c",&s);fflush(stdin);switch(s){case'1':fcreate(fileBST);break;case'2':fileBST=fdelete(fileBST);break;case'3':fopen(fileBST);break;case'4':fclose();break;case'5':case'6':fread_write(fileBST,s);break;case'0':returnfileBST;default:break;}}}voidLog_in(){MFD*temp=NULL;charname[30];charflag='0';if(mfd_link==NULL){printf("目前还没有创建用户,请创建后再登陆!");getch();return;}do{printf("请输入用户名:");scanf("%s",name);fflush(stdin);if(strcmp(name,"cancel")==0)return;登录\n");printf("2.添加新用户\n");printf("3.查看已注册用户\n");printf("0.退出\n\n");printf("请选择:");printf("");scanf("%c",&s);fflush(stdin);if(s!='0'&&s!='1'&&s!='2'&&s!='3'){printf("输入错误,请重新输入:");getch();fflush(stdin);continue;}switch(s){case'1':Log_in();break;case'2':Init_user();break;case'3':Check_user();break;case'0':return1;default:break;}}return0;}七、测试登录操作:以下为对文件的六个基本操作:无穷级文件、文件路径的显示,以及打开一个不存在的文件的示例:打开普通文件后的情况,此时不能删除文件:本系统未能实现级联删除,操作被禁止:关闭文件后删除操作成功:逐个删除后“文件系统”文件夹也可以删除了:八、总结本次课程设计设计的知识比较广,需要较好的理解能力和编程能力。在本次设计中,花费时间比较多的应该是数据结构的设计与更改了。在开始时仅仅按照实验指导书上的MDF、UFD、AFD做了相应的数据结构,而且里面包含的数据比较少。初衷是在以后的实现时需要再加进去。但是,在以后加进去的时候发现有不少细节需要增加,例如创建一个文件,需要对里面的各个变量进行初始化,在结构体中增加变量的时候就忘记了其他地方的初始化,顾此失彼。另外,在设计之初是想在MFD和UFD中增加一个BST链接以加快检索的,代码打了一半之后有觉得麻烦,代码过长而把它删除改变,变动比较大。所以,经过这次教训,我觉得以后再设计程序之前就应该考虑到具体的数据结构,尽量想得全面一点,这样后面的修改就可以省不少时间,还有就是,尽量不要改数据结构。以上是关于数据结构的。设计了一个号的数据结构,本课程设计的实现就容易多了,但是某些操作还是需要取舍的。例如在建立共享链的时候,本来是在UFD中再加入一个指针以指示共享文件的,但后来发现一个结构体如果吧太多不相关的变量都放在一起的话会变得很混乱,最后另建一个链结构REC。课程设计对编程能力也肯定是一个不错的锻炼。在设计删除函数和操作函数时,原先我是设计为void型的,但是调试的时候发现删除根结点(第一个文件)的时候程序会出错。后来断点检查发现传地址的函数中,其传递的地址不可以在子函数中free掉,这样它的主函数中的地址也会被发生改变的,后来想到了给函数返回一个新的地址。总之,本次实验加深了对文件的存储结构的理解,同时还锻炼了C语言及其数据结构,是一个综合性的实验。
/
本文档为【操作系统课程设计文件系统管理】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索