buddy system介绍
buddy system是一种内存管理方法,它使得分配正确大小的内存块以及相邻内存合并都可以更快速地进行。(用普通的算法对free的内存按大小排序并分配是很快的,但是内存合并非常的复杂。)buddy system主要使用的是基于2的幂运算,而这也正是计算机所擅长的。
buddy system具体实现
在buddy system中,分配器只分配特定大小的内存块,并且有许多的free list,每一个对应一个特定大小。这些特定的大小通常都是2的幂数,或者是一个斐波那契序列,使得任意一个内存块(不包括最小size的)都可以被分为两个更小的特点大小内存块。
当分配器从内存收到一个请求,它会循环处理请求的size,直到找到最符合需求的某个特定的size,并返回这个size的free list中第一个内存块。如果这个size的free list是空的,分配器会把更大的内存块分裂为几个该size的内存块,并将其中一个返回,把剩下的加入到该size的free list中。
当内存块被回收时,也可能会把相邻的内存块合并为一个更大size的内存块。为了更易实现,free list会按照地址顺序对内存块进行存储。buddy system的最大优势就是合并非常方便。