操作系统实验报告可变分区存储管理方式的内存分配回收_第1页
操作系统实验报告可变分区存储管理方式的内存分配回收_第2页
操作系统实验报告可变分区存储管理方式的内存分配回收_第3页
操作系统实验报告可变分区存储管理方式的内存分配回收_第4页
操作系统实验报告可变分区存储管理方式的内存分配回收_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、word实验三可变分区存储管理方式的内存分配回收一实验目的1深入了解可变分区存储管理方式的内存分配回收的实现。二实验内容编写程序完成可变分区存储管理方式的内存分配回收,要求有内存空间分配表,并采用最优适应算法完成内存的分配与回收。三实验原理在可变分区模式下,在系统初启且用户作业尚未装入主存储器之前,整个用户区是一个大空闲分区,随着作业的装入和撤离,主存空间被分成许多分区,有的分区被占用,而有的分区时空闲的。为了方便主存空间的分配和去配,用于管理的数据结构可由两张表组成:“已分配区表和“未分配区表。在“未分配表中将空闲区按长度递增顺序排列,当装入新作业时,从未分配区表中挑选一个能满足用户进程要求

2、的最小分区进行分配。这时从已分配表中找出一个空栏目登记新作业的起始地址和占用长度,同时修改未分配区表中空闲区的长度和起始地址。当作业撤离时已分配区表中的相应状态变为“空,而将收回的分区登记到未分配区表中,假设有相邻空闲区再将其连接后登记。可变分区的回收算法较为复杂,当一个作业撤离时,可分为4种情况:其临近都有作业A和B,其一边有作业A或B,其两边均为空闲区。尤其重要的是,在程序中利用“new类型T初值列表申请分配用于存放T类型数据的内存空间,利用“delete指针名释放指针所指向的内存空间。四实验局部源程序#include<iostream>usingnamespacestd;ty

3、pedefstructSNode/SpaceNodeintstart,end;/起始,结束intlength;/长度大小structSNode*next;/指向下一结点的指针*SP;SPHead=(SP)malloc(sizeof(SNode);/全局变量,内存空间头结voidDispSpace()/显示内存空间分配情况SPp=Head->next;cout<<"n空闲区说明表n"<<"-地址-长度-n"while(p)cout<<""<<p->start<<&q

4、uot;"<<p->length<<endl;p=p->next;cout<<"-n"voidInitial()/初始化说明表SPp,q;p=(SP)malloc(sizeof(SNode);q=(SP)malloc(sizeof(SNode);p->start=14;p->length=12;p->end=26;q->start=32;q->length=96;q->end=128;/指导书上的作业分配Head->next=p;/与头结点连接p->next=q;q-&

5、gt;next=NULL;DispSpace();voidAllocation(intlen)/分配内存给新作业SPp=Head->next,q;while(p)if(p->length<len)p=p->next;elseif(p->length>len)p->start=p->start+len;p->length=p->length-len;cout<<"分配成功!n"DispSpace();return;else/当两者长度相等q=p->next;p->next=q->next

6、;cout<<"分配成功!n"DispSpace();return;cout<<"分配失败!n"DispSpace();return;voidCallBack(intsta,intlen)/回收内存SPp=Head,q=p->next,r;/开始地址和长度p->end=0;inten=sta+len;while(q)if(sta=0)/初始地址为0if(en=q->start)/正好回收q->start=0;q->length=q->end;return;elser=(SP)malloc(siz

7、eof(SNode);r->start=sta;r->length=len;r->end=en;p->next=r;r->next=q;return;elseif(p->end<sta)&&(q->start>en)/上邻区r=(SP)malloc(sizeof(SNode);r->start=sta;r->length=len;r->end=en;p->next=r;r->next=q;return;elseif(p->end<sta)&&(q->start=

8、en)/邻区相接q->start=sta;q->length=q->end-sta;return;elseif(p->end=sta)&&(q->start<en)/下邻区p->end=en;p->length=en-p->start;return;elseif(p->end=sta&&q->start=en)/邻区相接p->end=q->end;p->length=p->end-p->start;p->next=q->next;return;elsep=p->next;q=q->next;voidmain()Initial();cout<<"现在分配大小为6K的作业4申请装入主存:"Allocation(6);/分配时参数只有长度/-指导书测试数据演示-cout<<"现回收作业3(起址10,长度4)n"CallBac

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论