




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、*实践教学*兰州理工大学计算机和通信学院2012年秋季学期操作系统原理课程设计题目磁盘空间管理模拟实验专业班级:计算机科学和技术4班姓名:张建新学号:10240425指导教师:王燕成绩:目录TOCo1-5hz摘要2.正文3.一、问题描述3二、设计目的3三、设计要求4四、详细设计4五、结果分析8设计总结9.参考文献10致谢11附录:部分源代码10摘要要把文件信息存放在存储介质上,必须先找出存储介质上可供使用的空闲块。存储介质上某个文件不再需要时,又要收回它所占的存储空间作为空闲块。用户作业在执行期间经常要求建立一个新文件或撤消一个不再需要的文件,因此,文件系统必须要为它们分配存储空间或收回它所占
2、的存储空间。如何实现存储空间的分配和收回,取决于对空闲块的管理方法,主要有两种对磁盘存储空间的分配和收回的方法:位示图法(用一张位示图(简称位图)来指示磁盘存储空间的使用情况),空闲块链接法(在UNIX操作系统中,把磁盘存储空间的空闲块成组链接)。关键词:磁盘的分配和回收管理;位示图;成组链接问题描述位示图法:一个简单的管理方法是用一张位示图(简称位图)来指示磁盘存储空间的使用情况。一个盘组的分块确定后,根据分配的总块数决定位图由多少个字组成,建筑位图中的每一位和盘组分块1-1对应,“状态表示相应块已占用,“0状态表示该块空闲。成组链接法:首先定义磁盘分配数组并初始化,9个一维数组分别表示9个
3、空闲块,程序运行时,先将专用块A0复制到内存中,然后进行功能选择,分配时,查MA,从中找出空闲块号,当一组的空闲块只剩第一块时,应把该块中指出的下一组的空闲块数和块号复制到专用块这,然后把该块分配给申请者,当一组的空闲块分配完后则把专用块内容(下一组链接情况)复制到内存,再为申请者分配。回收时,输入待回收的块号,查找该块是否已被分配,若未分配,退出,否则,当前组不满规定块数时,将归还块登记入该组,若当前组已满,则另建一新组,这时归还块作为新一组的第一块,应把内存中登记的一组链接情况MA复制到归还块中,然后在MA这重新登记一个新组。显示分组情况。系统初始化时先将专用块内容读入内存,当有申请空闲块
4、要求时,就直接在内存专用块中找到哪些块是空闲的,每分配一块后把空闲块数减1。但要把一组中第一块分配出去之前,可以先把登记在该块中的下一组的块号保存在专用块中(此时,原专用块中的信息巳经无用了,因它指示的一组空闲块都已分配掉)。当中文组空闲块分配完后,则将下一组内容读入内存专用块中,以便继续分配时查找。设计目的通过该题目的设计过程,掌握磁盘存储管理的原理、软件开发方法并提高解决实际问题的能力。学习使用位示图管理磁盘空间的分配和回收,了解程序运行前和回收磁盘的物理地址过程。学会用模拟UNIX系统的成组链接法实现磁盘空间的管理。了解UNIX的命令及使用格式,熟悉UNIX/LINUX的常用基本命令,练
5、习并掌握UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序。希望通过本次设计过程可以提高自己的分析问题的能力和实际动手的能力,将学到的知识用于实践中。设计要求位示图法位示图是一张可以反映磁盘空间是否被占有的模拟图,用一个二维数组表示磁盘的空间,数组内每一个元素表示磁盘内相应的分块,数组元素为“1”表示该块已被占,“0”表示该块为空。数组元素位置和磁盘分块一一对应,即可描述出磁盘空间的利用情况。(2)成组链接法对于要求将磁盘存储空间的空闲块成组链接,我们可以设计几个相应的一维数组,分别表示磁盘的各个磁盘,数组中的元素表示每个磁盘的分块,分配时,通过查空闲表MA,从中找出
6、空闲块号,当一组的空闲块只剩第一块时,应把该块中指出的下一组的空闲块数和块号复制到专用块这,然后把该块分配给申请者,当一组的空闲块分配完后则把专用块内容(下一组链接情况)复制到内存,再为申请者分配。回收时,输入待回收的块号,查找该块是否已被分配,若未分配,退出,否则,当前组不满规定块数时,将归还块登记入该组,若当前组已满,则另建一新组,这时归还块作为新一组的第一块,应把内存中登记的一组链接情况MA复制到归还块中,然后在MA这重新登记一个新组。详细设计1.界面设计下图(1)为用位示图法分配一个磁盘空间后的状态图:I100D00000I00000D000000000000000忍勰还是退出?(严戦
7、曲-暹的片请左择(f:n-r.2-冋吹):|oooQoooOoooODQoOoooOoooOoDoD10-10OOOOQO0OSUJfliUIuse(?00000000oQQ0000000EE乜in出?ty-(II按.Jr、退出);yiffifi择攝作:I-5fE,2-1410:2翩定枣同也疑命桂面号、応区号:诒辐兀住向可:1谓输兀晞道号:2请辅号:4该块以被介配!帥续还足迅出?tydV-fc.ni&出心理在丽恒示刖:1I000000TOCo1-5hz(0Q00010000000Q00Q00()Q100000000000000010000000OOOOOQDO10000000OOOQQCOO按
8、任应10退出Iser*tl,72Ji图(2)位示图法回收操作运行结果下图(3)为用成组链接法模拟磁盘空间利用情况图:图(3)成组链接法2.算法设计成组链接法:(1)intMA4;/*空闲块数组*/(2)intA94=3,1,2,3,3,4,5,6,0,0,0,0,0,0,0,0,3,0,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;/*磁盘空间*/(3)intmark9;/*存放已分配的块*/intNo=0;/*已分配的块数*/(4)voiddisplay():显示分组情况(5)voidassign():分配空闲块(6)voidcallback():回收空闲块(7)v
9、oidmenu():功能选择函数位示图法:(1)#includeunsignedintsize5=1,1,1,1,1;/*保存位示图*/(2)voidout()/*输出位示图函数*/voidassign()/*分配函数*/voidmenu():功能选择函数结果分析用位示图表示的磁盘空间可以很形象的反映出磁盘中空间的利用情况,不足之处在于每次分配和回收只可以对单一的分块进行操作,不能同时进行几个块的分配和回收,要进行多个块的分配时,只能单独分配,且块之间没有相互链接,对于大的空间分配只能在连续空间进行。用成组链接法模拟的磁盘空间能够解决用位示图中存在的问题,它可以通过链表的形式存取信息,对于较大
10、的空间分配,若一个磁盘空间不够,通过指针找到下一个空闲的分区,但操作过程比较复杂,没有位示图方便,简捷。设计总结经过本次课程设计,完成题目“磁盘空间管理模拟实验”熟悉了UNIX/LINUX的常用基本命令,理解并掌握了UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序。做课程设计是为了对平时学习的理论知识和实际操作相结合,在理论和实践上进一步巩固已学基本理论及使用知识并加以综合提高,学会将知识使用于实际的方法,提高分析和解决问题的能力。在做课程设计的过程中,深深感觉到自身所学知识的有限。有些题目书本上没有提及,所以就没有去研究过,做的时候突然间觉得自己真的有点无知,虽然
11、现在去看依然可以解决问题,但还是浪费了许多,这一点是必须在以后的学习中加以改进的地方,同时也要督促自己在学习的过程中不断的完善自我。在设计过程中的思考和讨论,对现有知识能够运用计算机来解决现实生活中的实际问题确立了信心,对模块化程序设计思想有了比较清晰的印象,为今后的程序设计奠定了一定的心理和技术上的准备。这次课程设计加强了我对计算机操作系统的认识,对我个人而言是对所学课程内容掌握情况的一次自我验证。通过课程设计提高了我对所学知识的综合使用能力,全面检查并掌握所学的内容,培养独立思考,在分析问题、解决问题的过程中,更是获得一种成功的喜悦。参考文献汤子瀛,哲凤屏计算机操作系统西安电子科技大学学出
12、版社王清,李光明计算机操作系统冶金工业出版社孙钟秀等.操作系统教程.高等教育出版社曾明.Linux操作系统使用教程.陕西科学技术出版社.张丽芬,刘利雄.操作系统实验教程.清华大学出版社.孟静,操作系统教程-原理和实例分析.高等教育出版社周长林,计算机操作系统教程.高等教育出版社张尧学,计算机操作系统教程,清华大学出版社任满杰,操作系统原理实用教程,电子工业出版社致谢这次课程设计,我通过自己的实际分析及亲自动手调试程序,最终完成了作用,收获颇丰。首先有了这次实践的机会,给了自己一个舞台,同时也是对自身的检验。还有多亏了老师们从理论到上机亲自指导的辛苦教授,给予了我们最大帮助和全面指导,在这里,尤
13、其感谢我的指导老师王燕老师,您不辞辛苦,在给很多学生指导的情况下还不厌其烦的给我耐心指导,另外,要感谢我的操作系统的代课老师刘嘉老师孜孜不倦的教导,在这里,我衷心向您致谢!最后还要感谢热心的同学们,在我陷入误区的时候,是他们热心的帮助使我摆脱困境。最后衷心感谢所有给予我帮助和指导的老师和同学,没有他们的帮助我的程序也不会完成得这么顺利。附录:1.成组链接法#includeintMA4;/*空闲块数组*/intA94=3,1,2,3,3,4,5,6,0,0,0,0,0,0,0,0,3,0,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;/*磁盘空间*/intmark9;/
14、*存放已分配的块*/intNo=0;/*已分配的块数*/voiddisplay1()inti,j,temp,count;No=0;if(MA1!=0)i=MA0;printf(ngroup1:);for(j=1;jv=i;j+)printf(%d,MAj);mark+No=MAj;temp=MA1;count=2;while(Atemp1!=0)printf(ngroup%d:,count);i=Atemp0;for(j=1;j0)printf(%d,Atempj);mark+No=Atempj;elsei=MA0;if(i=1)printf(nTheblocksareallassigned)
15、;elseprintf(ngroup1:);for(j=2;j=i;j+)printf(%d,MAj);mark+No=MAj;/*显示分组情况*/*显示分组情况*/voiddisplay()inti,j;if(MA0!=0)display1();elsei=MA1;for(j=0;j1)/*若该组不止一个空闲块*/i=MA0;s=MAi;MA0-;printf(nnumberoftheblock:%d,s);elseif(MA0=1)/*只剩一个空闲块*/if(MA1!=0)/*还有其它空闲块组*/s=MA1;for(i=0;i=3;i+)A0i=Asi;MA0-;printf(nnumbe
16、roftheblock:%d,s);else/*没有其它空闲块组*/printf(nThereisntanyspace);return;else/*当前组已分配完*/for(i=0;i=3;i+)MAi=A0i;assign();display();/*显示分组情况*/voidcallback()/*回收空闲块*/inti,j,temp;printf(ninputtheNo.oftheblockyouwanttocallback:);scanf(%d,&j);getchar();/*得到待回收的空闲块号*/for(temp=1;tempv=No;temp+)if(marktemp=j)brea
17、k;if(tempNo+1)/*若该空闲块已在,退出*/printf(nTheblockisinthedisk);return;if(MA03)/*当前组不满3块*/i=MA0;MAi+1=j;MA0+;else/*已有3块*/for(i=0;i=3;i+)Aji=MAi;MA0=1;MA1=j;display。;/*显示*/voidmenu()/*功能选择函数*/intchoice;charjudge;printf(ninputyourchoice:(1-assign,2-callback):);scanf(%d,&choice);getchar();if(choice=1)assign()
18、;elseif(choice=2)callback();elseprintf(ninvalidcommand!);printf(ncontinueornot?(y-Yes,n-Not):);scanf(%c,&judge);getchar();if(judge=y)menu();elseprintf(nNowthegraphis:);display();printf(npressanykeytoquit);main()inti;for(i=0;i=3;i+)MAi=A0i;display();menu();2.位示图法#includeunsignedintsize5=1,1,1,1,1;/*保
19、存位示图*/voidout()/*输出位示图函数*/unsignedinti,j,m;for(j=0;j5;j+)/*循环输出size的各个数的各个二进制位*/m=sizej;for(i=0;i16;i+)/*/printf(%d,m%2);m=m/2;if(i=7)printf(n);printf(n);voidcallback。/*回收函数*/unsignedinti,j,k,s=1,q,m,sq,zhm,cid;printf(确定要回收块的柱面号、磁道号、扇区号:n);printf(请输入柱面号:);scanf(%d,&zhm);printf(n请输入磁道号:);scanf(%d,&ci
20、d);printf(n请输入扇区号:);scanf(%d,&sq);if(zhm%2=0)/*计算对应的位示图位置*/i=zhm/2;j=cid*4+sq+1;elsei=(zhm-1)/2;j=cid*4+sq+9;q=sizei;m=j-1;while(m)q=q/2;m-;if(q%2=1)/*判断该块是否被分配*/if(j=1)sizei-=1;/*将位示图对应为置零*/elsefor(m=1;mj;m+)s*=2;sizei-=s;printf(回收成功!);回收后的位示图为:n);回收后的位示图为:n);printf(out();elseprintf(该块以被分配!);voidassign()/*分配函数*/unsignedintn=0,i,s=1,j,k,q,m,sq,zhm,cid;for(i=0,k=0;i5;i+)q=sizei;j=0;while(1)/*查找位示图的第一个为零的位,将其分配,该位置一*/j+;if(q%2)=0)if(j=1)sizei+=1;elsefor(m=1;mj;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业竞争下的领导力培训与职业发展
- 人工智能医疗系统现状与未来
- 创新医疗安全管理构建和谐医患关系新局面
- 保护患者隐私维护医疗信息安全
- AI技术在健康管理中的实践与道德责任
- 江苏省镇江市丹徒区2024-2025学年七年级下学期期中考试英语试题(原卷版+解析版)
- 2025年山东省聊城市冠县中考二模英语试题(原卷版+解析版)
- 利用区块链技术推动医疗数据共享与版权保护的平衡发展
- 中药资源可持续利用的伦理与法律保障
- AI技术在药物研发中的深度应用与挑战
- 陕西延长石油靖边煤业有限公司海测滩煤矿矿山地质环境保护与土地复垦方案
- 2022-2023学年山东省烟台市高一(下)期中英语试卷-普通用卷
- 北京大学研修班通讯录
- 小学劳动教育教研活动记录(共7次)
- 2023年高速铁路隧道工程施工技术指南铁建设【2023年】241号
- 中国民族史智慧树知到答案章节测试2023年云南大学
- 德磐氢化丁腈橡胶
- 长输管道监理培训测试题(含答案)山东港通工程管理咨询有限公司
- 实习证明表模板
- 乙状结肠癌根治术的护理查房详解演示文稿
- 二手车购车合同范本2份(全国通用版)
评论
0/150
提交评论