一、伙伴系统buddy

Linux系统是以块来分配物理内存的,0,1,2,3.....MAX_ORDER-1。MAX_ORDER=11,总共有11个链表,存放的是n阶的页块。

分配和释放都是以页块为单位进行的。

伙伴系统:

1、两个n阶页块互为伙伴。

2、页块的第一个物理页面的阶数必须是n的整数倍。

3、

alloc_page

alloc_zero_page

alloc_dma_page

__get_free_page

__get_free_pages

----------->alloc_pages--->alloc_pages_node_mask-->alloc_page_from_freelist

alloc_page_slowpath

二、slab分配

三、kmalloc

四、vmalloc

五、kmap

六、快速路径和慢速路径