FreeRTOS 之五种内存分配方案(概括总结)

一.FreeRTOS 之五种内存分配方案

Heap_1:

      (1).在此方案中,实现了基础版本的pcPortMalloc ,而没有实现vPortFree(),因此它适用于从来不会删除任务的应用

      ( 2) 动态分配的内存总是确定的 ,不会产生内存碎片

                                 

Heap_2:

     该方案不同于方案1,它可以进行任务的删除,对空间进行释放,但是,它不能将相邻的两块相对小的空间进行合并,有可能造成内存碎片的问题,该方案在官方的文档中不推荐使用,它被Heap_4所代替

                   

在图中,可以看出将任务释放之后,会有两块不一样大的空间,这是若创建队列,将可能占据原先的栈空间或TCB空间,再将队列删除之后就有可能将空间再变小,之后若删除队列,那么再次创建任务的时候就不能在原来那里开辟空间了,因此造成了内存碎片

所以该方案只适合于频繁删除,创建相同任务的应用

Heap_3:

在此方案中,pcPortMalloc(),vPortFree() 和原先的Malloc(),free()的区别是,前者保证了是线程安全的

Heap_4:

该方案是Heap_2的增强版,可以对可以合并两块相邻的内存空间,使之变大。

在图中我们可以看到在任务空间释放之后,又创建了队列,随之又创建了用户数据,之后,将队列,用户数据删除之后,又是还原回一块大的内存空间,因此该方案被推荐代替Heap_2

Heap_5:

该方案是对Heap_4,进行再次的增强,将不相邻的代码内存空间进行链接使用,变成更大的内存空间。

 

 

ref:

161204_Mastering_the_FreeRTOS_Real_Time_Kernel-A_Hands-On_Tutorial_Guide

 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_33974167

有价值,请赏瓶水喝

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值