linux夥伴關係演算法簡介

來源:互聯網
上載者:User

6.3.1夥伴演算法

 1.原理

       Linux的夥伴演算法把所有的空閑頁面分為10個塊組,每組中塊的大小是2的冪次方個頁面,例如,第0組中塊的大小都為20 (1個頁面),第1組中塊的大小為都為21(2個頁面),第9組中塊的大小都為29(512個頁面)。也就是說,每一組中塊的大小是相同的,且這同樣大小的塊形成一個鏈表。

   我們通過一個簡單的例子來說明該演算法的工作原理。

   假設要求分配的塊其大小為128個頁面(由多個頁面組成的塊我們就叫做頁面塊)。該演算法先在塊大小為128個頁面的鏈表中尋找,看是否有這樣一個空閑塊。如果有,就直接分配;如果沒有,該演算法會尋找下一個更大的塊,具體地說,就是在塊大小為256個頁面的鏈表中尋找一個空閑塊。如果存在這樣的空閑塊,核心就把這256個頁面分為兩等份,一份分配出去,另一份插入到塊大小為128個頁面的鏈表中。如果在塊大小為256個頁面的鏈表中也沒有找到空閑頁塊,就繼續找更大的塊,即512個頁面的塊。如果存在這樣的塊,核心就從512個頁面的塊中分出128個頁面滿足請求,然後從384個頁面中取出256個頁面插入到塊大小為256個頁面的鏈表中。然後把剩餘的128個頁面插入到塊大小為128個頁面的鏈表中。如果512個頁面的鏈表中還沒有空閑塊,該演算法就放棄分配,並發出出錯訊號。

       以上過程的逆過程就是塊的釋放過程,這也是該演算法名字的來由。滿足以下條件的兩個塊稱為夥伴:

·      兩個塊的大小相同

·      兩個塊的物理地址連續

夥伴演算法把滿足以上條件的兩個塊合并為一個塊,該演算法是迭代演算法,如果合并後的塊還可以跟相鄰的塊進行合并,那麼該演算法就繼續合并。

2.資料結構

在6.2.5節中所介紹的管理區資料結構struct zone_struct中,涉及到空閑區資料結構:

free_area_t free_area[MAX_ORDER];

我們再次對free_area_t給予較詳細的描述。

#difine   MAX_ORDER  10

    type struct free_area_struct {

           struct list_head   free_list

                 unsigned  int    *map

     } free_area_t


   其中list_head域是一個通用的雙向鏈表結構,鏈表中元素的類型將為mem_map_t(即struct page結構)。Map域指向一個位元影像,其大小取決於現有的頁面數。free_area第k項位元影像的每一位,描述的就是大小為2k個頁面的兩個夥伴塊的狀態。如果位元影像的某位為0,表示一對兄弟塊中或者兩個都空閑,或者兩個都被分配,如果為1,肯定有一塊已被分配。當兄弟塊都空閑時,核心把它們當作一個大小為2k+1的單獨快來處理。6.9給出該資料結構的:

                             

                 圖6.9 夥伴系統使用的資料結構

 圖6.9中,free_aea數組的元素0包含了一個空閑頁(頁面編號為0);而元素2則包含了兩個以4個頁面為大小的空閑頁面塊,第一個頁面塊的起始編號為4,而第二個頁面塊的起始編號為56。

我們曾提到,當需要分配若干個記憶體頁面時,用於DMA的記憶體頁面必須是連續的。其實為了便於管理,從夥伴演算法可以看出,只要請求分配的塊大小不超過512個頁面(2KB),核心就盡量分配連續的頁面。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.