小熊派华为物联网操作系统LiteOS内核教程06-内存管理
1. LiteOS内核的内存管理 1.1. 内存管理 在系统运行的过程中,一些内存空间 大小是不确定的 ,比如一些数据缓冲区,所以系统需要提供内存空间的管理能力,用户可以在使用的时候申请需要的内存空间,使用完毕释放该空间,以便再次利用。 Huawei LiteOS 的内存管理模块通过对内存的申请/释放操作,来管理用户和OS对内存的使用,使内存的利用率和使用效率达到最优,同时最大限度地解决系统的内存碎片问题。 1.2. 动态内存管理 动态内存管理,即在内存资源充足的情况下,从系统配置的一块比较大的连续内存(内存池),根据用户需求,分配任意大小的内存块。当用户不需要该内存块时,又可以释放回系统供下一次使用。 与静态内存相比,动态内存管理的好处是按需分配,缺点是内存池中容易出现碎片 。 LiteOS动态内存支持 DLINK 和 BEST LITTLE 两种标准算法。 1.2.1. DLINK 动态内存管理算法 DLINK动态内存管理结构如下图所示: 第一部分 堆内存(也称内存池)的起始地址及堆区域总大小。 第二部分 本身是一个数组,每个元素是一个双向链表,所有free节点的控制头都会被分类挂在这个数组的双向链表中。 第三部分 占用内存池极大部分的空间,是 用于存放各节点的实际区域 。 1.2.2. BEST LITTLE 算法(重点) LiteOS 的动态内存分配支持最佳适配算法,即