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

该实验报告详细介绍了可变分区存储管理的内存分配和回收过程,采用最优适应算法进行内存分配,并通过已分配区表和未分配区表管理主存空间。实验中,当作业撤离时会根据四种情况调整空闲区,同时讨论了如何使用C++的new和delete操作符申请和释放内存。
摘要由CSDN通过智能技术生成

实验三

可变分区存储管理方式的内存分配回收

一.实验目的

(

1

)深入了解可变分区存储管理方式的内存分配回收的实现。

二.实验内容

编写程序完成可变分区存储管理方式的内存分配回收,

要求有内存空间分配表,

并采用

最优适应算法完成内存的分配与回收。

三.实验原理

在可变分区模式下,在系统初启且用户作业尚未装入主存储器之前,整个用户区是一

个大空闲分区,

随着作业的装入和撤离,

主存空间被分成许多分区,有的分区被占用,

而有

的分区时空闲的。为了方便主存空间的分配和去配,用于管理的数据结构可由两张表组成:

“已分配区表”和“未分配区表”

。在“未分配表中”将空闲区按长度递增顺序排列,当装

入新作业时,

从未分配区表中挑选一个能满足用户进程要求的最小分区进行分配。

这时从已

分配表中找出一个空栏目登记新作业的起始地址和占用长度,

同时修改未分配区表中空闲区

的长度和起始地址。当作业撤离时已分配区表中的相应状态变为“空”

,而将收回的分区登

记到未分配区表中,

若有相邻空闲区再将其连接后登记。

可变分区的回收算法较为复杂,

一个作业撤离时,可分为

4

种情况:其临近都有作业(

A

B

)

,其一边有作业(

A

B

)

其两边均为空闲区。尤其重要的是,在程序中利用“

new

类型

T

(初值列表)

”申请分配用

于存放

T

类型数据的内存空间,利用“

delete

指针名”释放指针所指向的内存空间。

四.实验部分源程序

#include 

using namespace std;

typedef struct SNode { // Space Node

int start,end; //

起始,结束

int length; //

长度大小

struct SNode *next; //

指向下一结点的指针

}* SP;

SP Head=(SP)malloc(sizeof(SNode)); //

全局变量,内存空间头结

void DispSpace() { //

显示内存空间分配情况

SP p=Head->next;

cout<

空闲区说明表

\n"

<

地址

--

长度

---\n";

while (p)

{

cout<

"<start

<

"<length<

p=p->next;

}

cout<

}

void Initial() { //

初始化说明表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值