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

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

首次適應算法(first-fit):操作系統

    從空閒分區表的第一個表目起查找該表,把最早可以知足要求的空閒區分配給做業,這種方法的目的在於減小查找時間。ci

    最佳適應算法(best-fit):從所有空閒區中找出能知足做業要求的,且大小最小的空閒分區,這種方法能使碎片儘可能小。it

    最差適應算法(worst-fit):它從所有空閒區中找出能知足做業要求的、且大小最大的空閒分區,從而使鏈表中的節點大小趨於均勻。io

下面看一個實例:百度

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空閒區;process

    爲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:很久沒碰操做系統了,今天看到這三個算法的第一反應竟然有點懵,仍是好記性不如爛筆頭啊,本文中的定義來自百度百科,實例題目來自老師佈置的做業,答案分析爲筆者按本身的理解寫的,如有不對,歡迎指出~~

相關文章
相關標籤/搜索