已阅读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年钎料行业创新工艺解析报告
- 初中七年级语文教学设计:第一单元写作《热爱写作学会观察》深度实施策略
- 2026年重铬酸钠行业发展行业新材料创新报告及未来五至十年行业发展趋势分析报告
- 六年级道德与法治下册第二单元《公民与国家》复习教学设计
- 高中信息技术必修一1.2.2信息技息技术的发展教案
- 初中八年级科学《光的反射与折射-平面镜》教学设计
- 初中七年级语文下册《说和做-记闻一多先生言行片段》教学设计
- 初中八年级物理《物态变化的图像问题》教学设计
- 公立医院领导人员管理办法-2017-2026完整对比版
- 2027届上海市浦东新区洋泾中学物理高二上期中考试试题含解析
- 2026重庆渝中区社区工作者及后备人员招聘《综合知识》模拟试卷
- 《10 谁在运动》课件2026-2027学年湘科版四年级上册科学
- 医疗机构麻醉药品和精神药品管理规定2026解读
- 《中华人民共和国生态环境法典》测试题(含参考答案)
- 【新教材】2026年秋人教版(PEP)五年级上册英语全册教案(含教学计划)
- DBJ50-T-061-2021 预拌砂浆生产与应用技术标准
- 2026语文新教材 7.我的战友邱少云 课件
- 电子科技大学学生手册
- 基于QFD创新型品管圈的区域药学服务新模式构建(药剂科)(药房)(门诊)(药房门诊)
评论
0/150
提交评论