请选择 进入手机版 | 继续访问电脑版

安富莱电子论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 342|回复: 2
收起左侧

[其它] 分享一个实时系统动态内存算法TLSF

[复制链接]

5

主题

19

帖子

29

积分

新手上路

积分
29
发表于 2019-3-6 09:09:37 | 显示全部楼层 |阅读模式
无意中在网上发现的,看起来还不错。
网址:http://www.gii.upv.es/tlsf/

TLSF适用环境
实时系统RTOS对内存分配算法有以下两个要求:

内存分配/释放的执行时间可预期,可接受的。由于RTOS对指令的执行时间有严格要求,所以常常采用静态内存分配的方法,以获得一个可以预期的执行时间。
内存分配算法的碎片化程度要低,这是由于RTOS往往长时间执行,碎片化程度高会导致内存分配失败。
TLSF算法的目标运行系统是:

可信的执行环境,Trusted Environment,应用不会故意破坏数据或者窃取数据。
有限的物理内存。
没有物理MMU来支持虚拟内存。
为了在这样的环境下运行,TLSF算法使用了如下的策略:

Immediate coalescing,立即合并,当内存块被释放后,立即与相邻的空闲内存块合并,以获得一个更大的空闲块,插入到链表的相应位置。这样可以减少碎片化。
Splitting threshold,分割阈值,最小可分配的内存块大小为16字节,应用一般不会分配一些基本的数据结构,如int、char等。限定最小可分配大小为16字节,这样可以在空闲的内存块中存储一些管理信息。
Good-fit strategy,TLSF会尽可能的返回一个最小的、能够满足需求的内存块。
Same strategy for all block sizes,对于不同大小的内存请求,TLSF只有一个分配策略,实现相对简单,执行时间可以预期。相应的dlmalloc根据所请求的内存大小不同,有多达4种内存分配策略。
Memory is not cleaned-up,分配个应用的内存没有被清0.
TLSF的特点在于:

可以预期的分配执行时间,无论对于多达的内存分配请求,TLSF可以在限定的时间内完成分配。
碎片化程度低。

ecrts04_tlsf.pdf (153.19 KB, 下载次数: 46)

评分

参与人数 1金币 +50 收起 理由
eric2013 + 50 赞一个!

查看全部评分

回复

使用道具 举报

5677

主题

3万

帖子

4万

积分

管理员

做人第一,工作第二

Rank: 9Rank: 9Rank: 9

积分
45712
QQ
发表于 2019-3-6 09:55:12 | 显示全部楼层
非常感谢楼主分享,我也学习下
淘宝小店: https://armfly.taobao.com/
专注,努力,用心的做好每一件事情,Fighting!
回复

使用道具 举报

25

主题

1342

帖子

1392

积分

至尊会员

积分
1392
发表于 2019-3-6 10:52:07 | 显示全部楼层
楼主这个不错,晚上回去研究研究
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|安富莱电子论坛 ( 鄂ICP备09023347号,公安机关备案号42010602000201 )

GMT+8, 2019-5-26 21:34 , Processed in 0.174637 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表