1、首次適應算法
算法思想:每次都從低地址開始查找,找到第–個能滿足大小的空閑分區。
如何實現:空閑分區以地址遞增的次序排列。每次分配內存時順序查找空閑分區鏈( 或空閑分[表),找到 大小能滿足要求的第-一個空閑分區。
2、最佳適應算法
算法思想:由於動態分區分配是一種連續分配方式,為各進程分配的空間必須是連續的一整片區域。因此為了保證當“大進程”到來時能有連續的大片空間,可以盡可能多地留下大片的空閑區,即,優先使用更小的空閑區。
如何實現:空閑分區按容量遞增次序鏈接。每次分配內存時順序查找空閑分區鏈(或空閑分區表),找到大小能滿足要求的第-一個空閑分區。
3、最壞適應算法
又稱最大適應算法(Largest Fit)
算法思想:為了解決最佳適應算法的問題—即留下太多難以利用的小碎片,可以在每次分配時優先使用最大的連續空閑區,這樣分配后剩余的空閑區就不會太小,更方便使用。
如何實現:空閑分區按容量遞減次序鏈接。每次分配內存時順序查找空閑分區鏈(或空閑分區表),找到大小能滿足要求的第-一個空閑分區。
4、鄰近適應算法
算法思想:首次適應算法每次都從鏈頭開始查找的。這可能會導致低地址部分出現很多小的空閑分區, 而每次分配查找時,都要經過這些分區,因此也增加了查找的開銷。如果每次都從上次查找結束的位置 開始檢索,就能解決上述問題。
如何實現:空閑分區以地址遞增的順序排列(可排成一個循環鏈表)。每次分配內存時從上次查找結束的 位置開始查找空閑分區鏈(或空閑分區表),找到大小能滿足要求的第一個空閑分區。
5、總結
首次適應不僅最簡單,通常也是最好最快,不過首次適應算法會使得內存低地址部分出現很多小的空閑 分區,而每次查找都要經過這些分區,因此也增加了查找的開銷。鄰近算法試圖解決這個問題,但實際 上,它常常會導致在內存的末尾分配空間分裂成小的碎片,它通常比首次適應算法結果要差。 最佳導致大量碎片,最壞導致沒有大的空間。 進過實驗,首次適應比最佳適應要好,他們都比最壞好。