genalloc

转载自  https://www.douban.com/group/topic/47566535/?refer=related

 

内核的genalloc是给一些需要自己维护内存分配的内核模块使用的,如SRAM, TCM, Shared-memory等。它提供了最先适配 fist-fit和最佳匹配 best-fit两种分配算法。 

first-fit 和 best-fit 
这两种都是通过Bitmap来标记内存中每个分配单元的状态,空闲或已分配。 最先分配是将第一个可容纳请求大小的的连续空闲空间分配出去。 最佳分配是将可容纳请求大小的的最小连续空闲空间分配出去。 假设某片内存被划分为10个最小单 元,这两种分配方法演示如下: 

Operation First-fit Best-fit 
Initial state ➀➁➂➃➄➅➆➇➈➉ ➀➁➂➃➄➅➆➇➈➉ 
A: alloc(4) ➊➋➌➍➄➅➆➇➈➉ ➊➋➌➍➄➅➆➇➈➉ 
B: alloc(1) ➊➋➌➍➎➅➆➇➈➉ ➊➋➌➍➎➅➆➇➈➉ 
C: alloc(2) ➊➋➌➍➎➏➐➇➈➉ ➊➋➌➍➎➏➐➇➈➉ 
D: free(A) ➀➁➂➃➎➏➐➇➈➉ ➀➁➂➃➎➏➐➇➈➉ 
E: alloc(2) ➊➋➂➃➎➏➐➇➈➉ ➀➁➂➃➎➏➐➑➒➉ 
F: alloc(4) failed ➊➋➌➍➎➏➐➑➒➉ 
可以看出,这两种方法都会容易产生内存碎片,但Best-fit比First-fit要好一些,当然 这是以牺牲分配速度为代价的。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值