操作系统课程设计-主存空间的分配与回收(编辑修改稿)内容摘要:

k].address==s) { if(fullblock[k].sizes==l) { fullblock[k].address=0。 fullblock[k].sizes=0。 break。 } else { fullblock[k].sizes=fullblock[k].sizesl。 break。 } } if(k==N1) { printf(\n 输入释放作业开始地址不存在,请重新输入 !)。 setfree()。 return。 } } for(i=0。 iN。 i++) { if(freeblock[i].startaddress+freeblock[i].size==samp。 amp。 freeblock[i].state==1) { for(j=i+1。 jN。 j++) 内蒙古工业大学 课设 13 { if(freeblock[j].startaddress==s+lamp。 amp。 freeblock[j].state==1) { freeblock[i].size=freeblock[i].size+l+freeblock[j].size。 freeblock[j].state=0。 return。 } freeblock[i].size=freeblock[i].size+l。 freeblock[i].state=1。 return。 } } else { for(j=0。 jN。 j++) { if(freeblock[j].startaddress==s+lamp。 amp。 freeblock[j].state==1) { freeblock[j].startaddress=s。 freeblock[j].size=freeblock[j].size+l。 return。 } else { if(freeblock[j].state==0) { freeblock[j].size=l。 freeblock[j].startaddress=s。 freeblock[j].state=1。 return。 } } } } } } 内蒙古工业大学 课设 14 第五章 程序运行 问题及解决办法 结果 程序运行出现的问题及解决办法问题 ( 1) 程序运行没有按预期完成任务,解决办法是每次在对内存的分配和会和回收之前和之后都要对空闲区按地址进行排序 ( 2)程序不能显示作业状况,解决办法是为作业作一个已分配表用来存储作业记录 ( 3)在进行排序时,采用冒泡法进行排序 运行结果截图 ( 1) 主菜单 ( 2) 载入作业结结果 内蒙古工业大学 课设 15 ( 1) ( 2) ( 3) 分配结果图 内蒙古工业大学 课设 16 ( 4) 模拟系统回收内存 ( 5) 回收结果显示 ( 1) ( 2) 内蒙古工业大学 课设 17 ( 6) 多 分配结果 ( 7) 多回收结果 退出系统 内蒙古工业大学 课设 18 六. 课程总结与 体会心得 课程设计心得 在这次课程设计中,我们的收获应该说是非常大的。 开始的时候我们在网上搜索了一些代码。 但是这个代码语法本身有问 题。 但是由于对 JAVA 的使用不够熟练,所以我们就用了比较熟悉的 c 语言。 整个过程的代码都是我们自己动脑筋写的,最终代码调试运行成功,但是我们还是面临一个很大的问题就是,源程序使用 C 编写的,我们如何用图形化界面表示出来呢。 我们查阅了相关资料并且动手实践,但仍未解决,最后决定不使用图形用户界面。 在这次实践中,我们充分的意识到,编程功底的薄弱,只是粗浅的了解了语言,只是会一些语法,在编程思想上,我们显的很弱。 在今后的学习中,一定要扩大自己的知识面,如:多从网上寻找可实现的项目,同学之间组成团队,多学习,自己用代码实 现;还有就是要精通一们语言,熟练掌握其数据结构,算法思想,以至于能够熟练运用。 应该说这是通过我们小组成员的共同努力和动脑完成的,虽然内容并不是很复杂,但是我们觉得设计的过程相当重要,学到了很多。 我觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。 小组人员的配合﹑相处,以及自身的动脑和努力,都是以后工作中需要的。 总结 在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定距离的。 一切问题必须要 靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。 程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,是一个设计的灵魂所在。 通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。 总之,通过这次课程设计,我真的在实践中学到的不仅是课本知识的巩固和提高,而且还有在实践中使我着手解决不少程序设计的细节问题。 而这些问题是我在从低级的程序员向高级程序设计师过度的过程必须要解决的。 而我个人认为,我越早接触, 越多接触,越快解决对我本人缩短此过程有重要的意义。 内蒙古工业大学 课设 19 致谢 首先感谢两位马老师在这次课程设计中给予我们的指导和建议,在他的指导下我们顺利的完成了本次课程设计。 其次,要感谢我们同学,在我们互相帮助之下,攻克了在课程设计中遇到的一个个难关。 内蒙古工业大学 课设 20 七.参考文献 1. 教材 [1] 张尧学主编.计算机操作系统教程(第三版).北京 :清华 大学出版社 , 2020 2. 主要参考书 [1] 张尧学编.计算机操作系统教程(第三版)习题解答与实验指导.北京 :清华 大学出版社 , 2020 [2] 汤子瀛主编.计算机操作系统(第三版 ).西安 :西安电子科技大学出版社 ,2020 [3] 张坤等编.操作系统实验教程.北京 :清华大学出版社, 2020 [4] 张丽芬等编.操作系统实验教程.北京 :清华大学出版社, 2020 [5] Andrew . Modern Operating Systems, Second Cliffs,Prentice Hall, 2020 [6] 屠祁等编 .操作系统基础(第三版).北京 :清华大学出版社, 2020 [7] 冯耀霖等编 .操作系统 .西安 :西安电 子科技大学出版社, 2020 [8] 左万历.计算机操作系统教程(第二版).北京:高等教育出版社, 2020 内蒙古工业大学 课设 21 源代码 include include define N 6 struct freearea /*定义一个空闲区说明表结构 ,并初始化变量 */ { int startaddress。 /* 空闲区始址 */ int size。 /* 空闲区大小 */ int state。 /* 空闲区状态: 0 为空表目 ,1 为可用空闲块 */ }freeblock[N]={{100,100,1},{10,10,1},{300,50,0},{20,35,1},{250,30,1},{600,200,0}}。 struct fullarea { int address。 int sizes。 }fullblock[N]。 void muen() { printf(\n **************************************************\n)。 printf( * *\n)。 printf( * \1 模拟的主存空间的分配与回收 \1 *\n)。 printf( * *\n)。 printf( * *\n)。 printf( * *\n)。 printf( * *\n)。 printf( * *\n)。 printf( * *\n)。 printf( * *\n)。 printf( * *\n)。 printf( **************************************************\n)。 } void order() 内蒙古工业大学 课设 22 { int j,i。 struct freearea m。 for(i=0。 iN。 i++) for(j=i。 jN。 j++) if(freeblock[i].startaddressfreeblock[j].startaddress) { =freeblock[j].startaddress。 =freeblock[j].size。 =freeblock[j].state。 freeblock[j].startaddress=freeblock[i].startaddress。 freeblock[j].size=freeblock[i].size。 freeblock[j].state=freeblock[i].state。 freeblock[i].startaddress=。 freeblock[i].size=。 freeblock[i].state=。 } for(i=0。 iN。 i++) for(j=0。 jN。 j++) if(freeblock[j].state==0 amp。 amp。 freeblock[j+1].state==1) { =freeblock[j].startaddress。 =freeblock[j].size。 =freeblock[j].state。 freeblock[j].startaddress=freeblock[j+1].startaddress。 freeblock[j].size=freeblock[j+1].size。 freeblock[j].state=freeblock[j+1].state。 freeblock[j+1].startaddress=。 freeblock[j+1].size=。 freeblock[j+1].state=。 } } void order1() { int j,i。 struct fullarea m。 for(i=0。 iN。 i++) for(j=i。 jN。 j++) if(fullblock[i].addressfullblock[j].address) { 内蒙古工业大学 课设 23 =fullblock[j].address。 =fullblock[j].sizes。 fullblock[j].address=fullblock[i].address。 fullblock[j].sizes=fullblock[i].sizes。 fullblock[i].address=。 fu。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。