收藏 分享(赏)

操作系统实验报告-可变分区存储管理方式的内存分配回收.doc

上传人:精品资料 文档编号:9666880 上传时间:2019-08-22 格式:DOC 页数:4 大小:43.50KB
下载 相关 举报
操作系统实验报告-可变分区存储管理方式的内存分配回收.doc_第1页
第1页 / 共4页
操作系统实验报告-可变分区存储管理方式的内存分配回收.doc_第2页
第2页 / 共4页
操作系统实验报告-可变分区存储管理方式的内存分配回收.doc_第3页
第3页 / 共4页
操作系统实验报告-可变分区存储管理方式的内存分配回收.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

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

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

3、espace std;typedef struct SNode / Space Nodeint start,end; / 起始,结束int length; / 长度大小struct SNode *next; / 指向下一结点的指针* SP;SP Head=(SP)malloc(sizeof(SNode); / 全局变量,内存空间头结void DispSpace() / 显示内存空间分配情况SP p=Head-next;coutstartlengthnext;coutstart=14; p-length=12; p-end=26;q-start=32; q-length=96; q-end=12

4、8; / 指导书上的作业分配Head-next=p; / 与头结点连接p-next=q;q-next=NULL;DispSpace();void Allocation(int len) / 分配内存给新作业SP p=Head-next,q;while (p)if (p-length next;else if (p-length len)p-start=p-start+len;p-length=p-length-len;coutnext;p-next=q-next;coutnext,r; / 开始地址和长度p-end=0;int en=sta+len;while (q) if (sta = 0)

5、 / 初始地址为 0if (en = q-start) / 正好回收q-start=0;q-length=q-end;return;else r=(SP)malloc(sizeof(SNode);r-start=sta; r-length=len; r-end=en;p-next=r;r-next=q;return;else if (p-end start en) / 上邻区r=(SP)malloc(sizeof(SNode);r-start=sta; r-length=len; r-end=en;p-next=r;r-next=q;return;else if (p-end start =

6、en) / 邻区相接q-start=sta;q-length=q-end-sta;return;else if (p-end = sta) p-length=en-p-start;return;else if (p-end=sta p-length=p-end-p-start;p-next=q-next;return;else p=p-next;q=q-next;void main() Initial();cout“现在分配大小为 6K 的作业 4 申请装入主存 : “;Allocation(6); / 分配时参数只有长度 /-指导书测试数据演示-cout“现回收作业 3 (起址 10,长度 4)n“;CallBack(10,4);DispSpace();cout“现回收作业 2 (起址 26,长度 6)n“;CallBack(26,6);DispSpace();/-演示结束-system(“pause“);五实验结果与体会我的体会:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报