uCOSii内存管理
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