• 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

  • 相关阅读:
    Java中的几种常用循环 for switch while dowhile
    HTML的各种基本标签
    2017年终总结
    HTML C# ajax结合ashx处理程序实现文件上传
    HTML div鼠标悬停控制子控件显示与隐藏
    HTML 使用CSS 如何去掉文本聚焦框
    HTML input 文本框如何添加提示信息
    CSS 如何通过top left 定位控制div在另一个div的位置
    CSS background 属性
    php支付接口开发-支付宝-开发前期准备
  • 原文地址:https://www.cnblogs.com/hzijone/p/16564702.html
Copyright © 2020-2023  润新知