} }
//思路:先把空闲列表检索一遍,选出最佳答案,进行分配
void best_fit()//最佳算法--按顺序检索,把与进程要求内存大小最接近的快分配给进程 {
int i; int s;
int j=-9999;//用来保存最接近的答案 int e;//用来存放进行比较时的中间结果
11
}
{
if(ary1[id2][3]!=2) } } else{ }
cout<<\与\不匹配\stream.open(\
stream<<\与\不匹配\stream.close(); n=k;
//-------------------------- vision(); break; }
{
ary2[k][0]=ary1[id2][0]; ary2[k][1]=ary1[id2][1]; ary2[k][2]=ary1[id2][2]; k++; }
ary1[s][3]=ary1[s-1][3];
}
//改变第k+1块内容:对应的数组是ary1[k] ary1[k][0]=ary1[k-1][0]+1; ary1[k][1]=d-ary1[k-1][1];
ary1[k][2]=ary1[k-1][1]+ary1[k-1][2];
//-------------------------- //----改变空闲表分配情况----
k=0;
for(id2=0;id2 }else { cout<<\与\最佳相匹配\stream.open(\ int k; int l; int d; int id2; vision(); { e=9999; j=-9999; for(s=0;s cout<<\与\所有空闲盘块不匹配\stream.open(\ if((ary2[s][1]>=ary3[i])&&(e>ary2[s][1]))//满足分配要求 { e=ary2[s][1]; } j=s; for(i=0;i stream<<\与\所有空闲盘块不匹配\ stream.close(); stream<<\与\最佳相匹配\ stream.close(); if(ary2[j][1]==ary3[i]) { } else 12 for(l=k;l ary2[l-1][0]=ary2[l][0]; ary2[l-1][1]=ary2[l][1]; ary2[l-1][2]=ary2[l][2]; ary1[k-1][3]=2; k=ary2[j][0]; } //最坏适应算法 void worst_fit() 13 } { if(ary1[id2][3]!=2) } } vision(); n=k; } for(k=j+1;k ary2[k][0]++; { ary2[k][0]=ary1[id2][0]; ary2[k][1]=ary1[id2][1]; ary2[k][2]=ary1[id2][2]; k++; } { //把对应的内存分配进行更改 k=ary2[j][0]; d=ary1[k-1][1]; ary1[k-1][1]=ary3[i]; ary1[k-1][3]=2; m++; for(l=m;l>ary2[j][0]+1;l--) { } k=ary2[j][0]; ary1[k][0]=k+1; ary1[k][1]=d-ary1[k-1][1]; ary1[k][2]=ary1[k-1][1]+ary1[k-1][2]; ary1[k][3]=0; k=0; ary1[l-1][0]=ary1[l-2][0]+1; ary1[l-1][1]=ary1[l-2][1]; ary1[l-1][2]=ary1[l-2][2]; ary1[l-1][3]=ary1[l-2][3]; for(id2=0;id2 { }else { cout<<\与\最差相匹配\stream.open(\ int i; int s; int j=-9999;//用来保存最接近的答案 int e=-9999;//用来存放进行比较时的中间结果 int k; int l; int d; int id2; vision(); { j=-9999; e=-9999; for(s=0;s cout<<\与\所有空闲盘块不匹配\stream.open(\ if((ary2[s][1]>=ary3[i])&&(e e=ary2[s][1]; } j=s; for(i=0;i stream<<\与\所有空闲盘块不匹配\ stream.close(); stream<<\与\最差相匹配\ stream.close(); if(ary2[j][1]==ary3[i]) { k=ary2[j][0]; ary1[k-1][3]=2; for(l=k;l ary2[l-1][0]=ary2[l][0]; ary2[l-1][1]=ary2[l][1]; 14 { if(ary1[id2][3]!=2) } } vision(); 15 n=k; } for(k=j+1;k ary2[k][0]++; { ary2[k][0]=ary1[id2][0]; ary2[k][1]=ary1[id2][1]; ary2[k][2]=ary1[id2][2]; k++; } } else { //把对应的内存分配进行更改 k=ary2[j][0]; d=ary1[k-1][1]; ary1[k-1][1]=ary3[i]; ary1[k-1][3]=2; m++; for(l=m;l>ary2[j][0]+1;l--) { } k=ary2[j][0]; ary1[k][0]=k+1; ary1[k][1]=d-ary1[k-1][1]; ary1[k][2]=ary1[k-1][1]+ary1[k-1][2]; ary1[k][3]=0; k=0; ary1[l-1][0]=ary1[l-2][0]+1; ary1[l-1][1]=ary1[l-2][1]; ary1[l-1][2]=ary1[l-2][2]; ary1[l-1][3]=ary1[l-2][3]; } n--; ary2[l-1][2]=ary2[l][2]; for(id2=0;id2