一、伙伴系统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
六、快速路径和慢速路径