基於順序搜尋的動態分割槽分配演算法

2021-07-22 10:51:42 字數 1461 閱讀 5280

有以下四種演算法:

最佳適應法

最壞適應法

首次適應法

下次適應法(迴圈首次適應法)

1)首次適應演算法(first fit):

從空閒分割槽表的第乙個表目起查詢該錶,把最先能夠滿足要求的空閒區分配給作業,這種方法目的在於減少查詢時間。為適應這種演算法,空閒分割槽表(空閒區鏈)中的空閒分割槽要按位址由低到高進行排序。該演算法優先使用低址部分空閒區,在低址空間造成許多小的空閒區,在高位址空間保留大的空閒區。

特點該演算法傾向於優先利用記憶體中低址部分的空閒分割槽,從而保留了高址部分的大空閒區,這為以後到達的大作業分配大的記憶體空間創造了條件。

缺點低址部分不斷被劃分,會留下許多難以利用的,很小的空閒分割槽,稱為碎片。而每次查詢又都是從低址部分開始的,這無疑又會增加查詢可用空閒分割槽時的開銷

2)下次適應(next fit)演算法也稱「臨近適應」演算法,其工作方式和最先適應演算法相同(最先適應也稱首次適應演算法。它總是最先找到的、滿足儲存要求的那個空閒分割槽作為分配物件。),不同的是每次找到合適的空閒的分割槽時就記住它的位置,以便下次就從該位置開始往下查詢,而不是每次都像最先適應演算法那樣從頭開始查詢。這種演算法的總體結果通常要比最先適應演算法差。由於它經常會在記憶體的末尾分配儲存分割槽,使位於儲存空間末尾的最大分割槽被撕裂稱小的外部碎片,因此必須經常不斷地進行儲存緊湊。在該演算法中應採取迴圈查詢方式,即最後上個空閒區的大小仍不能滿足要求時,應再從第乙個空閒區開始查詢,故又稱為迴圈造就演算法。

3)最佳適應演算法(best fit):

它從全部空閒區中找出能滿足作業要求的、且大小最小的空閒分割槽,這種方法能使碎片盡量小。為適應此演算法,空閒分割槽表(空閒區鏈)中的空閒分割槽要按從小到大進行排序,自表頭開始查詢到第乙個滿足要求的自由分割槽分配。該演算法保留大的空閒區,但造成許多小的空閒區。

best fit演算法等價於裝箱問題,舉例如下:

裝箱問題:有體積為v的箱子n個,體積為vi的物品m個,求使得物品全部能夠裝入箱子,箱子數量的最小值。

假設 v=6 n=10,v1,v2,...,v10分別為:3 4 4 3 5 1 2 5 3 1。計算過程如下:

第一步按物品體積降序排序:5 5 4 4 3 3 3 2 1 1

第二步:取未裝箱的最大值5裝入第乙個箱子。

第三步:判斷第乙個箱子是否已滿,不滿且剩餘空間為1,搜尋剩**積小於等於1的物品填入箱子1,箱子1填滿。

第四步:重複第二,第三步,直到所有物品裝入箱子為止,得到箱子數量為6.

6即時本例n的最小值。

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

最壞適應分配演算法要掃瞄整個空閒分割槽或鍊錶,總是挑選乙個最大的空閒分割槽分割給作業使用。該演算法要求將所有的空閒分割槽按其容量從大到小的順序形成一空閒分割槽鏈,查詢時只要看第乙個分割槽能否滿足作業要求。

優點:可使剩下的空閒分割槽不至於太小,產生碎片的機率最小,對中、小作業有利,同時該演算法查詢效率很高。

缺點:會使儲存器中缺乏大的空閒分割槽。

最壞適應演算法與首次適應演算法、迴圈首次適應演算法、最佳適應演算法一起,也稱為順序搜尋法。

儲存器管理 基於順序搜尋的動態分割槽分配演算法習題

某作業系統採用可變分割槽分配儲存管理方法,使用者區為512k且始址為0。若分配採用分配空閒區低位址部分的方案,對下述申請序列 申請310k,申請100k,釋放310k,申請150k,申請40k,申請30k。分別採用首次適應演算法 最佳適應演算法,回答下列問題 1 給出每一步的已分配空間 空閒分割槽 ...

動態分割槽分配演算法

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

動態分割槽分配演算法

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