




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计(上机实验)报告课程名称: 操作系统原理上机实习 学生姓名: 学 号: 所在学院: 计算机科学与技术 专 业: 计算机科学与技术 指导教师: 2016 年 1 月 5 日课程设计(上机实验)报告填写说明1本报告作为指导教师对学生课程设计(上机实验)评分的依据材料之一。此报告应在指导教师指导下,由学生在课程设计(上机实验)结束时完成,以班为单位收齐后按时交给指导教师批阅;2本报告内容必须用黑墨水笔工整书写或按信息学院统一设计的电子文档标准格式(可从信息学院网页上下载)打印(小4号宋体,1.5倍行距),禁止打印在其它纸上后剪贴;3本报告中的“设计说明书”应按论文的格式成文,并直接书写(或打印)在本报告“设计说明书”栏目内。其内容可以结合设计题目的内容和要求,根据自己在本课程设计(上机实验)阶段所完成的工作,阐明自己所采取的设计思想和方法(硬件的设计及其电原理图分析介绍,和/或软件的算法和数据结构及其主要模块介绍、程序在测试用例下的测试运行结果等)、完成本课程设计的心得体会、设计中的不足及改进设计的设想或建议等。 说明书的篇幅应不少于2000字。4对硬件类课程设计,应绘制或打印硬件设计图纸或实验原理图,作为设计报告的附件。5软件类课程设计(上机实验)的软件文档(含软件清单和程序运行的有关结果)可以单独打印成册或上传到指导教师指定计算机,作为课程设计报告的附件。课程设计(上机实验)报告的附件是指导教师对学生课程设计(上机实验)评分的另一个依据。 课 程 设 计(上 机 实 习)报 告课程设计(上机实验)题目:文件系统的模拟设计与实现目的与任务:实验目的:理解操作系统文件系统的某些工作原理,学习文件操作命令和目录操作命令的设计方法。通过实验,使学生加深对操作系统文件系统某些问题的理解,归纳学习方法和思考方法,做到理论联系实际。培养学生分析问题、解决问题的能力,提高学生软件设计能力和逻辑思维能力。实验任务:模仿MS-DOS系统设计并实现一个简单的文件系统,包括目录文件、普通文件,以及一些文件操作命令和目录操作命令。内容和要求:实验内容与具体要求见“操作系统原理上机实习实验指导书(2016修订版)”。课 程 设 计(上 机 实 习)报 告设 计 说 明 书(说明书的撰写要求请参看封里的“报告填写说明3”。篇幅不够可附页)一、概述本次实验中共完成了7个任务,分别是:4.1 修改md命令4.2 修改help命令4.3 修改命令行预处理程序4.4 新增fc命令,实现两个文件的比较4.5新增move命令,实现文件搬家及子目录改名4.7 新增batch命令,实现批处理4.9实现copy的完善4.16 修改read命令,允许不带文件名参数(选做内容)4.17 修改write命令,允许不带“文件名”参数(选做内容)二、具体实验过程描述4.1 修改md命令修改md命令,增加“属性”参数,用于创建指定属性的子目录。命令形式如下:md 属性包括R、H、S以及它们的组合(不区分大小写,顺序也不限)。例如:md user rh其功能是在当前目录中创建具有“只读”和“隐藏”属性的子目录user。主要修改思想:在调用ProcessPath()函数之前,对属性参数进行分析比较,并修改attrib的值,以使在调用ProcessPath()函数时将具有某种或多种属性值的attrib值传入ProcessPath()函数。当k=2时,调用GetAttrib()函数,GetAttrib()函数将课 程 设 计(上 机 实 习)报 告根据 comd2中的内容修改attrib的值,若comd2中含有r则加1,若comd2中开始含有h则加2,若comd2中含有s则加4。流程图:命令格式正确是调用GetAttrib()函数修改attribd的值参数个数为2是否指定路径正确是是新目录重名否在指定目录中查找空目录项(若已无空目录项,则为其分配新的盘块),找到后为新目录登记目录项。为新目录分配1盘块,用于登记该目录的第一个目录项,即“.”目录项。显示相关的错误信息返回The Directory of C:/bin usr dev boy 170abc_map 203map 76test 77qil_nanj 225 5 file(s) 751 bytes 3 dir(s) 313536 freeC:/md sjsx rwC:/dirThe Directory of C:/bin usr sjsx dev boy 170abc_map 203map 76test 77qil_nanj 225 5 file(s) 751 bytes 4 dir(s) 313472 free4.2 修改help命令修改help命令的显示方式和显示内容:修改HelpComd()函数,使之提供菜单式的较详细的帮助信息。例如可以先用菜单形式简单列出各命令名称,当用户选择某个命令的序号后,再比较详细地介绍该命令,包括命令的各种形式,每种形式的功能,以及某些举例说明等等。具体方法:首先利用cout语句输出改操作系统所拥有的命令,并用数字标明,供用户选择,再利用switch(n) case语句实现具体内容的介绍。程序的大体表达如下:int n; cinn;switch(n)case /具体显示命令的内容命令正确?开始显示help命令可选菜单内容输入135或-1显示所需help信息返回是否报错否是Help命令函数流程图流程图:设计思想:利用switch(n) case 语句实现选择只查看需了解的操作命令。 具体方法:首先利用cout语句输出改操作系统所拥有的命令,并用数字标明,供用户选择,提示用户可以输入相应命令对应的序号,用一个char型数组读取,然后转换为int型,若该int对应于相应的命令序号,则显示该命令的具体信息。关键代码如下:while(true)cout输入1-28任一数字了解更详细的功能及用法1&k29)HelpExp(k);/对k进行switch选择,输出命令的相关详细信息else cout序号错误!help命令运行结果:C:/helpcoutn* * * * * * * * * 本系统主要的文件操作命令简述如下 * * * * * * * * * *nn; cout(0)create 创建新文件,文件属性是r、h或s。n; cout(1)open 打开文件,操作类型可为r、h或(与)sn;cout(2)write 在指定位置写文件(有插入功能)。n; cout(3)read 读文件,从第m字节处读n个字节。n; cout(4)close 关闭文件。n; cout(5)del 撤消(删除)文件。n; cout(6)dir 显示当前目录。n;cout(7)cd 改变当前目录。n;cout(8)md 创建指定目录。n;cout(9)rd 删除指定目录。n;cout(10)ren 文件更名。n;cout(11)attrib 修改文件属性(r、h、s)。n;cout(12)copy 复制文件。n;cout(13)type 显示文件内容。n;cout(14)rewind 将读、写指针移到文件第一个字符处n;cout(15)fseek 将读、写指针都移到指定位置。n;cout(16)block 显示文件占用的盘块号。n;cout(17)closeall 关闭当前打开的所有文件。n;cout(18)uof 显示UOF(用户打开文件表)。n;cout(19)undel 恢复指定目录中被删除的文件。n;cout(20)exit 退出本程序。n;cout(21)prompt 提示符是否显示当前目录(切换)。n;cout(22)fat 显示FAT表中空闲盘块数(0的个数)。n;cout(23)check 核对后显示FAT表中空闲盘块数。n;cout(24)back 返回主界面。n;cout(25)fc 比较文件 n;cout(26)move 移动文件 n;cout(27)replace 替代文件 n;while(true)cout0)for (j=k;j0;j-)strcpy(comdj+1,comdj);/后移strcpy(&comd10,&comd0i);strcpy(&comd11,&comd0i+1);comd0i=0;k+;/多出一个参数命令运行结果:C:/cd usrC:/usrcd /C:/cd binC:/bincd.4.4 新增fc命令,实现两个文件的比较命令形式:fc 命令功能:逐个字节比较指定的两个文件,若相同,显示“文件内容相同”字样;若不同,显示第一个不同字节的位置和各自的内容。若文件不存在则报错。设计思想:分别查找文件名1和文件名2 的指定路径,若路径正确,则进行文件的首块号查找,如果两个文件都能找到,则按字节进行比较,找到第一个字节不同的位置,如果两个文件大小相等且查询到最后一个字节,则两文件内容相同。流程图:开始否命令格式正确吗?是调用ProcessPath( )查找两文件的指定路径指定路径正确吗?否是调用FindFCB()查找两文件的首块号显示错误信息否文件存在吗是 fc命令函数流程图返回将文件内容进行比较并输出结果命令执行结果:C:/fc boy usr/boy文件/boy与文件/usr/boy内容不一样!文件/boy的第一个不同的字节为文件/usr/boy的第一个不同的字节为C:/fc boy test文件/boy与文件/test内容不一样!文件/boy的第一个不同的字节为H文件/test的第一个不同的字节为dC:/fc boy boy文件/boy与文件/boy内容一样!4.5 新增move命令设计思想:先判断要移动的文件是否存在且非空,然后判断目标文件是否存在且非空,若都是,则将要移动的文件的盘块逐个移入目标文件。具体方法:利用processpath和FindFCB分别取要移动的文件的所在目录的首块号和其文件的首块号,若取不到,说明不存在或者为空,报错。然后用Check_UOF函数判断要移动的文件是否已经在UOF,若是,说明文件已经打开,此时不能移动,报错。然后判断是否已经输入目标文件名,若否,则输入目标文件名,然后用getblock()得到盘块号,移动。运行结果如图:将C目录下的boy移动至新建的user目录下。现在你可以输入各种操作命令.Help 简易帮助信息.exit 退出本程序.C:/dirThe Directory of C:/bin usr dev boy 170abc_map 203map 76test 77qil_nanj 225 5 file(s) 751 bytes 3 dir(s) 313536 freeC:/md userC:/move boy userC:/boy=C:/bin/boyokC:/dir userThe Directory of C:/user. boy 170 1 file(s) 170 bytes 1 dir(s) 313280 freeC:/4.7 新增batch命令,实现批处理命令形式:batch batchfile开始命令功能:从磁盘文件batchfile逐行读入命令行执行,直到batchfile中所有命令行都执行完毕为止。否命令格式正确吗?是调用ProcessPath( )查找文件的指定路径指定路径正确吗?否是调用FindFCB()查找文件的首块号显示错误信息否文件存在吗是按行取出文件中命令依次执行返回 batch命令函数流程图设计思想:该命令是实现批处理,参数为一个存放了多条命令的文件,执行该命令时 ,相当于依次执行了多条命令,所以要多文件进行读取,每一行为一条命令,所以每读一行执行一次命令。命令执行结果:C:/batch testdirtype mapcd usrdiropen /boycd user/matype qil_nanjcd /uof省略一些命令执行结果文件名 文件属性 首块号 文件长度 状态 读指针 写指针/boy 普通 40 170 打开 1 171C:/close boy关闭文件/boy成功。C:/4.9 完善copy命令1. 改正某些缺陷目前参考程序中的copy命令不能处理如下情况:假设当前目录是/usr,执行如下命令之一copy boy /copy boy .上述2条命令应该是将当前目录/usr中的文件boy复制到其父目录(根目录)中,文件名仍为boy。但系统不能正确执行,而显示“目标文件名错误”的信息。正确的功能应该是:l 若当前目录中不存在文件boy,则报错;l 第2个命令若当前目录是根目录,因根目录没有父目录,故应报错;l 若当前目录的父目录中已经存在名为boy的文件,也报错(或询问用户是否覆盖)。l 其他情况上述命令都应能正确执行。请按此要求修改copy命令处理程序,使之在上述命令形式也能正确执行。设计思想:添加函数 copy()和函数FindBlankFCB()分别用于文件的复制和寻找首块号为s的目录中的空目录项,其中FindBlankFCB()用于实现 copy()功能。然后在CopyComd()函数中判断copy boy /和copy boy .形式的命令,如果是上述的命令,则将当前目录/usr中的文件boy复制到其父目录(根目录)中,文件名仍为boy。若不是则直接调用copy()函数。命令执行结果:C:/copy usr/boy / 存在文件与目标文件同名。4.11 修改del,copy等命令,使其可以使用通配符*修改某些命令,使其可以使用统配符“*”。例如:del *删除当前目录中的所有文件attrib * 显示当前目录中所有文件和子目录的属性copy * 将当前目录中的所有文件复制到目标目录中(同名复制)设计思想:使用通配符*操作就是对当前目录下所有符合条件的文件执行相应的操作,获取当前目录下所有文件名借鉴了已给函数DirComd()中遍历当前目录下所有文件或目录的方法,但是最终没能实现这项命令的功能。4.16 修改read命令,允许不带文件名参数(选做内容)修改read命令处理函数ReadComd(),使其可以使用如下命令形式:(1) read读当前操作文件,从读指针位置开始读到文件尾部(新增形式)(2) read 读指定文件,从读指针位置开始读到文件尾部(3) read |pm读指定文件,从指定位置m开始读到文件尾部(4) read |ln读指定文件,从读指针位置开始读n个字节(5) read |pm |ln读指定文件,从指定位置m开始读n个字节(6) read |pm |ln读当前操作文件,从指定位置m开始读n个字节(新增形式)(7) read |pm读当前操作文件,从指定位置m开始读到文件尾部(新增形式)(8) read |ln读当前操作文件,从读指针位置开始读n个字节(新增形式)上述命令中,“|p”表示“位置”,“m”表示某个整数。“|L”表示“长度”,“n”也代表某个整数。(下同)设计思想:如果k3时,参数的个数太多或太少报错,根据参数个数来判断有无文件名参数,然后进行相应的文件读操作流程图:开始Y参数太多或太少,报错k3N在uof中找到当前正在访问的文件,将其文件名赋给FileName,并置haveFileName为false表示无文件参数Comd10=|或k=1YN将comd1的值赋给FileName根据命令要求读信息返回命令执行结果:运行结果如图:打开boy文件,进行read无参数操作。现在你可以输入各种操作命令.Help 简易帮助信息.exit 退出本程序.C:/open boy文件/boy打开成功。C:/readHello boy.Welcome to Nanjing University of Technology.Welcome to School of Infomation Science and Engineering.Welcome to Department of Computer Science and Technology.C:/C:/readsdfgdgsehew4.17 修改write命令,允许不带“文件名”参数(选做内容)修改write命令处理函数WriteComd(),允许其命令中不带“文件名”参数。这样,除了参考程序中提供的以下5种命令形式:wr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025辽宁铁岭市本级1家单位补充招聘公益性岗位工作人员2人考试参考题库及答案解析
- 2025四川天府锦城实验室(前沿医学中心)技术人员招聘10人考试参考题库及答案解析
- 2025年杭州建德市中西医结合医院招聘编外人员6人考试参考题库及答案解析
- 2025中国邮政集团有限公司山东省鱼台邮政校园招聘考试参考题库及答案解析
- 临床执业医师考试综合练习及完整答案详解【典优】
- 2026中国移动陕西分公司校园招聘考试参考题库及答案解析
- 托管后勤安全培训内容课件
- 2025江西江铜硅瀛新能源科技有限公司招聘员工5人考试参考题库及答案解析
- 2025湖北武汉东风鸿泰汽车资源循环利用有限公司招聘2人考试参考题库及答案解析
- 2025西安惠安幼儿园招聘(6人)考试参考题库及答案解析
- 2型糖尿病科普讲座课件
- 变电站消防培训课件
- 《律师执业纪律与职业道德》考试复习题库(含答案)
- 钢结构设计原理课件
- GB/T 43232-2023紧固件轴向应力超声测量方法
- 福建省行政区域划分图(从省到乡镇-超值)
- 剪映:手机短视频制作-配套课件
- 2021新高考I卷II卷英语读后续写解读讲评及写作技巧指导课件
- 2023无人机技术概论
- 防校园欺凌-课件(共28张PPT)
- 小学道德与法治2022版新课程标准测试卷及答案
评论
0/150
提交评论