freertos 内存管理
来源:互联网 发布:铁路 知乎 编辑:程序博客网 时间:2024/06/03 06:16
目前最新版FreeRTOS 自带有5种 pvPortMalloc()与 vPortFree()实现范例
heap_1.c, heap_2.c, heap_3.c, heap_4.c, heap_5.c——这三个文件都放在目录 FreeRTOS\Source\Portable\MemMang 中。
原文解释:
heap_1 - the very simplest, does not permit memory to be freed
heap_2 - permits memory to be freed, but not does coalescence adjacent free blocks.
heap_3 - simply wraps the standard malloc() and free() for thread safety
heap_4 - coalescences adjacent free blocks to avoid fragmentation. Includes absolute address placement option
heap_5 - as per heap_4, with the ability to span the heap across multiple non-adjacent memory areas
Heap_1.c 实现了一个非常基本的 pvPortMalloc()版本,而且没有实现 vPortFree()。
如果应用程序不需要删除任务,队列或者信号量,则具有使用 heap_1 的潜质。Heap_1
总是具有确定性。
Heap_2.c 也是使用了一个由 configTOTAL_HEAP_SIZE 定义大小的简单数组。不同于heap_1 的是, heap_2 采用了一个最佳匹配算法来分配内存,并且支持内存释放。
由于声明了一个静态数组,所以会让整个应用程序看起来耗费了许多内存——即使是在数组没有进行任何实际分配之前。最佳匹配算法保证pvPortMalloc()会使用最接近请求大小的空闲内存块。
Heap_2.c 并不会把相邻的空闲块合并成一个更大的内存块,所以会产生内存碎片——如果分配和释放的总是相同大小的内存块,则内存碎片就不会成为一个问题。
Heap_2.c 适合用于那些重复创建与删除具有相同栈空间任务的应用程序。 Heap_4.c就优化合并了内存碎片问题。
Heap_3.c 简单地调用了标准库函数 malloc()和 free(),但是通过暂时挂起调度器使得函数调用备线程安全特性。
- FreeRTOS内存管理
- FreeRTOS 内存 Heap 管理
- freertos 内存管理
- FreeRtos内存管理
- FreeRTOS 内存管理源码分析
- FreeRTOS笔记:堆内存管理
- 2. FreeRTOS----堆内存管理
- FreeRTOS系列第8篇---FreeRTOS内存管理
- FreeRTOS高级篇7---FreeRTOS内存管理分析
- FreeRTOS系列第8篇---FreeRTOS内存管理
- FreeRTOS高级篇7---FreeRTOS内存管理分析
- heap_2.c详解--------FreeRTOS内存管理
- heap_4.c详解--------FreeRTOS内存管理
- heap_1.c详解--------FreeRTOS内存管理
- heap_3.c详解--------FreeRTOS内存管理
- FreeRTOS代码剖析之1:内存管理Heap_1.c
- FreeRTOS代码剖析之2:内存管理Heap_2.c
- FreeRTOS代码剖析之3:内存管理Heap_3.c
- SVN错误:由于目标机器积极拒绝,无法连接 的解决方法
- codeforces 747D Winter Is Coming
- java.lang.OutOfMemoryError: Java heap space
- leetcode之C#篇1
- Spring AOP原理及拦截器
- freertos 内存管理
- 安卓学习笔记——SQLite
- BI工具选型指标,如何选择好的BI工具
- win8.1下opencv2.4.13+vs2013的配置方法
- C++ primer 十六 继承:is-a关系
- Zurmo(十)之zurmoc命令的作用
- redis的Java客户端jedis池的介绍及使用
- bzoj 1497 NOI2006最大获利
- (eclipse)Failed to create the Java Virtual Machine错误解决