内核中很多时候要求分配连续页,而计算机经过长时间的运行以后,频繁的分配和释放内存,就会造成有很多内存虽然空闲可用,但是散布在物理地址空间的各处,这就是内存管理的碎片问题。为了能够快速检测内存中的连续区域,减缓碎片问题,linux内核采用了古老而历经考验的技术:伙伴系统。
如图所示,第一幅图中有2的4次方的一块连续内存,此时,系统将其分为两块大小相等的2的3次方大小的内存,两块内存称为伙伴内存,当需要使用内存时,将其中一块分配使用,如第二幅图所示。而剩下的2的3次方内存会被再次分为两部分,根据内存需要,再进行一分为二,这就是伙伴系统。