内存管理之buddy system

Buddy System是一种内存管理方法,利用2的幂运算快速分配和合并内存块。它维护多个特定大小的free list,当分配内存时,通过分裂大块内存满足需求,并在回收时合并相邻内存。虽然可能导致内部碎片,但通过调整支持的内存大小可以优化性能。
摘要由CSDN通过智能技术生成
buddy system介绍

buddy system是一种内存管理方法,它使得分配正确大小的内存块以及相邻内存合并都可以更快速地进行。(用普通的算法对free的内存按大小排序并分配是很快的,但是内存合并非常的复杂。)buddy system主要使用的是基于2的幂运算,而这也正是计算机所擅长的。

buddy system具体实现

在buddy system中,分配器只分配特定大小的内存块,并且有许多的free list,每一个对应一个特定大小。这些特定的大小通常都是2的幂数,或者是一个斐波那契序列,使得任意一个内存块(不包括最小size的)都可以被分为两个更小的特点大小内存块。

当分配器从内存收到一个请求,它会循环处理请求的size,直到找到最符合需求的某个特定的size,并返回这个size的free list中第一个内存块。如果这个size的free list是空的,分配器会把更大的内存块分裂为几个该size的内存块,并将其中一个返回,把剩下的加入到该size的free list中。

当内存块被回收时,也可能会把相邻的内存块合并为一个更大size的内存块。为了更易实现,free list会按照地址顺序对内存块进行存储。buddy system的最大优势就是合并非常方便。

分配内存实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值