• mcu内存分配算法


    每个进程堆大小,在32位window上, 进程高位2G留给内核,进程低位2G留给用户, 所以理论上堆大小不超过2G,  LInux, 进程高位堆1G留给内核,3G留给内存, 理论上堆大小不超过3G

    内存分配算法

        1、First Fit (首次适应算法)

              First Fit要求空闲分区链表以地址从小到大的顺序连接。分配内存时,从链表的第一个空闲分区开始查找,将最先能够满足要求的空闲分区分配给进程。  

        2、Next Fit (循环首次适应算法)
               Next Fit由First Fit算法演变而来。分配内存时,从上一次刚分配过的空闲分区的下一个开始查找,直至找到能满足要求的空闲分区

        3、Best Fit (最佳适应算法)

              从所有空闲分区中找出能满足要求的、且大小最小的空闲分区。为了加快查找速度,Best Fit算法会把所有空闲分区按其容量从小到大的顺序链接起来,这样第一次找到的满足大小要求的内存必然是最小的空闲分区。

        4、Worst Fit (最坏适应算法)

             从所有空闲分区中找出能满足要求的、且大小最大的空闲分区。Worst Fit算法按其容量从大到小的顺序链接所有空闲分区。

       5、Two LevelSegregated Fit (TLSF)

              使用两层链表来管理空闲内存,将空闲分区大小进行分类,每一类用一个空闲链表表示,其中的空闲内存大小都在某个特定值或者某个范围内。这样存在多个空闲链表,所以又用一个索引链表来管理这些空闲链表,该表的每一项都对应一种空闲链表,并记录该类空闲链表的表头指针。

      6、Buddysystems(伙伴算法)

           Segregated Fit算法的变种,具有更好的内存拆分和回收合并效率。伙伴算法有很多种类,比如BinaryBuddies,Fibonacci Buddies等。Binary Buddies是最简单也是最流行的一种,将所有空闲分区根据分区的大小进行分类,每一类都是具有相同大小的空闲分区的集合,使用一个空闲双向链表表示。BinaryBuddies中所有的内存分区都是2的幂次方。

    参考链接:https://mp.weixin.qq.com/s?src=11&timestamp=1660004571&ver=3971&signature=1KlPnm4HejE3kYzgn*TSIXKy9se6qxCLf2Vlg74r16ejtfE15HRC581VVTv1CqBofMgiOIw8Kr3b86WPlt97EE80ioMeYQ4IC0z2JCB-FceNFnBOI1RqAwe5fJUK9CFv&new=1

  • 相关阅读:
    js实现延迟加载
    异步处理的方式
    Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
    H-ui出现提交后没办法关闭
    css中zoom:1以及z-index的作用
    【转载】CSS3 常用四个动画(旋转、放大、旋转放大、移动)
    [转]png图片压缩大小但是不改变透明部分
    CSS颜色代码大全
    转载自前端开发:CSS设置滚动条样式
    转:css中overflow:hidden 不起作用了吗?
  • 原文地址:https://www.cnblogs.com/hzijone/p/16564702.html
Copyright © 2020-2023  润新知