文档介绍:精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
#include <> used_table[i].flag=process_name;
count1++;
}
else //已分配区表长度不足
{
if(free_table[k].flag == 0) //将已做的整个分配撤销
{
free_table[k].flag=1;
free_table[k].address=ads;
free_table[k].length=len;
}
else //将已做的切割分配撤销
{
free_table[k].address=ads;
free_table[k].length+=len;
}
cout<<"内存分配区已满,分配失败!\n";
return 0;
}
}
else
{
cout <<"无法为该作业找到合适分区!\n";
return 0;
}
return process_name;
}
int recycle(int process_name)
{
int y=0;
float recycle_address, recycle_length;
int i, j, k; //j栏是下邻空闲区,k栏是上栏空闲区
int x;
//在内存分配表中找到要回收的作业
while(y<=n-1&&used_table[y].flag!=process_name)
{ y=y+1;}
精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
if(y<=n-1) //找到作业后,将该栏的标志置为‘0’
{
recycle_address=used_table[y].address;
recycle_length=used_table[y].length;
used_table[y].flag=0;
count2++;
}
else //未能找到作业,回收失败
{
cout<<"该作业不存在!\n";
return 0;
}
j=k=-1;
i=0;
while(!(i>=m||(k!=-1&&j!=-1))) //修改空闲分区表
{
if(free_table[i].flag==1)
{ if((free_table[i].address+free_table[i].length)==recycle_address)
k=i; //判断是否有上邻接
i