美文网首页
Buddy算法

Buddy算法

作者: DY_Gakki | 来源:发表于2018-12-13 03:14 被阅读0次

Buddy算法的分配原理:

image.png

假如系统需要4(22)个页面大小的内存块,该算法就到free_area[2]中查找,如果链表中有空闲块,就直接从中摘下并分配出去。如果没有,算法将顺着数组向上查找free_area[3],如果free_area[3]中有空闲块,则将其从链表中摘下,分成等大小的两部分,前四个页面作为一个块插入free_area[2],后4个页面分配出去,free_area[3]中也没有,就再向上查找,如果free_area[4]中有,就将这16(2222)个页面等分成两份,前一半挂如free_area[3]的链表头部,后一半的8个页等分成两等分,前一半挂free_area[2]
的链表中,后一半分配出去。假如free_area[4]也没有,则重复上面的过程,知道到达free_area数组的最后,如果还没有则放弃分配。

Buddy算法的释放原理:

image.png

内存的释放是分配的逆过程,也可以看作是伙伴的合并过程。当释放一个块时,先在其对应的链表中考查是否有伙伴存在,如果没有伙伴块,就直接把要释放的块挂入链表头;如果有,则从链表中摘下伙伴,合并成一个大块,然后继续考察合并后的块在更大一级链表中是否有伙伴存在,直到不能合并或者已经合并到了最大的块(222222222个页面)。


作者:orange_os
来源:CSDN
原文:https://blog.csdn.net/orange_os/article/details/7392986
版权声明:本文为博主原创文章,转载请附上博文链接!

https://blog.csdn.net/vanbreaker/article/details/7605367

相关文章

  • Buddy算法

    Buddy算法的分配原理: 假如系统需要4(22)个页面大小的内存块,该算法就到free_area[2]中查找,如...

  • Linux内存管理---伙伴堆算法(1)

    什么是伙伴堆算法 伙伴堆算法(也叫伙伴系统,buddy system)是Linux系统中的一种动态的内存管理算法 ...

  • Linux学习-内存管理篇(四)-内存分配算法

    一、Buddy算法 DMA(Direct Memory Access,直接内存存取)、常规、高端内存这3个区域都采...

  • Linux kernel之二内存管理之连续内存任意长度内存Sla

    1.背景 buddy system 算法分配的物理内存是以page frame 作为基本的管理粒度,这种方式适合处...

  • Buddy,Buddy,还是Buddy

    (本文可能不适合国内教育环境) 对于刚进入学校的低年级孩子,怎样才能让他每天开开心心的愿意上学,可能是一个让很多家...

  • Buddy懵圈记(77)

    (七十七) 羞羞Buddy Buddy喜欢车,怎么和男人一样喜欢这些东西,这是因为Buddy是Boy?...

  • 不可低估了狗狗的智商

    狗狗Buddy很喜欢猫罐头,聪明的Buddy每天猫在桌子上吃罐头的时候,Buddy都会蹲在椅子上等候,如果主人离开...

  • Buddy懵圈记(二二九)

    (二二九)热情过度的Buddy 每次主人下班回家,Buddy都会跳着脚的迎接。周四晚上主人下班回来,Buddy听见...

  • Buddy Training Lesson 1

    课程内容:Clarify buddy 程序的基本概念 Agenda: 1 buddy程序的目标 2 junior ...

  • Buddy

    这几天,经历了一个Week3。回想起过去的3年多将近4年,人生的道路上不乏你的身影。。。 回想...

网友评论

      本文标题:Buddy算法

      本文链接:https://www.haomeiwen.com/subject/iagmhqtx.html