CMA的核心并不是设计精巧的算法来管理地址连续的内存块,实际上它的底层还是依赖内核伙伴系统这样的内存管理机制,或者说CMA是处于需要连续内存块的其他内核模块和内存管理模块之间的一个中间层模块,主要功能包括:
1、解析DTS或者命令行中的参数,确定CMA内存的区域,这样的区域我们定义为CMA area。
2、提供cma_alloc和cma_release两个接口函数用于分配和释放CMA pages
3、记录和跟踪CMA area中各个pages的状态
4、调用伙伴系统接口,进行真正的内存分配。
匿名回答于2023-10-08 15:23:59