因为今天遇到这个问题,所以上网搜了下,看了觉得还是很有用处,便写了这篇博文。
buddy内存分配算法技术是一种内存分配算法,将内存划分分区,试图以适当地满足内存请求。buddy内存分配算法是比较容易实行。它支持有限,高效的分裂和内存块的合并。目的是为了解决内存的外碎片。
避免外碎片的方法有两种
1,利用分页单元把一组非连续的空闲页框映射到非连续的线性地址区间。
2,开发适当的技术来记录现存的空闲连续页框块的情况,以尽量避免为满足对小块的请求而把大块的空闲块进行分割。
这里给出伙伴的概念,满足以下三个条件的称为伙伴:
1)两个块大小相同;
2)两个块地址连续;
3)两个块必须是同一个大块中分离出来的
当存储请求时如下发生了什么:
如果内存要分配
1.寻找一个合适的大小(最小2的存储器插槽ķ块是大于或等于所请求的存储器的)
1.如果它被找到,它被分配给该程序
2.如果不是,它试图使一个合适的存储器插槽。该系统这样做尝试以下:
1.拆分一个免费的内存插槽比请求存储器大小成半较大
2.如果达到了下限值时,则分配的存储器的量

本文介绍了Buddy内存分配算法的基本原理,包括如何通过划分内存块来满足内存请求,以及如何通过合并空闲块来避免内存碎片。文章还讨论了算法的实现细节及其在Linux内核中的应用。
最低0.47元/天 解锁文章
3958

被折叠的 条评论
为什么被折叠?



