常見記憶體配置演算法及優缺點
常見記憶體配置演算法及優缺點如下:
(1)首次適應演算法。使用該演算法進行記憶體配置時,從空閑分區鏈首開始尋找,直至找到一個能滿足其大小要求的空閑分區為止。然後再按照作業的大小,從該分區中划出一塊記憶體配置給要求者,餘下的空閑分區仍留在空閑分區鏈中。
該演算法傾向於使用記憶體中低地址部分的空閑分區,在高地址部分的空閑分區很少被利用,從而保留了高地址部分的大空閑區。顯然為以後到達的大作業分配大的內
存空間創造了條件。缺點在於低址部分不斷被劃分,留下許多難以利用、很小的空閑區,而每次尋找又都從低址部分開始,這無疑會增加尋找的開銷。
(2)迴圈首次適應演算法。該演算法是由首次適應演算法演變而成的。在為進程分配記憶體空間時,不再每次從鏈首開始尋找,而是從上次找到的空閑分區開始尋找,直至
找到一個能滿足要求的空閑分區,並從中划出一塊來分給作業。該演算法能使空閑中的記憶體分區分布得更加均勻,但將會缺乏大的空閑分區。
(3)最佳適應演算法。該演算法總是把既能滿足要求,又是最小的空閑分區分配給作業。
為了加速尋找,該演算法要求將所有的空閑區按其大小排序後,以遞增順序形成一個空白鏈。這樣每次找到的第一個滿足要求的空閑區,必然是最優的。孤立地看,
該演算法似乎是最優的,但事實上並不一定。因為每次分配後剩餘的空間一定是最小的,在儲存空間中將留下許多難以利用的小空閑區。同時每次分配後必須重新排序,
這也帶來了一定的開銷。
(4)最差適應演算法。最差適應演算法中,該演算法按大小遞減的順序形成空閑區鏈,分配時直接從空閑區鏈的第一個空閑分區中
分配(不能滿足需要則不分配)。很顯然,如果第一個空閑分區不能滿足,那麼再沒有空閑分區能滿足需要。這種分配方法初看起來不太合理,但它也有很強的直觀
吸引力:在大空閑區中放入程式後,剩下的空閑區常常也很大,於是還能裝下一個較大的新程式。
最壞適應演算法與最佳適應演算法的排序正好相反,它的隊列指標總是指向最大的空閑區,在進行分配時,總是從最大的空閑區開始查尋。
該演算法克服了最佳適應演算法留下的許多小的片段的不足,但保留大的空閑區的可能性減小了,而且空閑區回收也和最佳適應演算法一樣複雜。