文档介绍:我伟大的母校
课程设计报告书
实践课题 姓 名 学 号 指导老师 学 院
动态分区分配
路人甲
20XXXXXX
路人乙
计算及科学与技术学院
课程设计实践时间
〜
ch; 〃记录最小剩余空间
DuLnikList temp=(DuLnikList)malloc(sizeof(DuLNode));// 申请内存空间 temp->=request;
temp->=Busy;
DuLNode *p=block_first->next;
DuLNode *q=NULL; //记录最佳插入位置
while(p) 〃初始化最小空间和最佳位置
{
if(p->==Free && (p->>=request))
{
if(q=NULL)
{
q=p;
ch=p->-request;
}
else if(q-> > p->)
{
q=p;
ch=p->-request;
}
}
p=p->next;
if(q==NULL) letiirn ERROR;//没有找到空闲块
else if(q->==request)
q->=Busy;
retuin OK;
}
else
i
temp->prior=q->pnor;
temp->next=q; temp->=q->; q->pnor->next=temp;
q->pnor=temp;
q->+=request;
q->=ch;
retuin OK;
}
retuin OK;
}
〃最差适应算法
Status WorsCfit(int request)
{
mt ch; 〃记录最人剩余空间
DuLnikList temp=(DuLnikList)malloc(sizeof(DuLNode)); temp->=request;
temp->=Busy;
DuLNode *p=block_first->next;
DuLNode *q=NULL; //记录最佳插入位置
while(p) 〃初始化最人空间和最佳位置
{
if(p->==Free && (p->>=request))
if(q==NULL)
{
q=p;
ch=p->-request;
}
else if(q-> < p->)
{
q=p;
ch=p->-request;
}
p=p->next;
if(q=NULL) leturn ERROR;//没有找到空闲块
else if(q->==request)
f
i
q->data. state=Busy;
return OK;
}
else
f
i
temp->prior=q->pnor;
temp->next=q;
temp->=q->;
q->prior->next=temp;
q->prior=temp;
q->+=request;
q->=ch;
retuni OK;
}
return OK;
}
〃主存回收
Status fiee(int flag)
{
DuLNode *p=block_first;
fbr(int i= 0; i <= flag; i++)
if(p!=NULL)
p=p->next;
else
return ERROR;
p->data. state=Free;
if(p->pnor!=block_fiist && p->piior->=Free)//4 前而的空闲块相连 {
p->pnor->+=p->;
p->pnor->next=p->next;
p->next->piioi-p prior;
p=p->prioi;
}
if(p->next!=block_last && p->next->=Free)//与后而的空闲块相连
p->+=p->next->;