动态可变分区存储管理模拟系统(4)

2020-02-21 00:06

}

}

p9=p9->next; { }

if((p12->len)>(p13->len)){如果p12长度>p13长度 }

p11=new area;//把p13给p11 p11->end=p13->end; p11->len=p13->len; p11->sign=p13->sign; p11->start=p13->start; p11->next=NULL;

swap(p13,p12);交换两个P13,P12 swap(p12,p11);交换两个P12,P11

while(p13!=NULL)//把空闲区按从小到大的顺序排列

p13=p13->next;

void swap(area *p13,area *p14) { }

//最先适应法 void listID(){

int n=0;

area *p9=freehead->next,*p0=freehead,*p11,*p12,*p13; while(p0!=NULL){ }

p0=freehead; if (n==1)

p0=p0->next; n++;

p13->len=p14->len; p13->sign=p14->sign; p13->end=p14->end; p13->start=p14->start;

}

return;

{

else

while(p9!=NULL) }

p12=p0; p13=p9; p0=p0->next; p9=p9->next; { }

if((p12->start)>(p13->start)){ }

p11=new area; p11->end=p13->end; p11->len=p13->len; p11->sign=p13->sign; p11->start=p13->start; p11->next=NULL; swap(p13,p12); swap(p12,p11);

while(p13!=NULL)//把地址按递增顺序排列

p13=p13->next;

void inserfree(area * p3){查看进程之间的前后的区域状态

int flag=0;

area *pf=freehead,*pe=freehead,*pe1; }

if(pf!=NULL){

flag=5;

}//flag=5 有前置空闲块

if(pf->end!=p3->start)//判断是否有前继空闲块 pf=pf->next;

while(pf!=NULL){

else break;

{ { }

else flag=1;//没有置1

while(pe!=NULL)//判断是否有后继空闲块

if(pe->start!=p3->end) pe1=pe; pe=pe->next;

else break; }

if(flag==5)

flag=6; else flag=4;

if(pe!=NULL) {

}//有前置且有后置FLAG=6,只有后置=4 else{

if(flag==1)

flag=2;

}//前后都没有置2

case 5:pf->end=pf->end+p3->len;前置空闲块

pf->len=pf->len+p3->len; break;

pe->len=pe->len+p3->len; break; p8=new area; p8->len=p3->len; p8->end=p3->end; p8->next=freehead;

switch(flag){

case 4:pe->start=pe->start-p3->len;只有后置

case 2: area* p8; p8->start=p3->start; p8->sign=0;

freehead=p8;

}

}

break;

pf->len=pf->len+pe->len+p3->len; if(pe->next==NULL){ } else {

if(pe==freehead){ } else { }

}

pe1->next=pe->next; delete pe; freehead=pe->next; delete pe;

pe1->next=NULL; delete pe;

case 6:pf->end=pe->end;有前置与后置

break;

default :break;

void setfree(){ 释放进程

int chose;

cout<<\选择一个要释放的任务 :\

cin>>chose;

area*p7=usedhead,*p2;

while( p7!=NULL) { //寻找有无此进程 }

if(p7==NULL){

if( p7->sign!=chose ){ p2=p7; p7=p7->next; } else break;

} }

}

cout<<\没有此进程,释放内存失败,返回修改!\return;

inserfree(p7);//将其释放的内存插入空闲块中 usedhead=NULL; if(p7->next==NULL){

p2->next=NULL; delete p7;

if(p7==usedhead &&p7->next==NULL) else{

}//将次进程从已分配表中删除 else { }

cout<<\成功释放所选任务的内存!当前内存状况为:\print(freehead); print(usedhead); cout<

if(p7==usedhead){ } else { }

p2->next=p7->next; delete p7;

usedhead=p7->next; delete p7;

void inserused(area *p3,int num,int need){//将新项插入已分配表中

area*p5;

if(usedhead==NULL){

p5=new area; p5->start=p3->start; p5->len=need;

p5->sign=num;


动态可变分区存储管理模拟系统(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:机务理论深化班《无线电罗盘》课程教学设计-2019年教育文档

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: