Linux内存分配——伙伴系统
目的:最大限度的降低内存的碎片化。
原理:
1.将内存块分为了11个连续的页框块(1,2,4,8….512,1024),其中每一个页框块中用链表将内存块对应内存大小的块进行链接。
2.若需要一块256大小的内存块,则从对应的256链表中查找空余的内存块,若有则分配。否则查找512等等。
3.若在256中未找到空余内存块,在512中查找到空余的内存块。则将512分成两部分,一部分进行分配,另一部分则插入256链表中。
4.内存的释放过程与分配过程相反。在分配过程中由大块分解而成的小块中没有被分配的块将一直等着被分配的块被释放,从而和其合并。最终相当于没有划分小块。
总结:伙伴系统在分配和释放的过程中执行互逆的过程,其将会极大力度的抵消碎片的产生。