您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 操作系统模拟文件管理
操作系统课程设计报告院系:计算机科学技术学院计算机科学与技术系班级:计07--2班姓名:刘德庆学号:12指导教师:鲁静轩2009年6月15日模模拟拟文文件件管管理理目目))操作系统课程设计第1页操作系统课程设计任务书一、设计题目:模拟文件管理二、设计目的《操作系统原理》课程设计是软件工程专业实践性环节之一,是学习完《操作系统原理》课程后进行的一次较全面的综合练习。其目的在于加深对操作系统的理论、方法和基础知识的理解,掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,培养学生的系统设计能力,并了解操作系统的发展动向和趋势。三、设计要求(1)选择课程设计题目中的一个课题,合作完成。(2)良好的沟通和合作能力(3)充分运用前序课所学的软件工程、程序设计等相关知识(4)充分运用调试和排错技术(5)简单测试驱动模块和桩模块的编写(6)查阅相关资料,自学具体课题中涉及到的新知识。(7)课题完成后必须按要求提交课程设计报告,格式规范,内容详实四、设计内容及步骤1.根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么。2.根据实现的功能,划分出合理的模块,明确模块间的关系。3.编程实现所设计的模块。4.程序调试与测试。采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;5.结果分析。程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。操作系统课程设计第2页6.编写课程设计报告;设计报告要求:A4纸,详细设计部分主要叙述本人的工作内容五、课程设计工作计划设计在学期的第15、16周进行,时间安排如下:序号内容时间(天)1预习、讲课12设计33编码、测试54验收1合计10。六、成绩评定办法成绩分为优(A)、良(B)、中(C)、及格(D)、不及格(E)五个等级。其中设计表现占30%,验收40%,设计报告占30%。1.设计表现:教师可依据学生使用实验环境的能力、观察和分析实验现象的能力、实验结果和数据的正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。2.验收:要求学生演示设计的程序,讲解设计思路、方法、解决的主要问题,教师根据具体情况向每个学生提问2至3个问题。3.设计报告:学生设计后应按时完成设计报告。要求:内容充实、写作规范、项目填写正确完整、书面整洁等。操作系统课程设计第3页目录一.需求分析.............................................4二.概要设计.............................................5三.详细设计.............................................6四.调试分析,测试结果..................................25五.用户使用说明........................................25六.附录,参考资料......................................27操作系统课程设计第4页一需求分析阅读操作系统方面的书籍,了解操作系统的文件系统原理。结合分析课程设计要求,确定实体以及它们之间的关系。实体关系有三张表(磁盘空间分配表、文件表、打开文件表)、一个模拟磁盘的数组、命令服务和用户构成。用户负责输入命令。命令服务实现命令的解释、命令检查、命令帮助以及调用相关模块执行相应的命令功能。程序功能图实体关系图用户命令服务模拟磁盘磁盘空间分配表文件表打开文件表模拟文件系统创建文件删除文件条件读取写入文件查询属性显示内容显示目录重命名文件关闭文件操作系统课程设计第5页命令服务使得用户能够输入命令,在需要时提供命令的帮助。同时能够分析命令,调用相应的命令模块对模拟磁盘、磁盘空间分配表、文件表、打开文件表进行操作。磁盘空间分配表记录模拟磁盘的使用情况。文件表记录文件的信息和在磁盘里的位置等信息。打开文件表记录已打开的文件,对应文件表中的文件信息,和文件表里的文件节点类似,记录了文件在模拟磁盘中的信息。数据流图构造这些实体的关系图,数据流图、程序流程图来进行具体的设计。通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识,加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。二概要设计此课程设计把TXT文本作来研究对象来模拟操作系统的文件系统工作过程。所以用一个字符串数组来模拟磁盘空间,顾名思义,模拟磁盘提供字符的存储服务。磁盘空间分配表,采用链表结构,每个节点保存模拟磁盘的一个逻辑块的信息,包括块的最大长度,文件占用长度,占用标志。如果占用标志为0,即该空间可分模拟文件系统输入界面显示命令帮助文件表打开文件表磁盘分配表模拟磁盘显示信息文件信息文件信息长度、位置信息文件(字符串)用户命令操作系统课程设计第6页配给文件。初始化磁盘空间分配表链表,首先把整个模拟磁盘作来一块,并置占用位为0.当有进程申请磁盘空间时,从头开始遍历,检查占用位,如果该块为可分配,则检查块大小,若块长度大于或等于申请空间大小,则把块的前一部分(等于申请大小)分配给文件,并置标志位为占用。剩下的大小作来一个新块,作来一个新节点插入到原节点的后边,标志位为可用。这样就实现了模拟磁盘的线性分配。文件表,由于模拟文件系统的文件数量不多,故文件表采用线性表来存储。线性表每个结点存储一个文件的信息。打开文件表,采用数组形式存储打开的文件,数组每个元素保存一个打开文件的信息。文件信息和文件表中的文件信息类似。这个系统完成了需求分析阶段所要求的:文件系统提供的文件操作有建立文件(create)、删除文件(delete)、条件读取文件(read)、写入文件(write)、查询文件的属性(ask)、显示文件所有内容(type)、重命名文件(ren)、关闭文件(close)。可以通过键盘输入命令来模拟文件的操作。通过exit命令退出程序。这个课程设计,用到的知识如下:1.文件的物理结构可以选用顺序分配、链表分配或索引分配。2.建立文件:从命令中得到文件名,得到该文件的文件长度,建立文件。修改目录表。3.删除文件:回收文件占用的空间,修改目录表4.读文件:read[文件名][显示开始字节][显示的字节数],直接显示所需要的字节数。5.写文件:write[文件名][插入的位置][插入的内容]6.查询属性:显示文件属性文件名,类型,长度,时间等。三详细设计数据结构设计通过分析课程设计要求,具体设计出如下数据结构:①chardisk[10000];//模拟磁盘空间通过一个字符串数组来模拟磁盘空间,数组最大长度设置为10000,即磁盘空间最大容量为10000字节。作为模拟文件系统,主要理解文件系统的原理,可以把文本文件作为对象来研究。故磁盘空间用一个字符串数组来模拟.②structfreeDiskTable//碰盘空间分配表{操作系统课程设计第7页intstart;//开始位置intlength;//占用长度intmaxLength;//最大长度intuseFlag;//使用标志,1为占用,0为空闲};通过结构体,将磁盘空间使用情况(文件开始位置、占用长度、最大长度、使用标志)结合在一体。一个结构体变量记录磁盘一个块的信息。结构体作为链表的一个节点,设置一个链表将节点连接起来,构成一个磁盘空间分配表。③structfileTable//文件表{charfileName[20];//文件名字intstart;//开始位置intlength;//文件长度intmaxLength;//最大长度charfileKind[8];//文件种类,此默认为txtstructtm*timeinfo;//文件创建时间};通过结构体,将文件名字、文件在磁盘的开始位置、文件长度、文件最大长度、文件类型、创建时间结合在一起。文件类型,本模拟程序使用txt类型。设置一个线性表来存储文件。④structopenFileTable//打开文件表{charfileName[20];//文件名字charfileKind[8];//文件类型intstart;//文件开始位置intlength;//文件长度intmaxLength;//最大长度intopenCount;//打开文件的进程数structtm*timeinfo;//文件创建时间};通过结构体存储打开的文件信息,包括文件名字、文件类型、文件开始位置、文件长度、最大长度、文件打开数和文件创建时间。通过结构体数组存储所有打开文件信息。程序流程图模拟文件系统提供的文件操作有建立(create),读取(read),显示(type),删除(detele),写入(write),关闭(close),重命名(ren)和查询(ask)。在模拟程序中可从键盘上输入文件操作命令来模拟各用户程序中所调用的各种文件操作,用一个结束命令(exit)停止程序的执行。操作系统课程设计第8页各个模块的具体实现:(包含流程图和代码)(1).建立文件:create(文件名,记录长度)模拟文件系统进行“建立文件”的处理流程如下:开始初始化命令表初始化文件表初始化磁盘分配表初始化打开文件表输入命令命令表中有该命令?分析命令显示:命令帮助无创建删除读取显示重命名写入查询列表关闭退出程序(exit)执行命令执行命令操作系统课程设计第9页开始查询文件表文件表中有名字?返回有显示重命申请磁盘空间空间申请成功?显示失败否返回无在磁盘分配表中登记登记:长度=0,最大长度=申请长度,开始位置=申请节点位置空闲情况=占用在文件表中登记登记:长度=0,最大长度=建立长度,开始位置=分配位置文件类型=txt,时间=当前时间在打开文件表中登记登记:信息和文件表中类似显示创建成功返回操作系统课程设计第10页voidfileCreate(char*fileName,intfileLength)//没有写到打开文件表{inti=0;time_trawtime;intstartPosition=0;//文件开始位置,等磁盘分配函数返回值intmaxLength=fileLength;structfileTabletemp;for(i=0;iL.size;i++)if(!strcmp(fileName,L.list[i].fileName))//判断是否重名,如果重名直接返回{printf(文件重名,请取别的名字!\n);return;//文件重名,退出创建函数}if(!requestDisk(&startPosition,&maxLength)){printf(申请磁盘空间失败!无法建立文件!\n);return;//申请磁盘空间失败,退出创建函数}strcpy(temp.fileName,fileName);strcpy(temp.fileKind,txt);//设置文件类型为txttemp.length=0;//创建的时候,还没写入内容,是空文件,长度设为0temp.maxLength=fileLength;//文件的最大长度temp.start=startPosition;//文件的开始位置time(&rawtime);//获取时间temp.timeinfo=localtime(&rawtime);//把时间写到结构体里去if(!SeqListInsert(&L,L.size,temp))//把文件插入到文件表{printf(插入文件表失败!\n);system(pause);exit(0);//把文件插入到文件表,如果失败,退出程序}printf(成功创建文件!\n\n);printf(===========================================\n);printf(文件名长度最大长度类型开始位置\n);/
本文标题:操作系统模拟文件管理
链接地址:https://www.777doc.com/doc-3696130 .html