3.4動態分配算法

一,首次適應算法(First Fit)

1,算法思想:每次都從低地址部分開始查找,找到第一個能滿足大小的空閒分區

 

2,如何實現:空閒分區一地址遞增的次序排列,每次分配內存時順序查找空閒分區表,找到大小能滿足要求的第一個空閒分區

 

 

二,最佳適應算法(Best Fit)

1,算法思想:由於動態分區分配是一種連續分配方式,爲各個進程分配的空間必須是一整片區域,因此爲了保證“大進程”到來時能有連續的大片空間,可以儘可能地留下大片空閒區,優先使用更小的空閒區。

 

2,如何實現:空閒區按容量遞增次序連接,每次分配內存時順序查找空閒分區鏈,找到大小能滿足要求的第一空閒分區。

 

3,缺點:每次都選最小的分區進行分配,會留下越來越多,很小的,難以利用的內存塊。因此這種方法會產生很多外部碎片

 

三,最壞適應算法(Worst Fit)

1,算法思想:爲了解決最佳適應算法的問題——留下太多難以利用的小碎片,可以在每次分配時優先使用最大的連續空閒區,這樣分配後剩餘的空閒區就不會太小,更方便使用

 

2,如何實現:空閒區按容量遞減的次序連接,每次分配內存時順序查找空閒區,找到第一個可以滿足要求的空閒分區。

 

3,缺點:每次都選最大的分區進行分配,雖然可以讓分配後留下的空閒區更大,更可用,但是這種方式會導致較大的連續空閒區被迅速用完。如果之後有“大進程”到達,就沒有內存可用了

 

四,鄰近適應算法(Next Fit)

1,算法思想:首次適應算法每次都從鏈頭開始查找,這可能會導致低地址部分出現很多很小的空閒分區,二每次分配查找時,都要經過這些分區,因此也增加了查找的開銷。如果每次都從上次查找結束的位置開始檢索,就能解決上述問題。

 

2,如何實現:空閒分區已地址遞增的順序排列(可以排列成一個循環鏈表)每次分配內存時從上次查找結束的位置開始查找空閒分區鏈,找到大小能滿足要求的第一個空閒分區

 

3,缺點:可能會導致高地址部分的大分區更可能被使用,劃分爲小分區,最後導致無大分區可用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章