Proj4:改进LiteOS中物理内存分配算法

发布时间 2023-11-20 19:46:38作者: 海山了-

记录一下,操作系统课上老师讲的proj4做法

给的参考资料

LiteOS中的物理内存分配采用了TLSF算法,该算法较好地解决了最坏情况执行时间不确定(not bounded)或者复杂度过高(bounded with a too important bound"),以及碎片化问题(fragmentation)两个问题。
TLSF算法仍存在优化空间,Best-fit策略最主要的问题还在于第三步,仍然需要检索对应范围的那一条空闲块链表,存在潜在的时间复杂度。Good-fit思路与Best-fit不同之处在于,Good-fit并不保证找到满足需求的最小空闲块,而是尽可能接近要分配的大小。
以搜索大小为69字节的空闲块为例,Good-fit并不是找到[68 ~ 70]这一范围,而是比这个范围稍微大一点儿的范围(例如[71 ~ 73])。这样设计的好处就是[71 ~ 73]对应的空闲块链中每一块都能满足需求,不需要检索空闲块链表找到最小的,而是直接取空闲块链中第一块即可。整体上还不会造成太多碎片。
Good-fit分配策略将动态内存的分配与回收时间复杂度都降到了O(1)时间复杂度,并且保证系统运行时不会产生过多碎片。
相关理论参考LiteOS内存管理:TLSF算法 - 简书 (jianshu.com)
也可以向LiteOS中添加一个内存分配算法,参考三种内存分配算法总结及代码实现_内存分配算法的实现-CSDN博客

给的做法思路

找到对应TLSF算法对应的使用地方,在其对应的Best-fit的代码块,直接+1即可