UCOSIII存储管理

1.1、存储管理:

作为一个RTOS操作系统,内存管理是必备的功能,因此UCOSIII也有内存管理能力。通常应用程序可以调用ANSI C编译器的malloc()和free()函数来动态的分配和释放内存,但是在嵌入式事实操作系统中最好不要这么做,多次这样的操作会把原来很大的一块连续存储区域逐渐地分割成许多非常小并且彼此不相邻的存储区域,这就是存储碎片。

UCOSIII中提供了一种替代malloc()和free()函数的方法,UCOSIII中将存储空间分成区和块,每个存储区有数量不等大小相同的存储块,在一个系统中可以有多个存储区。一般存储区是固定的,在程序中可以用数组来表示一个存储区,比如u8 buffer[20][10],就表示一个拥有20个存储块,每个存储块10个字节的存储区。

1.2、存储控制块:

UCOSIII中用存储控制块来表示存储区,存储控制块为OS_MEM。

struct os_mem {

OS_OBJ_TYPE          Type;

void                  *AddrPtr;

CPU_CHAR            *NamePtr;

void                  *FreeListPtr;

OS_MEM_SIZE          BlkSize;

OS_MEM_QTY          NbrMax;

OS_MEM_QTY          NbrFree;

#if OS_CFG_DBG_EN > 0u

    OS_MEM          *DbgPrevPtr;

    OS_MEM          *DbgNextPtr;

#endif

};

创建好的存储区如下图

2.1、存储管理相关API函数:

OSMemCreate()   创建一个存储分区

OSMemGet()     从存储分区中获得一个存储块

OSMemPut()     将一个存储块归还到存储分区中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值