buddy内存分配算法浅析
来源:互联网 发布:pc端护眼软件 编辑:程序博客网 时间:2024/05/01 03:43
因为今天遇到这个问题,所以上网搜了下,看了觉得还是很有用处,便写了这篇博文。
buddy内存分配算法技术是一种内存分配算法,将内存划分分区,试图以适当地满足内存请求。buddy内存分配算法是比较容易实行。它支持有限,高效的分裂和内存块的合并。目的是为了解决内存的外碎片。
避免外碎片的方法有两种
1,利用分页单元把一组非连续的空闲页框映射到非连续的线性地址区间。
2,开发适当的技术来记录现存的空闲连续页框块的情况,以尽量避免为满足对小块的请求而把大块的空闲块进行分割。
这里给出伙伴的概念,满足以下三个条件的称为伙伴:
1)两个块大小相同;
2)两个块地址连续;
3)两个块必须是同一个大块中分离出来的
当存储请求时如下发生了什么:
如果内存要分配
1.寻找一个合适的大小(最小2的存储器插槽ķ块是大于或等于所请求的存储器的)
1.如果它被找到,它被分配给该程序
2.如果不是,它试图使一个合适的存储器插槽。该系统这样做尝试以下:
1.拆分一个免费的内存插槽比请求存储器大小成半较大
2.如果达到了下限值时,则分配的存储器的量
3.回到步骤1(找一个合适大小的内存插槽)
4.直到一个合适的内存插槽中发现重复此过程
1.空闲内存块
2.看相邻块 - 它是免费的吗?
3.如果是,将二者结合起来,并回到步骤2,重复这个过程既达到上限,直到(所有内存被释放),或直到遇到一个非自由相邻块
实施和效率
但是,仍然存在内部碎片的问题,因为请求的内存比小块稍大,但比一大块小了就有很多内存浪费 。因为伙伴存储器分配技术的工作方式,请求的存储器66K将被分配128K,这导致的存储器62K浪费的程序。这个问题可以通过解决板坯分配,其可以在更粗的好友分配器的顶部分层,以提供更精细的分配。
在Linux内核还使用好友系统,以进一步修改,以尽量减少外部碎片,以及其他各种分配器来管理模块中的存储器。
0 0
- buddy内存分配算法浅析
- buddy内存分配算法
- 内存分配的buddy算法
- 内存管理简介之Buddy算法和slab分配
- 内存管理简介之Buddy算法和slab分配
- 内存管理算法--Buddy伙伴算法
- 内存管理算法--Buddy伙伴算法
- 内存管理算法--Buddy伙伴算法
- 内存管理算法--Buddy伙伴算法
- Java实现模拟伙伴系统(Buddy system)内存分配
- 浅析linux内核内存管理之buddy system
- 浅析linux内核内存管理之buddy system
- 浅析linux内核内存管理之buddy system
- 浅析linux内核内存管理之buddy system
- buddy算法
- Buddy算法
- .NET内存分配浅析
- .NET内存分配浅析
- 【HDU】-4514-湫湫系列故事——设计风景线(树的直径&&并查集)
- java.sql.SQLException: ORA-02290: 违反检查约束条件 (GZSYJ_MH.SYS_C0019581)
- HDU 4514 湫湫系列故事——设计风景线(连通分支,树的直径,并查集,环的判断)
- POJ 3616 Milking Time
- 高性能 CSS3 动画
- buddy内存分配算法浅析
- POJ 1742 Coins
- Android 面试总结
- HDU 1281 棋盘游戏-二分匹配
- Java正则表达式Matcher.group(int group)相关类解析
- POJ3181 Dollar Dayz
- 二叉树
- POJ 2253 Frogger
- POJ2993&&POJ2996