分割槽分配演算法

2021-09-29 19:03:29 字數 2122 閱讀 6150

1.首次適應演算法ff(first fit)2.最佳適應演算法bf(best fit)

基本思想:bf的空閒分割槽表(或空閒分割槽鏈)按空閒區大小的公升序方法組織。分配時,按空閒分割槽表(或空閒分割槽鏈)的先後次序,從頭查詢,找到符合要求的第乙個分割槽。就說明它是最適合的(即最佳的)。大的空閒區可以被保留下來。

最壞適應演算法wf(worst fit)

基本思想:按照空閒分割槽的大小從大到小進行排序,因此每次總是從最大的空閒分割槽開始查詢,如果第乙個空閒分割槽不能滿足,則查詢結束。

#include

#include

#include

#define max 10

int pn;

//分割槽數量

int wn;

//作業數量

int work[max]

;typedef

struct partition

part;

part pt[max]

;//保留原始資料

void

menu()

void

print

(part p)

//列印輸出

}printf

("分割槽號 始址 大小\n");

for(i =

0; i < pn; i++

)printf

("%4d%6d%5d\n"

, p[i]

.id, p[i]

.sa, p[i]

.sz);}

void

copy

(part p[

], part s)

}void

sort

(part p)

//wf、bf演算法使分割槽打亂,因此重新排序

n--;}

}void

judge

(part p)

//判斷作業是否滿足

if(flag)}}

bool check

(part p)

//檢查分割槽記憶體是否越界溢位

return flag;

}void

free

(part p)

//釋放記憶體,實際上是擴充空閒分割槽

else

}voidff(

)//首先適應演算法

n--;}

printf

("位址排序後:\n");

print

(p);

judge

(p);

sort

(p);

copy

(p, pt)

;print

(pt);}

voidbf(

)//最佳適應演算法

n--;}

printf

("大小排序後:\n");

print

(p);

judge

(p);

sort

(p);

copy

(p, pt)

;print

(pt);}

void

init()

flag =

check

(pt);if

(!flag)

}void()

//作業申請

printf

("請選擇:(1)ff (2)bf ");

scanf

("%d"

,&choice);if

(choice ==1)

ff();

if(choice ==2)

bf();

}voidwf(

) n--;}

printf

("分割槽大小排序後:\n");

print

(p);

judge

(p);

sort

(p);

copy

(p, pt)

;print

(p);

}int

main()

動態分割槽分配演算法

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

動態分割槽分配演算法

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

動態分割槽分配演算法

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