内存管理
看的是alios things 2.1的代码。个人水平有限,只能粗略讲一下alios things的内存管理。如有错误,请指正。
管理算法
alios things内存管理用到2种管理算法:堆管理和小内存优化算法。
堆管理算法使用配置:RHINO_CONFIG_MM_TLF 1
小内存优化算法配置:RHINO_CONFIG_MM_BLK 1
先进行堆管理内存初始化,初始化后的内存可以这样表示:
head | firstblk | midblk | lastblk |
---|
head:头部,保存k_mm_head结构体信息
firstblk:第一个内存块,保存region信息
midblk:中间块,空闲堆。以后申请和释放所使用的内存都是从这里分配出去的。
lastblk:最后一个块,标志region结尾,防止被合并
接着进行小内存算法的初始化,初始化后可以这样表示:
head | firstblk | pool | midblk | lastblk |
---|
pool:指的是总体的小内存。实际上pool就是从midblk中分配出