已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三 可变分区存储管理1目的和要求通过这次实验,加深对内存管理的认识,进一步掌握内存的分配、回收算法的思想。2实验内容阅读教材计算机操作系统第四章,掌握存储器管理相关概念和原理。编写程序模拟实现内存的动态分区法存储管理。内存空闲区使用自由链管理,采用最坏适应算法从自由链中寻找空闲区进行分配,内存回收时假定不做与相邻空闲区的合并。假定系统的内存共640K,初始状态为操作系统本身占用64K。在t1时间之后,有作业A、B、C、D分别请求8K、16K、64K、124K的内存空间;在t2时间之后,作业C完成;在t3时间之后,作业E请求50K的内存空间;在t4时间之后,作业D完成。要求编程序分别输出t1、t2、t3、t4时刻内存的空闲区的状态。3实验环境Windows操作系统、VC+6.0C语言4. 实验要求:1) 上机前认真使用C语言编写好程序,采用Visual C+6.0作为编译环境;2) 上机时独立调试程序3) 根据具体实验要求,填写好实验报告(包括目的和要求、实验内容、实验环境、设计思想、源程序、实例运行结果、总结)。5. 设计思想:本次实验编写的程序主要涉及四个函数start ( ), requireMemo ( ) , freeMemo ( )和past( )。1. start()这个函数主要用来建立自由链队列和占用区队列,这两个队列用来分别存放自由节点和占用节点。在初始状态下,操作系统本身占用64k,它存放在占用区队列里,因此自由链队列里只有640-64=576k的空间,且起始地址为64。2. requireMemo()函数是该程序的核心算法,用来分配内存空间,该函数带两个参数,用来表示作业或进程名的name和表示作业或者进程名所申请空间的大小的require。由于此算法采用的是最坏适应算法,所以自由链队列中的空闲分区是按其容量从大到小的顺序排列的。因此在这里需要分三种情况:自由链队列的第一个空闲分区的容量大于require;自由链队列的第一个空闲分区的容量等于require;自由链队列的第一个空闲分区的容量小于require。在情况下分配完后还需把剩余的部分重新按照容量大小给它在自由链队列里找到新位置。在情况下只需分配,分配即把符合要求的空闲分区从自由链队列删除,并且插入到占用区队列的尾部。在删除需注意把原来处于分配分区的前后链接起来,否则队列将断掉。在情况下,只需提示用户无法分配即可。3. freeMemo ()函数也是该程序的核心算法,是用来回收作业完成后不需使用的内存空间,它根据从main()函数中传递过来的参数name,遍寻占用区队列,找到与name匹配的作业,把他从占用区队列删除,插入到自由链队列里。在插入时,由于涉及到邻接区的合并问题,所以必须先遍寻整个自由链队列,找到是否有从占用区队列回收回来的空间邻接区,如果有,就将他们合并。做完邻接区的合并之后,再根据内存空间的大小,将整个自由链队列排序。6. 源程序:1)程序中所定义的数据结构和全局变量/程序中自由链队列的结点类型可描述如下struct freelink int len, address; / len为分区长度 / address为分区起始地址 struct freelink *next;/内存占用区用链表描述,其结点类型描述如下struct busylink char name; / 作业或进程名 name=S 表示OS占用 int len , address; struct busylink *next;/并设全程量struct freelink *free_head=NULL; /自由链队列(带头结点)队首指针 struct busylink *busy_head=NULL, /占用区队列队(带头结点)首指针 *busy_tail=NULL; /占用区队列队队尾指针2)requireMemo()函数的具体实现:/模拟内存分配函数void requireMemo(char name, int require) struct busylink *p; struct freelink *w,*u,*v; if( free_head-next-len=require) if(free_head-next-lenrequire) p=(struct busylink*)malloc(sizeof(struct busylink); p-name=name; p-address=free_head-next-address; p-len=require; p-next=NULL; busy_tail-next=p; busy_tail=p; w=free_head-next; free_head-next=w-next; w-len=w-len-require; w-address=w-address+require; u=free_head; v=free_head-next; while(v!=NULL)u=v; v=v-next; u-next=w; w-next=v;else p=(struct busylink*)malloc(sizeof(struct busylink); p-name=name; p-address=free_head-next-address; p-len=require; p-next=NULL; busy_tail-next=p; busy_tail=p; w=free_head-next; free_head-next=w-next; free(w);else printf(not allocat);3) freeMemo( )函数的具体实现:/模拟内存回收函数void freeMemo(char name) int len,address; struct busylink *p,*q; struct freelink *w,*u,*v; q=busy_head; p= busy_head-next; while(p!=NULL)&(p-name!=name) q=p; p=p-next; if(p=NULL) printf(%c is not exist,name); else if(p=busy_tail) busy_tail=q; q-next=p-next; len=p-len; address=p-address; free(p); w=( struct freelink*) malloc(sizeof(struct freelink); w-len=len; w-address=address; u=free_head; v=free_head-next; while(v!=NULL)&(v-lenw-len) u=v; v=v-next; if(u-address+u-len=w-address)|(w-len+w-address=u-address) /处理w邻接于u的情况 if(w-address =u-address) w-address=u-address; w-len=u-len+w-len; w-next=v; free(u); if(v!=NULL&(w-address+w-len=v-address)|(v-address+v-len=w-address) /处理v邻接于w的情况 if(v-addressaddress) w-address=v-address; w-len=w-len+v-len; u-next=v-next; free(v); u=free_head; v=free_head-next; while(v!=NULL)&(v-lenw-len) u=v;v=v-next; w-next=v; u-next =w; 7. 实例运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年茧丝牛毛成语故事细致观察教学教案
- 2026年势如破竹成语故事事物发展分析教案
- 2026年不骄不躁成语故事谦逊教育教案
- 2026 年小学《惠崇春江晚景》虚实相生古诗探究教案
- 二年级科学提升能力核心专题磁现象综合解释题题型突破卷分层提升版
- 2026年事业单位招聘考试申论公文处理题专项训练试卷
- 2026住院医师规培-海南-海南住院医师规培(医学影像)历年参考题库含答案详解
- 2026住院医师规培-河北-河北住院医师规培(医学影像)历年参考题库含答案详解
- 2026住院医师规培-新疆-新疆住院医师规培(全科医学)历年参考题库含答案详解
- 2026住院医师规培-山东-山东住院医师规培(口腔内科)历年参考题库含答案详解
- 《生物地理学》(研究生)全册配套完整课件
- DZ/T 0438-2023 地质灾害风险调查评价规范(1:50000)(正式版)
- (高清版)DZT 0078-2015 固体矿产勘查原始地质编录规程
- 锂电池专用湿法隔膜生产线项目商业计划书
- 火龙罐综合灸疗法
- 全国高中青年数学教师优质课大赛一等奖《空间中直线平面的垂直关系》教学设计
- 中国思想史 马工程329P
- 漂浮导管的应用和护理
- 项目四 编制设绘生产计划线表建造周期表船台吊装网络图
- LY/T 2496-2015防护林经营技术规程
- GB/T 9694-2014皮蛋
评论
0/150
提交评论