一.为什么要有伙伴算法?
伙伴算法是Linux系统一种管理内存的分配器,为了减少内存碎片而设计。伙伴算法拥有两个关键特征:速率和效率。
二.伙伴算法是什么?
- 伙伴算法把所有的空闲页框分为11块链表,每块链表分别包含大小为1,2,4,8,16,32,64,128,256,512,和1024个连续页框的页框块。
- 我们可以通过查看<mmzone.h>文件,获取相应的信息
#define MAX_ORDER 11
#define MAX_ORDER_NR_PAGES (1 << (MAX_ORDER -1 ))
伙伴系统在内存中的布局
- 不同的大小的块在不同的链表之间,是不会有重叠的。当一个需求为4个连续页面时候,检查每个结点大小为4页面的块的链表如果其中有空闲的块,分配给用户,不然向