当前位置:文档之家› OS上机实验报告

OS上机实验报告

课程设计(上机实验)报告课程名称:操作系统上机实习学生姓名:学号:所在学院:专业:指导教师:20XX年月日课程设计(上机实验)报告填写说明1.本报告作为指导教师对学生课程设计(上机实验)评分的依据材料之一。

此报告应在指导教师指导下,由学生在课程设计(上机实验)结束时完成,以班为单位收齐后按时交给指导教师批阅;2.本报告内容必须用黑墨水笔工整书写或按信息学院统一设计的电子文档标准格式(可从信息学院网页上下载)打印(小4号宋体,1.5倍行距),禁止打印在其它纸上后剪贴;3.本报告中的“设计说明书”应按论文的格式成文,并直接书写(或打印)在本报告“设计说明书”栏目内。

其内容可以结合设计题目的内容和要求,根据自己在本课程设计(上机实验)阶段所完成的工作,阐明自己所采取的设计思想和方法(硬件的设计及其电原理图分析介绍,和/或软件的算法和数据结构及其主要模块介绍、程序在测试用例下的测试运行结果等)、完成本课程设计的心得体会、设计中的不足及改进设计的设想或建议等。

说明书的篇幅应不少于2000字。

4.对硬件类课程设计,应绘制或打印硬件设计图纸或实验原理图,作为设计报告的附件。

5.软件类课程设计(上机实验)的软件文档(含软件清单和程序运行的有关结果)可以单独打印成册或上传到指导教师指定计算机,作为课程设计报告的附件。

课程设计(上机实验)报告的附件是指导教师对学生课程设计(上机实验)评分的另一个依据。

课程设计(上机实习)报告课程设计(上机实验)题目:文件系统的模拟设计4.1 修改md命令(去掉属性前面的|)4.2 修改Help命令或命令行预处理程序(1. 修改help命令的显示方式和显示内容) 4.3 新增fc命令,实现两个文件的比较4.4 新增replace命令,实现文件取代4.6 新增batch命令,实现批处理4.7 修改close、type等命令,允许不带文件名参数4.8 完善copy命令(1. 改正某些缺陷)4.10 修改del、copy等命令,使其可以使用统配符*目的与任务:理解操作系统文件系统的某些工作原理,学习文件操作命令和目录操作命令的设计方法。

通过实验,使学生加深对操作系统文件系统某些问题的理解,归纳学习方法和思考方法,做到理论联系实际。

培养学生分析问题、解决问题的能力,提高学生软件设计能力和逻辑思维能力。

内容和要求:设计实现一个简单的文件系统,包括目录文件、普通文件,以及一些文件操作命令和目录操作命令(例如可以模仿DOS 的有关命令)。

具体要求如下列2.2和2.3。

2.2 初始目录结构程序初始化时构造如图1所示的目录结构。

图中auto 是(普通)文件(初始化时假设是空文件),其余都是子目录(目录文件)。

2.3 系统操作命令简介在本文件系统中,要求可以实现如下操作:⏹ 改变当前目录:cd [<目录名>]。

当前目录(工作目录)转移到指定目录下。

指定目录不存在时,给出错误信息。

若命令中无目录名,则显示当前目录路径。

⏹ 创建文件:create <文件名> [<属性>]。

创建一个指定名字的新文件,即在目录中增加一目录项,不考虑文件的内容。

对于重名文件给出错误信息。

⏹ 删除文件:del <文件名>。

删除指定的文件,即清除其目录项和回收其所占用磁盘空间。

对于只读文件,删除前应询问用户,得到同意后方能删除。

当指定文件正在使用时,显示“文件正在使用,不能删除”的信息,当指定文件不存在时给出错误信息。

⏹ 显示目录:dir[ <目录名>[ <属性>]]。

显示“目录名”指定的目录中文件名和第一级子目录名。

若指定目录不存在,则给出错误信息。

⏹ 创建目录:md <目录名>。

在指定路径下创建指定目录,若没有指定路径,则在当前目录下创建指定目录。

对于重名目录给出错误信息。

⏹ 删除目录:rd 目录名。

若指定目录为空,则删除之,否则,给出“非空目录不能删除”的提示。

不能删除当前目录。

⏹ 打开文件:open <文件名>。

若指定文件存在且尚未打开,则打开之,并在用户打开文件表(UOF )中登记该文件的有关信息。

若指定文件已经打开,则显示“文件已打开”的信息;若指定文件不存在,则给出错误信息。

只读文件打开后只能读不能写。

bin usrdevuser lib binlisunmaauto图1 初始目录树目录文件 普通文件【图例说明】根目录⏹关闭文件:close <文件名>。

若指定文件已打开,则关闭之,即从UOF中删除该文件对应的表项。

若文件未打开或文件不存在,分别给出有关信息。

⏹显示文件内容:type <文件名>。

显示指定文件的内容。

若指定文件不存在,则给出错误信息。

⏹复制文件:copy <源文件名> <目标文件名>。

命令功能:为目标文件建立目录项,分配新的盘块,并将源文件的内容复制到目标文件中。

⏹文件改名:ren <原文件名> <新文件名>。

将指定文件的名字改为“新文件名”。

若原文件不存在,给出错误信息。

若原文件存在,但正在使用,也不能改名,同样显示出错信息。

应检查新文件名是否符合命名规则以及是否存在重名问题。

⏹显示、修改文件或目录属性:attrib <文件名>[ <文件属性>]。

若命令中无“文件属性”参数,则显示指定文件的属性;若命令中有“文件属性”参数,则修改指定文件的属性。

此命令对目录名同样适用。

2.4 几点说明⏹命令中的目录名和文件名可以统称为路径名,支持绝对路径(又称全路径)和相对路径;⏹路径名是由目录结构中各级目录文件名和普通文件名(必定是最后一个名)用分隔符“/”连接而成的字符串组成。

其中以字符“/”开始的路径名是绝对路径,表示从根目录开始;不是以字符“/”开始的路径名是相对路径,表示从当前目录开始。

当前目录又称工作目录。

⏹本系统规定,名字(文件名或目录名)的命名规则如下:(1) 名字长度不能超过FILENAME_LEN-1个字节,即10个字符(符号常数FILENAME_LEN为11)。

允许输入的名字超过10个字符,但只有前10个字符有效;(2) 名字一般由字母(区分大小写)、数字、下划线等组成,名字允许是汉字;(3) 名字不能包含以下16个字符之一:" * + , / : ; < = > ? [ \ ] | space(空格)(4) 名字中允许包含字符“.”,但它不能是名字的第一个字符,故“.”、“.abc”、“..”和“..abc”等等都是不合法的名字。

“..”代表父目录是例外,但它并非由用户通过键盘输入的名字,故不需要符合名字的命名规则。

⏹本系统中,命令名(如dir)和命令参数中的有关关键字(如append或app、insert或ins等)不区分大小写。

文件名和目录名中的字母是区分大小写的。

⏹命令格式中,“<...>”代表某个字符串,“[ ]”中内容为可选项。

设计说明书(说明书的撰写要求请参看封里的“报告填写说明3”。

篇幅不够可附页)//函数原型说明(添加的函数名)int FcComd(int); //文件比较int ReplaceComd(int ); //文件替代int BatchComd(int); //文本文件的批处理int deletefile(char *,FCB *,short); //删除文件int FindFileFCB(int &,int,char,FCB * &); //查找文件的FCBint showattrib(FCB *); //属性int Copy(int ); //复制//执行命令中添加的内容void ExecComd(int k){int cid; //命令标识//操作命令表char CmdTab[][COMMAND_LEN]={"create","open","write","read","close", "del","dir","cd","md","rd","ren","copy","type","help","attrib","uof","closeall","block","rewind","fseek","fat","check","exit","undel","Prompt","udtab","fc","replace","batch"};…………………………………………………..case 26:FcComd(k); break; //fc命令,实现两个文件的比较case 27:ReplaceComd(k); break; //replace命令,实现文件的取代case 28:BatchComd(k); break; //batch命令,实现从文件读取并执行…………………………………………………..}流程图:4.1 修改md命令设计思想:程序的指令格式为 md user |rh ,需改为 md user rh ,因此可在md user |rh 程序中实现修改功能要实现此功能,只需要获取目录的属性时,删除判断“|”操作符的过程即可。

具体方法:在int MdComd(int k)函数中删除*if (k==2) {i=GetAttrib(comd[2],attrib); if (i<0)return i;} 即可实现所需功能。

修改后的操作方法:输入 md user rh 即可正确执行。

4.2修改help 命令的显示方式和显示内容设计思想:利用switch(n) case … 语句实现选择只查看需了解的操作命令。

具体方法:首先利用cout 语句输出改操作系统所拥有的命令,并用数字标明,供用户选择,再利用switch(n) case …语句实现具体内容的介绍。

程序的大体表达如下: int n;cout<<” ”<<endl; //输入所拥有的操作命令开始命令格式正确吗?在指定目录中查找空目录项(若已无空目录项,则为其分配新的盘块),找到后为新目录登记目录项。

相关主题