《操作系统原理》课程设计任务书题目:文件系统实验学生姓名:学号:班级:题目类型:软件工程(R)指导教师:一、设计目的学生通过该题目的设计过程,可以初步掌握操作系统中有关文件系统的原理、软件开发方法并提高解决实际问题的能力。二、设计任务1、了解UNIX的命令及使用格式,熟悉UNIX/LINUX的常用基本命令,练习并掌握UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序。2、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。要求设计一个n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。三、设计要求1、分析设计要求,给出解决方案(要说明设计实现所用的原理、采用的数据结构)。2、设计合适的测试用例,对得到的运行结果要有分析。3、设计中遇到的问题,设计的心得体会。4、文档:课程设计打印文档每个学生一份,并装在统一的资料袋中,资料袋前面要贴有学校统一的资料袋封面。5、光盘:每个学生文档和程序资料分别建在一个以自己学号和姓名命名的文件夹下,并要求每班负责人汇总每个学生的文件放在以班级姓名命名的文件夹下,刻录成5寸光盘,并复制四份(共五张内容相同的光盘),放在一个专门的资料袋中,不必再装软盘四、提交的成果1.设计任务书一本(学校统一格式)2.设计说明书一份,内容包括:1)中文摘要100字;关键词3-5个;2)设计思想;3)各模块的伪码算法;4)函数的调用关系图;5)测试结果;6)设计总结;7)参考文献、致谢等。五、主要参考文献1.汤子瀛,哲凤屏.《计算机操作系统》.西安电子科技大学学出版社.2.王清,李光明.《计算机操作系统》.冶金工业出版社.3.孙钟秀等.操作系统教程.高等教育出版社4.曾明.Linux操作系统应用教程.陕西科学技术出版社.5.张丽芬,刘利雄.《操作系统实验教程》.清华大学出版社.6.孟静,操作系统教程--原理和实例分析.高等教育出版社7.周长林,计算机操作系统教程.高等教育出版社8.张尧学,计算机操作系统教程,清华大学出版社9.任满杰,操作系统原理实用教程,电子工业出版社六、各阶段时间安排(共2周)周次日期内容地点完成情况教师签字第1周星期一~二教师讲解设计要求查找参考资料教室图书馆星期三~五算法设计,编程实现实验室第2周星期一~三算法设计,编程实现实验室星期四~五检查程序,答辩实验室目录前言......................................................................................................................4摘要......................................................................................................................5正文......................................................................................................................61.设计思想......................................................................................................62.算法用到的主要数据结构(采用类C语言定义)...................................73.相关的各模块的伪码算法..........................................................................84.调试分析....................................................................................................105.测试结果....................................................................................................106.源程序(带注释)....................................................................................12总结....................................................................................................................18参考文献................................................................................................................19致谢....................................................................................................................20附件Ⅰ部分源程序代码......................................................................................264前言文件系统是操作系统中用来存储和管理信息的机构。文件系统具有按名存取的功能,不仅能方便用户使用,而且能提高系统效率和保证信息的安全可靠,文件系统向用户提供了一整套的文件体统调用命令,在用户程序中用户可通过使用文件系统提供的一系列命令对文件进行操作。5摘要本程序将模拟一个很简单的文件系统,实现对文件的管理和控制功能,其功能对文件的增加、删除、显示、改,以及对文件目录的查询(显示)、改变、创建、删除、等操作文件采用的物理结构为连续。关键词:文件系统;文件指针;模拟;管理信息6正文1.设计思想程序是采用二级文件目录。(即设置主目录(MFD)和用户文件目录(UFD)。另外,为打开文件设置指针。为了方便实现,对文件的读写作了简化。在执行读写命令时,只需改读写指针。并不进行实际的读写操作。框图如下:(用户“1”文件目录)(用户目录)1文件名保护码文件长度文件指针MFD2用户1(名字)3用户24用户35用户4678910(用户“2”文件目录)1文件名保护码文件长度文件指针2345678910实验开始,先进入MFD表,初值为空。输入用户名字,需要保存用户名字,同时也有了有个新文件目录表。接着是文件的一系列的基本操作:1、打印所有文件名。2、打开一个文件。3、添加一个文件。4、删除一个文件。75、改文件的保护码。6、写文件。7、读文件。8、退出。可以,重复用户登陆。开始输入用户名在MFD中找到该用户显示该用户目录表UFD中所有的文件初始化运行文件表AFD输入操作命令是什么命令openallopencreateexitdelectechangewriteread打开全部打开单个建立一删除改变写文件读文件文件文件个文件文件保护码退出结束2.算法用到的主要数据结构(采用类c语言定义)//结构体,用户变量structuser{charname[10];8}user[10];//结构体,文件变量structlink{structfile{charname[10];//文件名intlenght;//文件长度intwrite;//读文件intread;//写文件intexe;}file[10];intused;}link[10];3.相关的各模块的伪码算法检测用户函数checkuser(){for(inti=0;i10;i++){s=strcmp(“cinname”,user.name);if(s==0)returni;}建立用户函数createuser(){strcpy(user..name,”cinname”);link[in].used=0;in++;}打开所有文件openall(){If:filep==0,fileisempty;else:{cout文件名------读保护------写保护------执保护endl;cout、、、、、、、、、相、、、、、、、、关、、、、、、、、、值、、、、、、、、}}打开单个文件openfile(){if:cinname;9inti=find();cannotfind;filenotexistelse:{cout文件名------读保护------写保护------执保护------文件长度cout、、、、、、相、、、、、、、、关、、、、、、、、、、、值、、、、、、、、、、、}}建立文件createfile(){cinfilename;write=0;read=0;exe=0;lenght=0;}删除文件deletefile(){cinfilenameUsefunctionfind()Ifcannotfind;cout此文件不存在!;else{deletefileandsomefilepointers;}写文件write(){cinfilenameFunctionfind();If:cannotfindcout此文件不存在!;else:{cinlengthfile.lenght+=l;}}读文件read(){cinfilename;Functionfind();If:cannotfindcout此文件不存在!else:{cout文件已经打开cout文件长度为:file.length}10}查找find(){for(inti=0;i10;i++){a=strcmp(“cinname”,file.name);if:a=0,returni;}}4.调试分析调试中遇到的问题及对问题的解决方法由于文件管理系统相对于本人来说不是那么容易就可以轻易实现的,在设计之前,我先做了些准备工作,首先设计在实现程序中要用到的数据结构模型,使用了结构体数据结构,然后将各个功能模块化,依次编写,调试。在设计过程中遇到的问题主要有两大方面:1.以前C语言相关知识的淡忘,特别是在定义结构体时候,刚开始甚至都没想到结构体这个概念,还在一味思考着如何用链表实现一个包含相当多数据信息的数据表,直到在参考以前课本的时候,偶然瞥见结构体的部分,顿时恍然大悟,就像一下子找到了救星一样,结果将每个教师的相关信息定义成一个结构体,以及链表的结构体,很轻松的解决了问题,回想一下,这个课题本来就必须用到结构体的知识,但是自己却把它忘记得干干净净,往后去还应该好好复习旧知识。2.自己不注意细节而造成的问题;程序感觉一切OK,操作运行时发现第一次输入用户名后就在无法再添加用户,于是改添了主菜单和判断条件,使程序可以转入主菜单进行添加用户操作;不过还因有时操作不当使程序陷入死循环,原来是goto功能的使用,使程序的跳转有些乱,修改后就Ok了。虽然goto的使用可能是程序显得有些乱,但在此程序中使用,使程序的编写容易了很多。5.测试结果进入Vc++6.0。运行源代码,结果如下:11选择”2”添加用户,输入用户名,选择”1”进行文件选择”3”添加文件后,选”6”写文件:126.源程序(带注释)#includeiostream.h#includestring.h#includestdio.h#includeiomanip.