Newtank

个人站

欢迎来到我的个人站~


存储管理

目录

实模式

μC/OS使用实模式管理内存空间

malloc

malloc和free具有不确定的运行时间,可能会影响实时性。

μC/OS对malloc和free进行改进,使之可以分配和释放固定大小的内存块,从而使其执行时间确定。

一般的malloc和free有以下问题:

  • 在小型嵌入式系统中可能不可用
  • 具体实现较大,占用更多代码空间
  • 通常线程不安全
  • 具有不确定性
  • 会产生内存碎片
  • 会使链接器更复杂

μC/OS采用固定分区的管理方法,把连续的大块内存按分区来管理,每个分区有整数个大小相同的块。应用程序会从不同的内存分区中获取所需大小的块,最后将块放回原来的分区。

内存控制块

内存控制块(MCB)用于管理内存

使用OSMemCreate创建分区,OSMemGet获取内存块,OSMemPut释放内存块。

OSMemGet是非阻塞的,如果需要阻塞则应该配合信号量。