Buddy演算法實現

2021-06-10 04:41:37 字數 832 閱讀 7640

buddy演算法是為了解決linux記憶體管理提出的一種高效管理演算法,主要解決記憶體碎片問題,其基本思路如下:

首先把記憶體中的頁框(乙個頁框大小4kb,對應乙個頁面,物理的)分為連續的1,2,4,8,16,32,64,128,256,512,1024個頁框數量,這樣當你需要分配6個頁面時,首先檢視連續8個頁面中大小是否為1,如果是則直接將這8個頁面分配出去,如果連續8個頁面也沒有就去看連續16個頁面是否存在有就拆分為兩個連續8個頁面,其中乙個分配出去,另乙個則將分給那個連續的8個頁面共下次分配,直到1024個頁面,若沒有則分配失敗。合併記憶體就是這個過程的反過程。

具體**如下:

#include

#include

struct info ;

void init(struct info info)

info[10].count = 1; 

info[10].end = 1023;     }

void print(struct info info)

else  

}      }

void buddy(struct info info, int num)

else

printf("allocate pages succefully!\n");

return ;             

}   

if(j == 10)  

}     }

}         

}     }

int main()

} system("pause");

return 0;     }

執行介面如下:

夥伴演算法 Buddy

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!hi,buddy 刺蝟 關於位圖 linux核心夥伴演算法中每個order 的點陣圖都表示所有的空閒塊,比如我家的電腦記憶體256m 現在連上個qq主頁都比較卡 理論上的order為0的bitmap有256m 4k 2 塊。為什麼要除以二呢?因為 ...

buddy演算法分配釋放記憶體

linux核心管理記憶體用二進位制夥伴演算法 buddy演算法 夥伴關係 乙個母實體分成兩個屬性相同的子實體,這兩個實體就是夥伴關係。乙個記憶體塊分成兩個大小相同的子記憶體塊,這兩個就是夥伴關係。滿足如下條件 每個記憶體塊有2 order個頁面,order相同的放在乙個鍊錶中。分配演算法 假如系統需...

記憶體管理演算法 Buddy夥伴演算法

buddy演算法的優缺點 1 儘管夥伴記憶體演算法在記憶體碎片問題上已經做的相當出色,但是該演算法中,乙個很小的塊往往會阻礙乙個大塊的合併,乙個系統中,對記憶體塊的分配,大小是隨機的,一片記憶體中僅乙個小的記憶體塊沒有釋放,旁邊兩個大的就不能合併。2 演算法中有一定的浪費現象,夥伴演算法是按2的冪次...