首次適應演算法 最佳適應演算法和最差適應演算法

2021-08-20 14:27:39 字數 1781 閱讀 5835

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

從空閒分割槽表的第乙個表目起查詢該錶,把最先能夠滿足要求的空閒區分配給作業,這種方法的目的在於減少查詢時間。

最佳適應演算法(best-fit):從全部空閒區中找出能滿足作業要求的,且大小最小的空閒分割槽,這種方法能使碎片盡量小。

最差適應演算法(worst-fit):它從全部空閒區中找出能滿足作業要求的、且大小最大的空閒分割槽,從而使煉表中的節點大小趨於均勻。

下面看乙個例項:

given five memory partitions of 100 kb, 500 kb, 200 kb, 300 kb, and 600 kb (in order), how would each of the first-fit, best-fit, and worst-fit algorithms place processes of 212 kb, 417 kb, 112 kb, and 426 kb (in order)? which algorithm makes the most efficient use of memory?

首次適應演算法:

為212k分配空間:

依次找尋,找到第乙個大於212k的空閒區;

找到第二個空閒區500k>212k,分配給212k,剩餘288k空閒區;

為417k分配空間:

依次找尋,找到第乙個大於417k的空閒區;

找到第五個空閒區600k>417k,分配給417k,剩餘183k空閒區

為112k分配空間:

依次找尋,找到第乙個大於112k的空閒區;

找到第二個空閒區288k>112k,分配給112k,剩餘176k空閒區

為426k分配空間:

依次找尋,找到第乙個大於426k的空閒區;

未找到,此作業將等待釋放空間

最佳適應演算法:

為212k分配空間:

找到第乙個跟212k大小最接近的空閒區

找到第四個空閒區300>212k,剩餘88k空閒區

為417k分配空間:

找到第乙個跟417k大小最接近的空閒區

找到第二個空閒區500>417,剩餘83k空閒區

為112k分配空間:

找到第乙個跟112k大小最接近的空閒區

找到第三個空閒區200>112k,剩餘88k空閒區

為426k分配空間:

找到第乙個跟426大小最接近的空閒區

找到第五個空閒區600k>426,剩餘74k空閒區

最壞適應演算法:

為212k分配空間:

找到第乙個大小最大的空閒區

找到第五個空閒區600>212k,剩餘388k空閒區

為417k分配空間:

找到第乙個大小最大的空閒區

找到第二個空閒區500>417,剩餘83k空閒區

為112k分配空間:

找到第乙個大小最大的空閒區

找到第三個空閒區388>112k,剩餘276k空閒區

為426k分配空間:

找到第乙個大小最大的空閒區

達到大小最大的空閒區300k<426k,所以不分配

answer

free partition

100  

500  

200  

300  

600not satisfied

first-fit   

212,112    

417426

best-fit

417112

212426

worst-fit

417212,112  

426

首次適應演算法 FF 和迴圈首次適應演算法 NF

原文 ff和nf演算法都是基於順序搜尋的動態分割槽分配演算法,在記憶體中檢索一塊分割槽分配給作業。如果空間大小合適則分配,如果找不到空間則等待。ff演算法按位址遞增從頭掃瞄空閒分割槽,如果找到空閒分割槽大小 作業大小則分配。如果掃瞄完空閒分割槽表都沒有找到分割槽,則分配失敗。nf演算法和ff演算法類...

動態分割槽分配 迴圈首次適應演算法 最佳適應演算法

文章待更新 1 採用空閒區表,並增加已分配區表。分配演算法採用最佳適應演算法 記憶體空閒區按照尺寸大小從小到大的排列 和迴圈首次適應演算法,實現記憶體的分配與 include include include include includeusing namespace std int pos,n,s...

動態分割槽 首次適應 最佳適應

對分割槽的分配演算法可以是下面三種演算法之一 memory v1.cpp 定義控制台應用程式的入口點。name memory v1.cpp author wanglin created on 2015 11 04 function 首次適應演算法 可變式分割槽分配,模擬實現分割槽的分配和 過程。in...