基本介紹
- 中文名:夥伴系統
- 種類:Linux核心
- 包括:32位和64位系統
- 類型:記憶體分頁模型
系統簡介,系統特點,
系統簡介
頁全局目錄(Page Global Directory)
頁上級目錄(Page Upper Directory)
頁中間目錄(Page Middle Directory)
頁表(Page Table)
系統特點
在實際套用中,經常需要分配一組連續的頁框,而頻繁地申請和釋放不同大小的連續頁框,必然導致在已分配頁框的記憶體塊中分散了許多小塊的空閒頁框。這樣,即使這些頁框是空閒的,其他需要分配連續頁框的套用也很難得到滿足。
為了避免出現這種情況,Linux核心中引入了夥伴系統算法(buddy system)。把所有的空閒頁框分組為11個塊鍊表,每個塊鍊表分別包含大小為1,2,4,8,16,32,64,128,256,512和1024個連續頁框的頁框塊。最大可以申請1024個連續頁框,對應4MB大小的連續記憶體。每個頁框塊的第一個頁框的物理地址是該塊大小的整數倍。
假設要申請一個256個頁框的塊,先從256個頁框的鍊表中查找空閒塊,如果沒有,就去512個頁框的鍊表中找,找到了則將頁框塊分為2個256個頁框的塊,一個分配給套用,另外一個移到256個頁框的鍊表中。如果512個頁框的鍊表中仍沒有空閒塊,繼續向1024個頁框的鍊表查找,如果仍然沒有,則返回錯誤。
頁框塊在釋放時,會主動將兩個連續的頁框塊合併為一個較大的頁框塊。