《《操作系统》课程设计报告(08本科).docx》由会员分享,可在线阅读,更多相关《《操作系统》课程设计报告(08本科).docx(12页珍藏版)》请在第一文库网上搜索。
1、上海建桥学院信息技术系操作系统课程设计实训报4任务名称:文件系统管理指导教师:蒋中云专 业:计算机班 级:3班学生姓名:张爱民学 号:08B01010309完成日期:2010-7-8一、操作系统课程设计的目的与要求1、目的随着社会信息量的不断增长,要求计算机处理的信息与日俱增,涉及到社会生活的各个方面。因此,文件管理是操作系统的一个极为重要的组成部分。学生应独立地用C语言(或其它程序设计语言)编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识。2、要求(1) 设计一个有n个用户的文件系
2、统,每个用户最多可保存m个文件。(2) 限制用户在一次运行中只能打开1个文件。(3) 系统应能检查输入命令的正确性,出错要显示出错原因。(4) 对文件必须设置保护措施,如只能执行,允许读、允许写等。在每次打开文件时,根据本次打开的要求,再次设置保护级别,即可有二级保护。(5) 对文件的操作至少应有下述几条命令:creat 建立文件。delete删除文件。open打开文件。close关闭文件。read读文件。write写文件。二、简述课程设计内容、主要功能和实现环境(1) 本任务设计一个10个用户的文件系统,每个用户最多可保存10个文件,一次运行中用户可打开5个文件。(2) 程序采用二级文件目录
3、,即设置主文件目录(MFD)和用户文件目录(UFD)。前者应包含文件主(即用户)及他们的目录区指针;后者应给出每个文件主占有的文件目录,即文件名,保护码,文件长度以及他们存放的位置等。另外为打开文件设置运行文件目录(AFD),在文件打开时应填入打开文件号,本次打开保护码和读写指针等。(3)为了便于实现,简化对文件的读写操作,在执行读写命令时,只修改读写指针,并不进行实际文件的读写操作。主要功能:初始化后各个用户注册目录下均为空,用户可进行创建编辑文件,显示文件内容,删除文件,复制文件,粘贴文件,创建目录,删除目录,更改工作目录,显示当前工作目录的全路径,显示当前目录下的全部内容,寻求帮助及用户
4、切换等操作实现环境:TC2.0三、任务的分析、设计、实现和讨论1、任务的分析本程序设计了一个树形目录结构的文件管理系统,初始化系统默认根目录为root,根目录下为11个用户的注册目录,包括一个超级用户su和十个普通用户studOl-studlO,初始化的树形分支结构如下:rootsustudOl stud02 stud()3 stud04 stud05 stud06 stud07 stud08 stud09studl02、任务的设计与实现(分别给出系统总控和本人负责实现的算法流程图与说明)3操作过程和结果分析程序运行时,当输入用户名SU和密码SU后系统提示登录成功,按任意键进入文件管理界面。在
5、当前目录下创建新的目录chaoyang和新的文件QQ,并编辑文件QQ,最后用wq保存并退出,用Is命令查看当前目录下的所有内容,目录名的后缀为/,文件为一.一 旧 Msu IttpvidZroot/susulttmkdirdirectory name:chaopangsulttuif ile name:QQlinenum:。0:Helloeuerybody?1:wqNov/ saving the fileTPress any key and exitsulttlsQQ* chaoyang/用Is查看当前目录下的全部内容并用rm命令删除文件QQ,用1s确定是否已删除该文件。国 -口区sulttp
6、astefile name:ye(sulttcatf ile name:ye0:Hello-everybody?sulttlsye* QQ* chaoyang/su Ittrnf ile name:QQ(sulttcatfile name:ye0:Hello j-euerybody?sulttlsye* chaoyang/sultt4、思考题的解答和讨论(1)编制一个通过屏幕选择命令的文件管理系统,每幅屏幕要为用户提供足够的选择信息,不需要输入冗长的命令。printfC欢迎使用文件管理系统n);printf (* * *n);printf ( 1-CreatFile-创建文件n);printf
7、 (/z 2-DeleteFile-删除文件n);printf (z,3-OpenFile-打开文件n);printf (,z 4WriteFile一输入文件内容n);printf (,z 5-CopyFile一复制文件n);printf (/z 6-ModifyFile-修改文件n);printf (/z 8-ExitFile 退出n);四、操作系统课程设计小结(收获不足与建议)这个星期是我们操作系统实训,经过几天的实训,让我领会到了许多平时课堂上所没有接受的课外知识,很让人受益匪浅,懂得如何去运用,而进行的一次分析设计综合的训练。而本次实训的目的是让我们能够独立地用C语言编写和调试一个简单
8、的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识应用现有的数据库管理系统软件,规范、科学地完成一个设计与实现。由于这次实训的主要工具是C语言,而我的C学的不是很好,所以此次作业主要由组长禹飞来组织,其他同学从旁协助,而我则从网上寻找有关文件管理的资料,需找一些C的翻译语句,实训课是在学习与探索中度过的,短暂的实训是结束了,但其中让我们学到了许多知识,出现许多未知的为什么,如C语言设计课本数据结构 和操作系统设计相应的算法,如何C语言程序设计课本利用相关的设计语句进行编写程序代码以及用编程工具将算法实现
9、,正是在同学的共同努力之下,我们才一步步把问题解决了,最终完成了不可能完成的任务。五、附录(主要源程序和运行结果的清单)#includestring.h #includestdio.hn #includestdlib.h #includemath.h #includeconio.h #definegetnode(type)(type*)malloc(sizeof(type) char sign; char title256J; int num=255; int symbol=0; intshow=0; char str256; struct line char text811; int num
10、; struct line*next; struct line*prior; ; structline*start; struct line*last; struct line*begin; struct line*end; struct line*find(),*dls_store(); structnode char name256; char code256; int attribute; struct node*parent,*firstchild,*nextsibling; structline*start,*last;*p;typedefstructnodeNODE;NODE*ro
11、ot,*g,*su,*useM,*user2,*user3,*user4,*user5,*user6,*user7,*user8,*user9,*userlO; main() p=getnode(NODE); initialization(); entry(); while(symbol=0) clrscr();entry();) clrscr();printf(H%s%cH,title,sign); whi!e(num!=0) gets(str); operation(); switch(num) case1 :pwd();printf(Hn%s%c,title,sign);num=255;
12、break;case2:ls();pnntf(n%s%ctitle,sign);num=255;break;case3:mkdir();printf(Mnl%s%c,title5sign);num=255;break;case4:cd();printf(nn%s%cu,title,sign);num=255;break;case5:vi();printf(un%s%c,title,sign);num=255;break;case6:rm();printf(un%s%c,title,sign);num=255;break;case7:rmdir();printf(un%sJ%cM,title,s
13、ign);num=255;break;case8:help();printf(Mnl%s%c,title5sign);num=255;break;case9:cat();printf(nn%s%c,title,sign);num=255;break;case10:change();printf(nnf%sl%c,title,sign);num=255;break;case11 :copy();printf(nn%s%c,title,sign);num=255;break;case12:paste();printf(Hn%sJ%cM4itle,sign);num=255;break;case13
14、:chpw();printf(Hn%s%cH,title,sign);num=255;break; default:printf(Mncommand notfbundn%s%cM,title,sign); initialization() root=getnode(NODE); strcpy(root-name/,rootM);root-attribute=l; root-parent=NULL; user 10=getnode(NODE); strcpy(userlO-name,nstudlOM);strcpy(user 10-ode/11 Ostudn); user 10-attribute= 1; user 10-parent=root; userlO-firstchild=NULL;userlO-nextsibling=NULL;user9=getnode(NODE);strcpy(user9-name/,studO9M);strcpy(user9-code/09studn); user9-attribute=l; user9-parent=root; user9-firstchild=NULL;user9-nextsibling=userl();user8=getnode(NODE);strcpy(user8-name,stud()8);str