伙伴系统分配算法
在上一节, 我们介绍了Linux内核怎么管理系统中的物理内存....但有时候内核需要分配一些物理内存地址也连续的内存页, 所以Linux使用了 伙伴系统分配算法 来管理系统中的物理内存页....上一节说过, 内核使用 alloc_pages() 函数来分配内存页, 而 alloc_pages() 函数最后会调用 rmqueue() 函数来分配内存页, rmqueue() 函数原型如下:
static...struct page * rmqueue(zone_t *zone, unsigned long order);
参数 zone 是内存管理区, 而 order 是要分配 2order 个内存页...., 如果order为3的空闲链表有空闲内存块, 那么就从order为3的链表中申请一块空闲内存块, 并且把此内存块分裂为2块order为2的内存块, 一块添加到order为2的空闲链表中, 另外一块分配给用户