搜索
bottom↓
回复: 33

我来发点技术资料——TLSF内存分配算法,适合RTOS使用

  [复制链接]

出0入0汤圆

发表于 2013-8-1 17:29:21 | 显示全部楼层 |阅读模式
本帖最后由 xivisi 于 2013-8-1 17:30 编辑

哎,技术到了一定程度,想要问问题什么感觉太难等到回答了,自己发点技术资料

刚一搜  百科居然没有;
换维基 只有一个外部链接
还是自己打字吧

话说这个算法出来很久了,资料不算广泛啊,用的人不多?

TLSF——Two Level Segregated Fit

优势是用两个位图优化合适内存的查找,实现时间复杂度为常数的内存分配,非常适合在实时系统中使用。

两组位图  都是索引空闲Area  组成位图矩阵,该位图矩阵表明后面的FreeArea链表是否有项



通过这个图应该知道搜索策略了吧:根据请求分配的尺寸计算位图矩阵中的位置,根据那个为是否有效来决定从对应FreeArea链表中查找相,还是从更大FreeArea中进行切分。

详细外文资料:包含详细解说和性能测试,官方似乎有也有代码发布,我自己做了一个32bit系统的c++实现

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-8-1 17:44:38 | 显示全部楼层
嵌入式RTOS对动态分配内存一直支持很弱,最常见的做法是静态分配好内存组,然后在组中动态分配给请求的任务。如果有人研究研究这个的话,或许能超过很多RTOS的动态内存分配机制

出0入0汤圆

 楼主| 发表于 2013-8-1 17:47:08 | 显示全部楼层
fastweb 发表于 2013-8-1 17:44
嵌入式RTOS对动态分配内存一直支持很弱,最常见的做法是静态分配好内存组,然后在组中动态分配给请求的任务 ...

感觉这个算法很不错了   内存浪费比伙伴算法低,效率没差多少

出0入0汤圆

发表于 2013-8-1 17:50:47 | 显示全部楼层
高手呀,学习了,多谢

出0入0汤圆

发表于 2013-8-1 20:21:13 | 显示全部楼层
我一般使用bget就是TI提供的库里的,在MCU上简单实用!

出0入0汤圆

发表于 2013-8-1 20:26:06 | 显示全部楼层
看到LZ发的贴子:咨询一个适用RTOS的平台无关MMU页分配算法
目前市场上有这么多的RTOS,为何还要自己写!
这做有何意义?

出0入0汤圆

发表于 2013-8-3 13:19:29 | 显示全部楼层
很不一样的思路,MARK

出0入0汤圆

发表于 2013-8-3 20:29:29 | 显示全部楼层
期望到达的境界。

出0入0汤圆

 楼主| 发表于 2013-8-6 14:56:53 | 显示全部楼层
electrlife 发表于 2013-8-1 20:26
看到LZ发的贴子:咨询一个适用RTOS的平台无关MMU页分配算法
目前市场上有这么多的RTOS,为何还要自己写!
...

或许与个人定位不同吧,比如有的人喜欢做界面,让别人看到华丽的界面感觉舒心,有的人喜欢做图像处理,或者视频之类的

出0入0汤圆

发表于 2013-8-12 15:01:57 | 显示全部楼层
在嵌入式系统中,从不用动态分配,ce除外

出0入0汤圆

发表于 2013-8-12 15:30:38 | 显示全部楼层
用bget实现

出0入0汤圆

发表于 2013-8-12 17:34:52 | 显示全部楼层
嵌入式中动态分配内存还是比较少,呵呵

出0入0汤圆

发表于 2013-8-13 22:48:06 来自手机 | 显示全部楼层
mark……
顶一个…

出0入0汤圆

发表于 2013-8-13 22:57:59 | 显示全部楼层
这么好的算法竟然才这么几个顶,我加一个
伙伴算法据说不适合小内存块分配,不知这个怎么样,有空研究一下

出0入0汤圆

 楼主| 发表于 2013-8-15 14:49:31 | 显示全部楼层
本帖最后由 xivisi 于 2013-8-15 14:55 编辑
SNOOKER 发表于 2013-8-13 22:57
这么好的算法竟然才这么几个顶,我加一个
伙伴算法据说不适合小内存块分配,不知这个怎么样,有空研究一下 ...


伙伴算法 不适合的原因是 内存的有效使用率比较低   这个算法结合dlmalloc和伙伴算法  降低了内存浪费  提高了 dlmalloc的搜索速度 减少碎片

缺点是  初始占内存

出0入0汤圆

发表于 2014-4-1 21:46:21 | 显示全部楼层
好东西啊!!!正好要用在自己的系统上

出0入0汤圆

发表于 2014-4-1 21:46:42 | 显示全部楼层
好东西啊!!!正好要用在自己的系统上

出0入0汤圆

发表于 2014-4-1 21:47:51 | 显示全部楼层
支持!!!!!!好东西

出0入0汤圆

发表于 2014-4-1 21:57:06 | 显示全部楼层
再来顶帖一次

出0入0汤圆

发表于 2014-4-16 14:54:21 | 显示全部楼层
   顶一下

出0入0汤圆

发表于 2014-4-17 12:41:54 | 显示全部楼层
虽然看不懂还是顶一下

出0入0汤圆

发表于 2014-4-21 18:05:31 | 显示全部楼层
我做过实现,也测试过,挺好。TLSF是05年一个欧洲的大嵌入软件项目(务虚的大学项目,现已结束)里的一个子项目,由几个西班牙学生设计。主要优点在于:以不大的代价提供了确定的实时性。如果对实时性要求没那么高,倒也没必要用它。

出0入0汤圆

发表于 2014-5-9 15:27:15 | 显示全部楼层
LIx2NG 发表于 2014-4-21 18:05
我做过实现,也测试过,挺好。TLSF是05年一个欧洲的大嵌入软件项目(务虚的大学项目,现已结束)里的一个子 ...

能否发一些测试代码上来

出0入0汤圆

发表于 2014-12-8 15:39:55 | 显示全部楼层
electrlife 发表于 2013-8-1 20:21
我一般使用bget就是TI提供的库里的,在MCU上简单实用!

请问bget适合RAM为8-20KRAM 的M0/M3吗

出0入0汤圆

发表于 2014-12-8 20:17:39 | 显示全部楼层
黄晨0410 发表于 2014-12-8 15:39
请问bget适合RAM为8-20KRAM 的M0/M3吗

非常适合。

出0入0汤圆

发表于 2014-12-9 09:16:19 | 显示全部楼层

发现与  TI CC2540 开发板内的OSAL 架构内的内存块理很像,特别是分配空间与释放空间算法。

出0入0汤圆

发表于 2014-12-10 09:01:38 | 显示全部楼层

在网上下了一个版本的bget 不知是不是最新的

帮看一下,我这二天在分析代码。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-12-10 21:50:09 | 显示全部楼层
黄晨0410 发表于 2014-12-10 09:01
在网上下了一个版本的bget 不知是不是最新的

帮看一下,我这二天在分析代码。

是的,你需要把里面的函数定义改成c89标准,其它不需要动。

出0入0汤圆

发表于 2016-5-20 23:29:48 | 显示全部楼层
最近来了解内存分配管理,这资料估计楼主也收集了挺久的吧?还有更多的吗?

出0入0汤圆

发表于 2016-6-23 11:14:13 | 显示全部楼层
我想知道,这种内存分配在带mmu的ic上能使用吗?

出0入0汤圆

 楼主| 发表于 2016-6-23 18:43:32 | 显示全部楼层
ALUMEI 发表于 2016-6-23 11:14
我想知道,这种内存分配在带mmu的ic上能使用吗?

可以,不过你需要自己做MMU的内存段页分配(或者一刀切平坦式布局)

出0入0汤圆

发表于 2016-6-24 10:13:21 | 显示全部楼层
xivisi 发表于 2016-6-23 18:43
可以,不过你需要自己做MMU的内存段页分配(或者一刀切平坦式布局)

前两天有看资料,得出结论:tlsf比较试用于ram较小的ic

出0入0汤圆

 楼主| 发表于 2016-6-24 10:32:32 | 显示全部楼层
ALUMEI 发表于 2016-6-24 10:13
前两天有看资料,得出结论:tlsf比较试用于ram较小的ic

并不, 反而适合稍微大点(32位系统,几K内存的,真心不合适,或者改低位位图)的内存到大内存(4GB均可)。  优势在于与伙伴算法相当的合适堆的快速查找,与dlmalloc差不多的内存组织, 并且有效内存使用率不会太低。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 05:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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