当前位置:   article > 正文

可变分区存储管理实验报告总结_可变分区存储管理方式的内存分配和回收实验报告(最优算法)...

操作系统 可变分区存储管理方式的内存分配和回收 在实验中会遇到什么问题以及

p=p->next;

}

cout<

void Initial() { // 初始化说明表

SP p,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->next=NULL;

DispSpace(); }

void Allocation(int len) { // 分配内存给新作业

SP p=Head->next,q;

while (p) {

if (p->length < len)

p=p->next;

else if (p->length > len)

{

p->start=p->start+len;

p->length=p->length-len;

cout<

DispSpace(); return;

}

else

{//当两者长度相等

q=p->next;

p->next=q->next;

cout<

DispSpace(); return;

}

}

cout<

DispSpace(); return; }

void CallBack(int sta,int len) { // 回收内存

SP p=Head,q=p->next,r; // 开始地址和长度

p->end=0;

int en=sta+len;

while (q) {

if (sta == 0) { // 初始地址为0

if (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 < sta) && (q->start > en)) { // 上邻区

r=(SP)malloc(sizeof(SNode));

r->start=sta; r->length=len; r->end=en;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/755614
推荐阅读
相关标签
  

闽ICP备14008679号