作者小头像 Lv.1
12 成长值

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据
个人勋章
TA还没获得勋章~
成长雷达
0
12
0
0
0

个人资料

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据

达成规则

发布时间 2020/07/23 22:03:52 最后回复 星辰27 2020/07/24 10:25:52 版块 IoT物联网
1749 3 0
发布时间 2020/07/22 23:13:49 最后回复 北工大小霸王 2020/07/23 14:43:19 版块 IoT物联网
1249 3 0
他的回复:
同学你要注意审题呀》他问的是动态分配,不是匹配算法动态内存管理,即在内存资源充足的情况下,从系统配置的一块比较大的连续内存(内存池),根据用户需求,分配任意大小的内存块。当用户不需要该内存块时,又可以释放回系统供下一次使用。与静态内存相比,动态内存管理的好处是按需分配,缺点是内存池中容易出现碎片。LiteOS动态内存支持DLINK和BEST LITTLE两种标准算法。、2.BEST LITTLELiteOS的动态内存分配支持最佳适配算法,即BEST LITTLE,每次分配时选择内存池中最小最适合的内存块进行分配。LiteOS动态内存管理在最佳适配算法的基础上加入了SLAB机制,用于分配固定大小的内存块,进而减小产生内存碎片的可能性。LiteOS内存管理中的SLAB机制支持可配置的SLAB CLASS数目及每个CLASS的最大空间,现以SLAB CLASS数目为4,每个CLASS的最大空间为512字节为例说明SLAB机制。在内存池**有4个SLAB CLASS,每个SLAB CLASS的总共可分配大小为512字节,第一个SLAB CLASS被分为32个16字节的SLAB块,第二个SLAB CLASS被分为16个32字节的SLAB块,第三个SLAB CLASS被分为8个64字节的SLAB块,第四个SLAB CLASS被分为4个128字节的SLAB块。这4个SLAB CLASS是从内存池中按照最佳适配算法分配出来的。初始化内存管理时,首先初始化内存池,然后在初始化后的内存池中按照最佳适配算法申请4个SLAB CLASS,再逐个按照SLAB内存管理机制初始化4个SLAB CLASS。每次申请内存时,先在满足申请大小的最佳SLAB CLASS中申请,(比如用户申请20字节内存,就在SLAB块大小为32字节的SLAB CLASS中申请),如果申请成功,就将SLAB内存块整块返回给用户,释放时整块回收。如果满足条件的SLAB CLASS中已无可以分配的内存块,则继续向内存池按照最佳适配算法申请。需要注意的是,如果当前的SLAB CLASS中无可用SLAB块了,则直接向内存池申请,而不会继续向有着更大SLAB块空间的SLAB CLASS申请。释放内存时,先检查释放的内存块是否属于SLAB CLASS,如果是SLAB CLASS的内存块,则还回对应的SLAB CLASS中,否则还回内存池中。可以参考华为社区的链接::https://support.huaweicloud.com/kernelmanual-LiteOS/zh-cn_topic_0145350130.html