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

2021-10-01 16:39:35 字數 1334 閱讀 5045

某作業系統採用可變分割槽分配儲存管理方法,使用者區為512k且始址為0。若分配採用分配空閒區低位址部分的方案,對下述申請序列:

申請310k,申請100k,釋放310k,申請150k,申請40k,申請30k。

分別採用首次適應演算法、最佳適應演算法,回答下列問題:

(1)給出每一步的已分配空間、空閒分割槽(給出始址,大小)?

(2) 若再申請120k,還能分配這120k儲存空間嗎?

答:首次適應演算法:

操作:已分配空間

空閒塊初始

無(0,512k)

申請310k

(0,310k)

(310k,202k)

申請100k

(0,310k)(310k,100k)

(410k,102k)

釋放310k

(310k,100k)

(0,310k)(410k,102k)

申請150k

(0,150k)(310k,100k)

(150k,160k)(410k,102k)

申請40k

(0,150k)(150k,40k)(310k,100k)

(190k,120k)(410k,102k)

申請30k

(0,150k)(150k,40k)(190k,30k)(310k,100k)

(220k,90k)(410k,102k)

如再申請空間120k空間,由上述結果可知,採用首次適應演算法後剩下的空閒分割槽沒有大於120k的空閒空間,不能滿足這一申請要求。

最佳適應演算法:

操作:已分配空間

空閒塊初始

無(0,512k)

申請310k

(0,310k)

(310k,202k)

申請100k

(0,310k)(310k,100k)

(410k,102k)

釋放310k

(310k,100k)

(0,310k)(410k,102k)

申請150k

(0,150k)(310k,100k)

(150k,160k)(410k,102k)

申請40k

(0,150k)(310k,100k)(410k,40k)

(150k,160k)(450k,62k)

申請30k

(0,150k)(310k,100k)(410k,40k)(450k,30k)

(150k,160k)(480k,32k)

如再申請空間120k空間,由上述結果可知,採用最佳適應演算法後剩下的空閒分割槽有大於120k的空閒空間(空閒塊(150k,160k)),能滿足這一申請要求。

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

有以下四種演算法 最佳適應法 最壞適應法 首次適應法 下次適應法 迴圈首次適應法 1 首次適應演算法 first fit 從空閒分割槽表的第乙個表目起查詢該錶,把最先能夠滿足要求的空閒區分配給作業,這種方法目的在於減少查詢時間。為適應這種演算法,空閒分割槽表 空閒區鏈 中的空閒分割槽要按位址由低到高...

資料結構與基本演算法的學習筆記 順序搜尋 2

函式中傳入三個引數 待搜尋的陣列,搜尋範圍,需要搜尋的值。include using namespace std int seqsearch int a,const int n const int x int main int pos seqsearch a,5,3 if pos 1 cout co...

基於順序儲存結構的棧StaticStack的實現

棧頂 top 允許操作的一端 棧底 bottom 不允許操作的一端 ifndef stack h define stack h include object.h namespace dtlib endif 1 使用原生陣列作為棧的儲存空間 2 使用模極引數決定棧的最大容量 3 用乙個標識不斷跟蹤棧頂...