基于Zephyr v3.4.0内存管理增补说明

Creative Commons
本作品采用知识共享署名

本文对早期写的Zephyr内存管理的文章和最近增补的文章说明

在2020年的时候写了一系列Zephyr内存管理的文章,随着Zephyr的不断进化,一些内存管理方法被废弃和移除,并新加了另外一些内存管理方法,结合最近增补的一些内容,说明公众号文章的失效:

已废弃移除

Pool已从zephyr内移除,完全用Heap取代
Zephyr内存管理之Pool

维持

API/管理算法变化不大
Zephyr内存管理之Heap
Zephyr内存管理之slab

新增

Zephyr内存管理之共享Heap
Zephyr内存管理之Block
Demand Paging 目前用到的芯片不涉及MMU,未对该部分进行分析

对内存分配的影响

ephyr/kernel/mempool.ck_malloc/k_free已经切换成Heap管理
k_malloc调用关系:k_malloc->k_aligned_alloc->z_heap_aligned_alloc->k_heap_aligned_alloc
k_free调用关系:k_free->k_heap_free
使用的heap为

1
2
K_HEAP_DEFINE(_system_heap, CONFIG_HEAP_MEM_POOL_SIZE);
#define _SYSTEM_HEAP (&_system_heap)

参考

https://docs.zephyrproject.org/3.4.0/kernel/memory_management/index.html#