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


關於首次適應算法、最佳適應算法和最差適應算法,先看一下百度百科的解釋,已經說出了三者的最大區別。

首次適應算法(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,所以不分配

ps:好久沒碰操作系統了,今天看到這三個算法的第一反應居然有點懵,還是好記性不如爛筆頭啊,本文中的定義來自百度百科,實例題目來自老師布置的作業,答案分析為筆者按自己的理解寫的,若有不對,歡迎指出~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM