ucos2——之路:动态内存管理

动态内存管理

1.内存控制块

ucos2对内存进行两级管理,即把一个连续的内存管理分为若干个分区,把每个分区又分为若干个大小相等的内存块。操作系统以分区为单位来管理动态内存,而任务以内存块为单位来获得或者释放动态内存,内存分区以及内存块的使用情况由内存控制块来记录。

1.1内存块:ucos2以内存块为单位向应用程序提供动态内存,内存块的大小可由用户定制。

1.2内存分区:大小相等的多个内存块可以组成一个内存分区,内存分区是系统对内存进行管理的基本单位。

1.3内存分区与内存块的定义:在内存中定义一个内存分区及其内存块的方法很简单,只要定义一个二维数组即可。

        例:INT16U IntMemBuf[10][10];    

        上例就定义了一个用来存储INT16U类型数据,有10个内存块,每个内存块长度为10的内存分区。

        需要注意的是,上述例子仅仅是在内存中划分出了内存分区和内存块的区域,并不能达到动态分配的目的。只有把内存控制块和内存分区关联起来,才能真正达到动态分配内存的目的。

2.内存控制块的OS_MEM结构

    ucos2定义了一个叫做内存控制块的结构,用来记录和跟踪每一个分区的状态。

ucos2——之路:动态内存管理_第1张图片

    内存控制块与内存分区的关系

ucos2——之路:动态内存管理_第2张图片

3空内存控制块链表

你可能感兴趣的:(ucos2——之路:动态内存管理)