首页 > 试题广场 >

简述Linux内存分配--伙伴系统原理

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

总结:伙伴系统在分配和释放的过程中执行互逆的过程,其将会极大力度的抵消碎片的产生。
发表于 2015-07-28 10:42:39 回复(0)
伙伴系统,其思想是:把内存块分成不同的组(1,2,4,8,16,32....);分配内存时找到能够满足条件 的最小的块;如果找不到,就找大的块,然后一分为2,分配一块,留一块;回收时:如果有相邻的同样大小的块,则合并
发表于 2015-05-05 14:47:19 回复(0)