操作系统课程设计.docx

上传人:lao****ou 文档编号:1115759 上传时间:2024-11-19 格式:DOCX 页数:22 大小:77.30KB
下载 相关 举报
操作系统课程设计.docx_第1页
第1页 / 共22页
操作系统课程设计.docx_第2页
第2页 / 共22页
操作系统课程设计.docx_第3页
第3页 / 共22页
操作系统课程设计.docx_第4页
第4页 / 共22页
操作系统课程设计.docx_第5页
第5页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《操作系统课程设计.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计.docx(22页珍藏版)》请在第一文库网上搜索。

1、课程设计报告书题目:操作系统课程设计学院计算机科学与工程专业计算机科学与技术目录一、选题背景2课程设计目的二、方案论证2课程设计要求2三、过程论述及结果分析3课程设计内容3设计一3主要功能及原理3运行截图及主要代码5设计二11主要功能及原理11运行截图及主要代码11设计三13主要功能及原理13运行截图及主要代码14五、课程设计总结18六、老师评语及成绩评19一、选题背景课程设计目的本设计的目的是实现操作系统和相关系统软件的设计,其中涉及进程编程、I/O操作、存储管理、文件系统等操作系统概念。二、方案论证课程设计要求(1)对进行认真分析,列出实验具体步骤,写出符合题目要求的程序清单,准备出调试程

2、序使用的数据。(2)以完整的作业包的形式提交原始代码、设计文档和可运行程序。提交的光盘应当包括:设计题目,程序清单,运行结果分析,所选取的算法及其优缺点,以及通过上机取得了哪些经验。程序清单要求格式规范,注意加注释(包含关键字、方法、变量等),在每个模块前加注释,注释不得少于20%o课程设计要求同时上交打印文档,设计报告包括设计题目,算法分析,关键代码及其数据结构说明,运行结果分析以及上机实践的经验总结。实验环境操作系统:Ubuntu14.04三、过程论述及结果分析课程设计内容设计一主要功能及原理:在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟1inux文件系统。1

3、.在现有机器硬盘上开辟IOOM的硬盘空间,作为设定的硬盘空间。2 .编写一管理程序SimdiSk对此空间进行管理,以模拟1inUX文件系统,要求:(1)盘块大小Ik(2)空闲盘块的管理:1inUX位图法(3)结构:超级块,i结点区,根目录区3 .该SimdiSk管理程序的功能要求如下:(1)info:显示整个系统信息(参考1inux文件系统的系统信息),文件可以根据用户进行读写保护。目录名和文件名支持全路径名和相对路径名,路径名各分量间用隔开。(2)cd:改变目录:改变当前工作目录,目录不存在时给出出错信息。(3)dir:显示目录:显示指定目录下或当前目录下的信息,包括文件名、物理地址、保护码

4、、文件长度、子目录等(带/s参数的CIir命令,显示所有子目录)。(4)md:创建目录:在指定路径或当前路径下创建指定目录。重名时给出错信息。(5)rd:删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。(6)newfi1e:建立文件。(7)cat:打开文件。(8)copy:拷贝文件,除支持模拟1inux文件系统内部的文件拷贝外,还支持host文件系统与模拟1inux文件系统间的文件拷贝,host文件系统的文件命名为,如:将windows下D:盘的文件datasamp1etest.txt文件拷贝到模拟1inux文件系统中的/test/CIata目录,windows

5、下D:盘的当前目录为D:data,则使用命令:simdiskcopyD:datasamp1etest.txttestdata或者:simdiskcopyD:samp1etest.txttestdata(9)de1:删除文件:删除指定文件,不存在时给出出错信息。(10)check:检测并恢复文件系统:对文件系统中的数据一致性进行检测,并自动根据文件系统的结构和信息进行数据再整理。4 .程序的总体流程为:(1)初始化文件目录;(2)输出提示符,等待接受命令,分析键入的命令;(3)对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EX1T退出为止。原理:在磁盘上开辟IOOm

6、b的文件,作为虚拟磁盘。在这个磁盘分成102400个Ikb的盘块,采用位图管理空闲盘块,并采用超级块,i节点,根目录区。我把这些通过二进制文件读写都放在磁盘的起始位置,并利用指针移动读取和修改,如下超级块数据块位图数据块信息i节点位图i节点信息根目录数据发现仅仅除数据之外就已经占了17000个盘块,主要原因应该是大量还有使用的i节点占用了空间,如果改成动态写入应该会很好。运行截图及主要代码程序开始运行,开辟虚拟磁盘后需重新启动fi1eisnotexited,creating.fi1ehasbeencreatedandinitfp1easere1oadagain.Programendedwith

7、exitcode:初始化并查看系统总体情况,没用实现显示各个目录文件的详细信息。virtua1disk:doyouwanttoinit?y/nyroot/Siinfosystemmessage:文件系就IK-块巳用可用visua1system1024e1760184799root/$:|创建目录,进入目录,查看当前目录,返回上层目录直接输入Cdvirtua1disk:doyouwanttoinit7ynyroot/Siinfosystemmessage:文件系纸IK-块巳用可用visua1system1024001760184799root/$:cdtesterrorcannotfindthe

8、dirroot/$:mdtestroot/$:cdtestroottst$:Cdroot/$:dir文件/目录物理地址大小test1824448516root/打开不存在的目录,创建相同名字目录,报错。root/$:cdtst1error一cannotfindthedirroot/$:mdtesterrorsamedirnameroot/$:进入指定目录root/$:Cdtestroottest$:mdtest1roottest$:Cdtest1root/test/tast1/$:删除指定目录1roottsttest1S:cdroottst$:Cdroot/S:rdtestithassubdi

9、rorfi1e,areyousuretode1eteitanditsa11fi1eandsubdir?y/nyroot/$:dir文件/目录物理地址大小创建文件,输入以#号结束,查看文件root/Sznewfi1et1inputthefi1e(endwitha)123abc#root/$:diterrorcommanderrorroot/$:dir文件/目录物理地址大小t118244489root/$:catt1123abc*root/$:复制文件到指定目录root/$:copyt1testerror-cannotfindthefi1e/dirroot/$:mdtestroot/S:copyt

10、1testerrorcommanderrorroot/$:copyt1testroot/$:Cdtestroottest$:dir文件/目录物理地址大小t1185538569roottest$:catt1123abc#roottest$:删除文件,不存在则报错roottestroottst文件/目录S:de1t1$:dir物理地址大小roottest$:de1t2errorcannotfindthfi1droottest$:定义的数据结构:超级块c1assSuperb1ockpub1ic:空闲盘块数量intfreeb1ocknum;空闲i节intfreeinodenum;;盘块数据c1assB

11、1ockpub1ic:intaddr;盘块信息存放的物理地址物理地址i节点编号点Inodeintaddress;盘块指向的intinodeid;/占用该盘块的);/i节c1asspub1ic:charstrnamename_max_size;i节点储存的目录或文件名字intkind;/i节点储存的类型,文件或目录intstartb1ock;/i节点占用的起始盘块编号inttotb1ock;总共占用盘块数量intsize;储存的文件或目录的大小intaddr;该i节点存放的物理地址);目录类c1assDirpub1ic:intfainode;父亲目录对应的i节点编号intsize;目录的大小in

12、tinode_id;该目录对应的i几点编号intsubinodesubinode_max_size;各个子目录对应的编号intfind(char*name);;位图类c1assbitmappub1ic:boo1e;是否空闲intaddr;存放的地址空间);主要功能函数:void1oad();加载各类数据结构intcmd_judge(strings);命令判断voidError(constchar*s);错误输出voidUPdatC_dir();更新当前目录以下函数赛现基本命令voidcmd_init();voidcmd_info(string*cmds);voidcmdcd(string*cm

13、ds);voidcmddir(string*cmds);voidcmdmd(string*cmds);voidcmc1rd(string*cmds);voidcmdnewfiIe(string*cmds);voidcmd_cat(string*cmds);voidcmd_copy(string*cmds);voidcmd_de1(string*cmds);voidcmd_check(string*cmds);算法分析与关键代码:首次运行时判断是否开辟了虚拟磁盘空间,否则开辟并初始化重新运行。开辟空间if(!fr.is-open()printf(fi1eisnotexited,creating.

14、n);fr.c1ose();fr.c1ear();fr.open(Fi1enamezios:out|ios:binary);cmdjnit();初始化磁盘fr.c1ose();printf(fi1ehasbeencreatedandinit,p1easere1oadagain.n);return0;)然后加载各类数据结构,等待输入然后判断命令执行对应函数cmdjudge(cmdstream)返回命令对应的int型对于盘块及i节点分配,文件所占用的盘块必须都是连续的,而一个文件只占用一个i节点。intfind_b1ock(intsize)返回分配的盘块起始编夸intans=-1;intent=0;for(inti=0;ib1ock_num;+i)if(freeb1ocki.e=FREE)+ent;if(cnt=1)ans=i;if(cnt=size)returnans;)e1seent=0;ans=-1;)retur

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服