動態分割槽分配 迴圈首次適應演算法 最佳適應演算法

2021-07-12 05:01:55 字數 1576 閱讀 6567

(文章待更新)

(1)採用空閒區表,並增加已分配區表。分配演算法採用最佳適應演算法(記憶體空閒區按照尺寸大小從小到大的排列)和迴圈首次適應演算法,實現記憶體的分配與**。

#include#include#include#include#includeusing namespace std;

int pos,n,size; ///查詢位置,分割槽數量,最小分割大小

struct list

l[2000];

struct task

t[2000];

bool cmp(list a,list b)

if(t[l].sad+t[l].rom==l[i].sad)

}//cout}

for(int j=temp; j<=n; j++)

t[j].id++;

n++;

l[temp].id=temp;

l[temp].rom=t[l].rom;

l[temp].sad=t[l].sad;

l[temp].state=0;

}cout<<"記憶體**完畢!"<>tmp;

int k=0;

if(tmp==1)

if(i>n)

if((l[i].state==0||l[i].state==1)&&l[i].rom>=t[i].rom)

else

}else if(l[i].state=0&&l[i].rom-t[k].rom==size)}}

else if(tmp==2)

else if(tmp==3)

print();

else if(tmp==0)

return;

else

}}void bf()///最佳適應演算法

if((l[i].state==0||l[i].state==1)&&l[i].rom>=t[i].rom)

else

}else if(l[i].state=0&&l[i].rom-t[k].rom==size)

}if(i>n)

}else if(tmp==2)

else if(tmp==3)

print();

else if(tmp==0)

return;

else

}}void init()

printf("輸入完畢,當前空閒分割槽表狀態為:\n");

print();

printf("請輸入不再切割的剩餘空間的大小:\n");

cin>>size;

loop2:

int tmp;

cin>>tmp;

if(tmp==1)nf();

else if(tmp==2)bf();

else if(tmp==3)

else if(tmp==4) return;

else

}int main()/*5

50 85

32 155

70 275

60 532

10 98031

12532

130*/

動態分割槽分配演算法

動態分割槽分配演算法 一.順序搜尋的動態分割槽分配演算法 1.首次適應演算法 first fit 演算法思想 將空閒分割槽鏈以位址遞增的順序連線 在進行記憶體分配時,從鏈首開始順序查詢,直到找到一塊分割槽的大小可以滿足需求時,按照該作業的大小,從該分割槽中分配出記憶體,將剩下的空閒分割槽仍然鏈在空閒...

動態分割槽分配演算法

1.首次適應演算法 ff 2.迴圈首次適應演算法 nf 和首次適應演算法的區別就是,在為程序分配記憶體空間的時候,不再是都從鏈首開始查詢,而是從上次找到的空閒的分割槽的下乙個空閒分割槽開始查詢,直到找到乙個能滿足要求的空閒分割槽。3.最佳適應演算法 bf 將所有的空閒空間按其容量從小到大的順序形成一...

動態分割槽分配演算法

主函式 乙個選單欄的形式,可以選擇要執行的演算法。首次適應演算法 每次都從開始往後找滿足條件的分割槽。迴圈首次適應演算法 從前一次找到的地方往後繼續找分割槽。最佳適應演算法 先從小到大排序,找比前乙個大後乙個小的分割槽。1.首次適應演算法 該演算法從空閒分割槽鏈首開始查詢,直至找到乙個能滿足其大小要...