已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 需求分析1)本程序要求实现对内存的动态分配与回收的模拟,同时,在内存的分配时还必须使用首次适应算法,最后,还要显示内存块分配和回收后空闲内存分区链的情况。2)要实现对作业的内存分配,首先要有一个对作业进行创建和分配内存的模块,其中,该模块在分配内存时要使用首次适应算法;要实现对内存的回收,要有一个内存回收的模块,其中,该模块在回收内存时要考虑内存回收的四种情况;最后,还要有一个能显示内存空闲分区链的情况的模块。2 概要设计1)首次适应算法的结构如图1:图1 首次适应算法的结构图从链首开始顺序查找空闲分区链完否?返 回分区大小所需大小?分区大小-所需大小next=new Fq;head-next-size=MAXSIZE;head-next-o=0;head-next-next=NULL;int choice=0;docout请选择你要进行的操作:endl;cout1、创建新作业 2、查看空闲分区链 3、回收内存空间 0、退出choice;switch(choice)case 1: create(head);break;case 2: cha(head);break;case 3: hui(head);break;case 0: break; default: cout输入错误!next;p-before=head;int no=0,b=0;coutno;coutb;alloc(b,no,p); /此处调用功能函数alloc()查看空闲分区链模块:void cha(Fq *head)/查看内存中的空闲分区链的子函数Fq *p=head-next;p-before=head;int i=0;cout空闲分区链的情况为:o=0)cout空闲分区+i sizeKnext;回收内存空间模块:void hui(Fq *head)/回收内存的子函数Fq *p=head-next;p-before=head;int no=0;coutno;while(p!=NULL)if(p-no=no)free(p); /此处调用功能函数free()cout作业no的内存已回收!next;内存分配功能函数模块:void alloc(int b,int no,Fq *p)/对作业no进行内存分配的子函数while(p!=NULL)if(p-o=1) p=p-next;elseif(p-sizeb)if(p-size-bo=1;p-no=no;elseFq *q=new Fq;Fq *r;r=p-before;r-next=q;q-before=r;q-next=p;p-before=q;q-size=b;p-size=p-size-b;q-no=no;q-o=1;cout内存分配成功!next;cout内存分配失败!before-o=0&c-next-o=0)Fq *r=c-before,*s=c-next-next;r-size=(r-size+c-size+c-next-size);r-next=s;if(s!=NULL) s-before=r;if(c-before-o=0&c-next-o!=0) c-before-size=c-before-size+c-size;c-before-next=c-next;c-next-before=c-before;if(c-next-o=0&c-before-o!=0)Fq *r=c-next-next;c-size=c-size+c-next-size;c-next=c-next-next;if(r!=NULL) r-before=c;c-o=0;else c-o=0;6 调试分析1)内存分配功能函数模块:刚开始对作业分配内存时,只是将空闲分区的大小以及前后向指针进行修改,而没有对分配给作业的内存进行设置;这样,尽管内存的空闲分区大小已经变小,但是,以后却无法对已分配的内存空间以及作业进行修改;于是,我经过思考后,决定将分配给作业的内存空间也设置为一个分区,只不过不是空闲的分区,通过状态标识符o来与空闲分区进行区别。2)回收内存空间模块:刚开始编写此模块的代码时,我有一种无从下手的感觉;因为,如果要回收某个作业的内存,那么必须知道该作业所在的内存中的位置;但是,刚开始我用的数据结构中只有表示内存状态的属性(分区可用空间大小,状态标识符,前后向指针),这样就不能对特定的作业进行操作;最后,我经过思考决定在内存的数据结构中增加一项,即作业标识符,用来保存分区中的作业信息,从而达到查找特定作业所在内存分区的目的。3)在编写代码的过程中,我还遇到了一些小的问题;比如,对链表进行操作时,老是出现错误,不能对链表进行正确的操作等;这些问题与我对链表的认识不够深入和准确有关,不过,通过这次程序的编写,进一步加深了我对链表的理解,对链表的运用也变得得心应手了。7 测试结果1)测试数据:作业1申请130KB;作业2申请60KB;作业3申请100KB;作业2释放60KB;作业4申请200
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 煤矿机电智能化改造实施方案
- 交流架空线路复合绝缘子试验检测报告
- 检查井及雨水口施工组织设计
- 挥发性有机物治理设施智能监管实施方案
- 公路工程玄武岩纤维及其制品技术方案
- 平武县2026年四川省属公费师范毕业生、地方优师专项师范生直接考核招聘考试备考题库及答案详解
- 房屋建设酒店框架结构毕业设计
- 2026新疆新星人才发展有限公司面向社会招聘会计1人笔试模拟试题及答案详解
- 2026年浙江省温州市中小学教师招聘笔试备考试题及答案详解
- 2025年上海市嘉定区街道办人员招聘考试试题及答案详解
- 药品车间质量奖惩制度
- 沪教版(五四学制)2026年数学七年级下册期末测试卷(含答案解析)
- 三级安全教育切割作业测试试题附答案
- 老挝用工合同范本
- 检察院安全生产工作制度
- 2026云南昆明巫家坝建设发展有限责任公司校园招聘15人备考题库及答案详解(网校专用)
- 2026云南曲靖国金资本运营集团有限公司招聘3人笔试历年常考点试题专练附带答案详解
- 《小学数学教学设计》小学教育专业全套教学课件
- 2025-2026学年黑龙江省齐齐哈尔市建华区八年级(上)期末英语试卷(含答案)
- 冠心病诊疗指南(2025版)
- 市政设施养护培训课件
评论
0/150
提交评论