分區分配算法(Partitioning Placement Algorithm)

寫在前面:
本文章旨在總結備份、方便以後查詢,由於是個人總結,如有不對,歡迎指正;另外,內容大部分來自網絡、書籍、和各類手冊,如若侵權請告知,馬上刪帖致歉。

來源:

https://blog.csdn.net/u011070169/article/details/53177987

https://www.gatevidyalay.com/contiguous-memory-allocation-practice-problems/

 

首次適應算法(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?

 

1、首次適應算法:

  • 爲 212k分配空間:

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

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

  • 爲 417k分配空間:

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

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

  • 爲 112k分配空間:

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

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

  • 爲 426k分配空間:

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

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

 

2、最佳適應算法:

  • 爲 212k分配空間:

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

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

  • 爲 417k分配空間:

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

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

  • 爲 112k分配空間:

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

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

  • 爲 426k分配空間:

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

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

 

3、最差適應算法:

  • 爲212k分配空間:

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

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

  • 爲 417k分配空間:

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

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

  • 爲 112k分配空間:

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

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

  • 爲426k分配空間:

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

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

 

Answer

Free partition 100 500 200  300  600 Not satisfied
First-fit   212,112     417 426
Best-fit   417 112 212 426  
Worst-fit   417     212,112 426

 

文字圖表看不懂,那接着配合動圖來了解:

這次我們考慮六個大小爲 200 KB,400 KB,600 KB,500 KB,300 KB和 250 KB的內存分區;這些分區需要按此順序分配給四個進程,大小分別爲 357 KB,210 KB,468 KB和 491 KB。

依次執行:

  • 首次適應算法
  • 最佳適應算法
  • 最差適應算法

1、首次適應算法:

  • 進程 P4無法分配內存,這是因爲沒有大於或等於處理 P4的大小的分區可用。


2、最佳適應算法:

 

3、最差適應算法:

  • 無法爲進程 P3和進程 P4分配內存,這是因爲沒有大於或等於處理 P3和處理 P4的大小的分區可用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章