MTK 手机用的操作系统是 nucleus, 这是一个rtfs(实时操作系统),这个rtfs本身是不带内存管理功能,所以MTK自己写的内存管理。
(nucleus在系统初始化完毕时,会调用Application_Initialize,参数就是可使用内存的起始地址)
大体上来分,MTK内存可以分为3种:
- control buffer
平常使用的OslMalloc就是这个内存。
这个内存内部实现是按块来划分的(pool),具体的配置可以custom_config.c 文件里的custom_config_ctrl_buff_info()里看到
里面的size 指定了这个块的大小,no_of_buff 指定了有多少个这样的块。
按块来管理内存,可以有效地控制内存的碎片,管理也相对简单,可能会造成内存的一些浪费
对于手机这种需要长时间运行不重起的设备来说,还是很有必要的。