硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3368|回复: 2
收起左侧

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

[复制链接]

6

主题

16

回帖

34

积分

新手上路

积分
34
发表于 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, 下载次数: 110) TLSF-2.4.6.tbz2 (23.62 KB, 下载次数: 65) tlsf-master.zip (12.16 KB, 下载次数: 97)


评分

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

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2019-3-6 09:55:12 | 显示全部楼层
非常感谢楼主分享,我也学习下
回复

使用道具 举报

36

主题

2040

回帖

2148

积分

至尊会员

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

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 23:10 , Processed in 0.247857 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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