uCOSii内存管理

HarderHeng Lv5

uCOS内存管理思路

uCOS的内存管理非常简单,有5个连接在一起的partition,这5个partition又分别连接着一系列的size固定,个数确定的block。

也就是说每一个partition只能有一个size,能够使用的内存大小就只有这五种。

好处是内存分配是常数时间,而且是很快的常数时间。在5个partition中遍历一下找到适合的size,直接取对应的freelist即可。

坏处就是内存分配非常的不灵活,只有固定大小的内存块。

OS_MemInit

初始化OSMemTbl,存储5个partition的基本信息,将五个partition串联起来。

OSMemCreate

将给定的内存地址addr,内存块大小size,内存块数量n,配置给一个空的partition,讲这些信息写入到partition的头信息中,并且将partition设为已经配置完成。

OSMemGet

给定一个指向partition的指针,在这里面直接取freelist的第一个。

OSMemPut

给定指向内存块的地址,和它的partition,将这个内存区域放到freelist中。

  • Title: uCOSii内存管理
  • Author: HarderHeng
  • Created at : 2025-03-05 15:47:43
  • Updated at : 2025-03-05 16:12:59
  • Link: https://harderheng.life/2025/03/05/uCOSii内存管理/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments