動態分割槽分配

2021-08-09 02:03:12 字數 1339 閱讀 5048

動態分割槽分配是根據程序的實際需要,動態的為之分配記憶體的空間。總體是按照演算法規則找到分配的空閒分割槽,然後從該分割槽中再按照作業的大小劃出一塊記憶體空間分給作業,該分割槽餘下的空閒分割槽當做乙個新的空閒分割槽留在空閒鏈中。

當作業按照演算法規則分配好了後,等作業執行完畢釋放記憶體,系統根據**區的首址,從空閒區煉表中找到相應的插入點,此時可能出現以下4種情況之一:

**區與插入點的前乙個空閒分割槽f1相鄰接,此時將兩個分割槽合併;

**區與插入點的後乙個空閒分割槽f2相鄰接,此時將兩個分割槽合併;

**區與插入點的前,後兩個空閒分割槽相鄰接,此時將三個分割槽合併;

**區既不與f1相鄰接,又不與f2相鄰接,此時應為**區單獨建立乙個新表項。

1)首次適應演算法

首次適應演算法,要求空閒分割槽鏈以位址遞增的次序鏈結,在分配記憶體時,從鏈首開始順序查詢,直到找到乙個大小能滿足要求的空閒分割槽為止,然後再按照作業的大小,從該分割槽中劃出一塊記憶體空間分給請求者,餘下的空閒分割槽仍停留在空閒鏈中。

2)迴圈首次適應演算法

該演算法是由首次適應演算法演變而成的。

在為程序分配記憶體空間時,不再每次從鏈首開始查詢,而是從上次找到的空閒分割槽開始查詢,直至找到乙個能滿足需求的空閒分割槽,並從中劃出一塊來分給作業。

該演算法能使空閒中的記憶體分割槽分布得更加均勻,但將會缺乏大的空閒分割槽。

3)最佳適應演算法

該演算法總是把既能滿足需求又是最小的空閒分割槽分配給作業。

為了加速查詢,

該演算法需要將所有的空閒區

按其大小從小到大進行排序

後,當有作業要分配的時候,查詢滿足其記憶體需求,同時又是最小的空閒塊,然後分配給作業。

這樣每次找到的第乙個滿足需求的空閒區,必然是最優的。但該演算法容易由於每次是查詢到滿足作業的最小空閒塊

,然後從該分割槽中再按照作業的大小劃出一塊記憶體空間分給作業,該分割槽餘下的空閒分割槽當做乙個新的空閒分割槽留在空閒鏈中

,由於在沒分配前該分割槽(滿足作業的最小空閒塊)大小一般不會超過該作業太多,就容易會出現在儲存器中將留下許多難以利用的小空閒區,同時每次分配後必須重新排序,這也帶來了一定的開銷。

4)最差適應演算法

最差適應演算法中,

該演算法需要將所有的空閒區

按其大小從大到小進行排序

,分配時直接從空閒區鏈的第乙個空閒分割槽中分配(不能滿足需要則不分配)。非常顯然,如果第乙個空閒分割槽不能滿足,那麼再沒有空閒分割槽能滿足需要

。這種分配方法初看起來不太合理,但他也有非常強的直觀吸引力:在大空閒區中放入程式後,剩下的空閒區常常也非常大,於是還能裝下乙個較大的新程式。

例題:在動態分割槽分配方案中,某一作業完成後,系統收回其主存空間,並與相鄰空閒區合併,為此需要修改空閒區表,造成空閒區數減1的情況是()

解答:d

動態分割槽分配

一 實驗目的 1.通過這次實驗,加深對動態分割槽分配的理解,進一步掌握首次適應演算法和最佳適應演算法的理解。了 解動態分割槽分配方式中使用的資料結構和分配演算法,進一步加深對動態分割槽儲存管理方式及其實現 過程的理解。提高學生設計實驗 發現問題 分析問題和解決問題的能力。2.學會可變式分割槽管理的原...

動態分割槽分配演算法

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

動態分割槽分配演算法

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