当前位置: 首页 > Linux kernrl, 内存管理 > 正文

[原]内存管理器(四) 伙伴算法及分配器原理实现

内存管理器(四) 伙伴算法

前言

上两篇一共介绍了边界标识算法,以及使用边界标识算法实现了一个堆内存的分配器,现在我们学习下另一种内存管理的算法,我们的Linux的内存管理就广泛应用了伙伴算法。非话不多说。

__START

这个算法是什么?

伙伴算法:

伙伴算法(系统)是操作系统中用到的另一种动态存储管理方法。它和边界标识法类似。在用户提出申请时,分配一块恰当的内存区域给用户;反之,在用户释放内存区域的时候收回。不同的是,在伙伴系统中,所有的内存块大小都是以2的整数次幂大小,当然这里立刻暴出一个隐含的问题,就是内存碎片可能会很多。

数据结构(纯算法思想的数据结构,并不实用)

图解分配过程

图解

下面贴上一个分配器原理实现代码

其实伙伴算法的思想简单,但是拘泥于特定的场合,也同意产生内存碎片,所以综合,边界标识法也好,伙伴算法也好,各有优势吧,就像windos ,linux,mac os ; 谁又能下一个结论证明谁更好呢?

作者:zmrlinux 发表于2015/10/17 22:35:29 原文链接
阅读:36 评论:0 查看评论
]]>

本文固定链接: http://zmrlinux.com/2015/10/18/%e5%8e%9f%e5%86%85%e5%ad%98%e7%ae%a1%e7%90%86%e5%99%a8%ef%bc%88%e5%9b%9b%ef%bc%89-%e4%bc%99%e4%bc%b4%e7%ae%97%e6%b3%95%e5%8f%8a%e5%88%86%e9%85%8d%e5%99%a8%e5%8e%9f%e7%90%86%e5%ae%9e%e7%8e%b0/ | Kernel & Me

该日志由 root 于2015年10月18日发表在 Linux kernrl, 内存管理 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: [原]内存管理器(四) 伙伴算法及分配器原理实现 | Kernel & Me