实模式
μC/OS使用实模式管理内存空间
malloc
malloc和free具有不确定的运行时间,可能会影响实时性。
μC/OS对malloc和free进行改进,使之可以分配和释放固定大小的内存块,从而使其执行时间确定。
一般的malloc和free有以下问题:
- 在小型嵌入式系统中可能不可用
- 具体实现较大,占用更多代码空间
- 通常线程不安全
- 具有不确定性
- 会产生内存碎片
- 会使链接器更复杂
μC/OS采用固定分区的管理方法,把连续的大块内存按分区来管理,每个分区有整数个大小相同的块。应用程序会从不同的内存分区中获取所需大小的块,最后将块放回原来的分区。
内存控制块
内存控制块(MCB)用于管理内存
使用OSMemCreate创建分区,OSMemGet获取内存块,OSMemPut释放内存块。
OSMemGet是非阻塞的,如果需要阻塞则应该配合信号量。