网上能够找到的关于Linux内存分配伙伴算法的介绍不是很多,而且大多是进行较为抽象的介绍。为了能够让初学者能够快速建立起伙伴算法中提及的空闲链表、位图与内存间的对应关系,我做了以下几张图片,希望能够给初学者带来帮助。需要指出的是,我在本文中未对相关图示做更多的解释,请初学者参照网上的理论介绍理解其中的含义。
为了举例方便,我假定最大块为2G,最小块为256M(比较夸张,只是为了便于说明问题)。
初始状态,如图1-1所示。
图1-1 初始状态
分配512M内存,如图2-1,2-2所示。
图2-1 分配512M内存第一步
图2-2 分配512M内存第二步
分配256M内存,如图3-1所示。
图3-1 分配256M内存
回收算法与分配算法相逆,本文旨在向初学者介绍空闲链表、位图与内存的对应关系,故不再做其它操作的介绍。