[UC/OS-II原理及应用]动态内存管理
2016-10-02 23:08
260 查看
第七章 动态内存管理
7.1 内存控制块
μC/OS-Ⅱ对内存进行两级管理,即把一个连续的内存空间分为若干各分区,每个分区分为若干个大小相等的内存块。操作系统以分区为单位来管理动态内存,而任务以内存块为单位来获取和释放动态内存。
7.1.1 可动态分配内存划分
1. 内存块
μC/OS-Ⅱ以内存块为单位向应用程序提供动态内存。内存块的大小由用户定制。
2. 内存分区
大小相等的多个内存块可以组成一个内存分区。内存分区是系统对内存进行管理的基本单位。
3. 内存分区与内存块的定义
INT16U IntMemBuf[10][10]; 有10个内存块,每个内存块长度为10的内存分区。
7.1.2 内存控制块OS_MEM的结构
内存控制块(OS_MEM):记录和跟踪每一个内存分区的状态。
7.1.3 空内存控制块链表
在μC/OS-Ⅱ初始化时,会调用内存控制块的初始化函数OS_MemInit()定义并初始化一个空内存控制块链表。
7.2 动态内存的管理
7.2.1 创建动态内存分区OSMemCreate()
OS_MEM * OSMemCreate(void *addr,INT32U nblks, INT32U blksize, INT8U *err);
注:分区的内存块至少有两块;每个内存块的空间至少能存放一个指针。
7.2.2 请求获得一个内存块OSMemGet()
void * OSMemGet(OS_MEM *pmem,INT8U *err);
在调用函数OSMemGet()时,应该事先知道该分区中内存块的大小,并且在使用时不能超过该内存长度。
7.2.3 释放一个内存块OSMemPut()
INT8U OSMemPut(OS_MEM *pmem, void*pblk);
在调用OSMemPut()函数的一个内存块时,一定要确保把该内存块释放到它原来所属的内存分区中。
7.2.4 查询一个内存分区的状态OSMemQuery()
INT8UOSMemQuery(OS_MEM *pmem, OS_MEM_DATA *pdata);
7.1 内存控制块
μC/OS-Ⅱ对内存进行两级管理,即把一个连续的内存空间分为若干各分区,每个分区分为若干个大小相等的内存块。操作系统以分区为单位来管理动态内存,而任务以内存块为单位来获取和释放动态内存。
7.1.1 可动态分配内存划分
1. 内存块
μC/OS-Ⅱ以内存块为单位向应用程序提供动态内存。内存块的大小由用户定制。
2. 内存分区
大小相等的多个内存块可以组成一个内存分区。内存分区是系统对内存进行管理的基本单位。
3. 内存分区与内存块的定义
INT16U IntMemBuf[10][10]; 有10个内存块,每个内存块长度为10的内存分区。
7.1.2 内存控制块OS_MEM的结构
内存控制块(OS_MEM):记录和跟踪每一个内存分区的状态。
7.1.3 空内存控制块链表
在μC/OS-Ⅱ初始化时,会调用内存控制块的初始化函数OS_MemInit()定义并初始化一个空内存控制块链表。
7.2 动态内存的管理
7.2.1 创建动态内存分区OSMemCreate()
OS_MEM * OSMemCreate(void *addr,INT32U nblks, INT32U blksize, INT8U *err);
注:分区的内存块至少有两块;每个内存块的空间至少能存放一个指针。
7.2.2 请求获得一个内存块OSMemGet()
void * OSMemGet(OS_MEM *pmem,INT8U *err);
在调用函数OSMemGet()时,应该事先知道该分区中内存块的大小,并且在使用时不能超过该内存长度。
7.2.3 释放一个内存块OSMemPut()
INT8U OSMemPut(OS_MEM *pmem, void*pblk);
在调用OSMemPut()函数的一个内存块时,一定要确保把该内存块释放到它原来所属的内存分区中。
7.2.4 查询一个内存分区的状态OSMemQuery()
INT8UOSMemQuery(OS_MEM *pmem, OS_MEM_DATA *pdata);
相关文章推荐
- [UC/OS-II原理及应用]动态内存管理
- [uC/OS-II原理及应用]信号量集
- [uC/OS-II原理及应用]UC/OS-II中的任务
- [uC/OS-II原理及应用]嵌入式实时操作系统的基本概念
- [UC/OS-II原理及应用]在ARM7上移植μC/OS-Ⅱ
- [UC/OS-II原理及应用]μC/OS-Ⅱ可裁剪性的实现
- [uC/OS-II原理及应用]uC/OS-II的中断和时钟
- [uC/OS-II原理及应用]任务的同步与通信
- [UC/OS-II原理及应用]在51单片机上移植μC/OS-Ⅱ
- [UC/OS-II原理及应用]在ARM7上移植μC/OS-Ⅱ
- [UC/OS-II原理及应用]μC/OS-Ⅱ在80x86上的移植
- [UC/OS-II原理及应用]在51单片机上移植μC/OS-Ⅱ
- [uC/OS-II原理及应用]信号量集
- uc/OS II移植中软件中断的理解与应用
- 嵌入式实时操作系统μC/OS-||原理及应用学习6----动态内存管理
- uc/os-ii中用户应用系统编写的模式
- STM32F4应用笔记(六)UCGUI+uC/OS-II+支持触摸屏——触屏计算器
- 每天进步一点点------SOPC的uC/OS-II应用(一)
- uC/OS-II中OSUnMapTbl[]的原理
- uC/OS-II内核架构解析(7)---uC/OS-II应用开发