记录一下,操作系统课上老师讲的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即可
标签:Proj4,LiteOS,fit,算法,内存,分配,空闲 From: https://www.cnblogs.com/seamount3/p/17844699.html