当前位置: 首页 > wzjs >正文

西宁做网站seo品牌价值

西宁做网站seo,品牌价值,快速搭建网站的好处,网页特效 网页素材的网站背景 接上篇blog 41、【OS】【Nuttx】【OSTest】内存监控:堆空间申请 分析了堆空间的申请,下面分析堆管理器如何初始化申请后的堆空间 用户堆空间初始化 回到 umm_initialize 函数,之前 blog 40、【OS】【Nuttx】【OSTest】内存监控&#…

背景

接上篇blog
41、【OS】【Nuttx】【OSTest】内存监控:堆空间申请
分析了堆空间的申请,下面分析堆管理器如何初始化申请后的堆空间

用户堆空间初始化

回到 umm_initialize 函数,之前 blog 40、【OS】【Nuttx】【OSTest】内存监控:用户堆内存函数 介绍过其相关一些概念
在这里插入图片描述
mm_initialize_pool 只看 mm_initialize 即可,因为 这里 init 指针传的空指针
在这里插入图片描述
根据申请的内存区域初始化堆结构
在这里插入图片描述
堆结构如下所示,主要由3部分组成:堆管理器(mm_heap_s 类型),守卫节点(mm_heapstart,mm_heapend),实际分配节点(mm_allocnode_s 类型)
在这里插入图片描述

mm_heap_s

堆管理器的头部信息如下
在这里插入图片描述

  • mm_lock:互斥锁,用来控制对堆的访问,确保在多线程环境下堆的操作是线程安全的
  • mm_heapsize:堆的总大小,记录堆的最大容量
  • mm_maxused:曾经使用过的最大内存,帮助了解堆的峰值情况
  • mm_curused:已使用内存,反映了当前时刻堆的实际占用情况
  • mm_heapstart:守卫节点,防止堆溢出,指向第一个节点,标志堆开始
  • mm_heapend:守卫节点,防止堆溢出,指向最后一个节点,标志堆结束
  • mm_nodelist:当前未被使用的内存块,数组中的元素提供了不同的入口点,以加速查找空闲内存块的过程,注意,这里 MM_NNODES 表示的是不同大小类别的数量,维护的是不同尺寸内存块类型的总数,不是空闲节点总数
  • mm_delaylist:延迟释放列表,由于某些原因不能立即释放内存的节点会被暂时存储在该列表中
    mm_nodelist 维护内存块如下图所示
    在这里插入图片描述

如图,mm_initialize 主要为 mm_heap_s 上下文初始化,比较简单,下面主要来分看看 mm_addregion
在这里插入图片描述

mm_addregion

如定义描述,region 是堆里面的连续的内存区域,由守卫节点和实际分配节点组成,在某些场景下,一个堆里面可以有多个 region,这里只分析对应一个 region 的情况
在这里插入图片描述
在这里插入图片描述
这里面比较有意思的一点,在这里 heapbase 对齐的时候额外加了俩节点的空间
在这里插入图片描述
改动可以追溯到2022年8月份的提交
在这里插入图片描述
可以看到在2022年前,这里还只是对 heapstart 对齐,并没有额外俩节点的操作,如果这里注释没看懂,继续往前追溯
在这里插入图片描述
在早些时间 2022 年5月,有过一次提交,但后面回退了,并有了 8 月份那次提交
在这里插入图片描述
可以看出,5月份的提交想对 heapbase 做好字节对齐
在嵌入式系统中,字节对齐是非常重要的概念,涉及到数据结构如何在内存中布局以及处理器如何访问这些数据:

  • 当数据按照总线宽度进行对齐时,处理器可以更高效地进行读写操作。比如对于一个32位的整数,在32位系统上对其存储意味着它的起始地址是4的倍数。这样,处理器可以在一次总线处理中完成对该整数的读写操作。如果不按对齐方式存储,可能需要两次或更多次的总线处理来完成同样的操作,降低效率
  • 某些 ARM 处理器要求32位数据的起始地址必须是4的倍数。如果数据没有正确对齐,会触发硬件异常,如 HardFault
    在这里插入图片描述
    这里 SIZEOF_MM_ALLOCNODE 为 mm_allocnode_s 的数据类型大小,从其定义可以看出这里实现了字节对齐。但为了实现 MM_MIN_CHUNK 对齐,可以看到 W 兄尝试将 SIZEOF_MM_ALLOCNODE 替换成 MM_MIN_CHUNK
    在这里插入图片描述
    但这样不是最佳的办法,因为首先 MM_MIN_CHUNK 是需要对齐最小的 2 的幂,假设 mm_allocnode_s 数据类型的大小为 257 字节,那么就需要对齐到 512 字节,这里面有最大 49% 的字节是浪费掉去做对齐的
    在这里插入图片描述
    而且,这样做只能对齐到 heapstart,无法覆盖到给用户分配数据的区域,此时用户拿到的数据仍可能是非字节对齐的,如下所示
    在这里插入图片描述

为了解决该问题,8月份该 MR被回退了,并提供了新的解决方案,此时也不再使用 MM_MIN_CHUNK 进行字节对齐,并将MM字节对齐的区域覆盖到分配给用户的地址,相较之前确实是个 better solution,不过这里描述有点问题,不是进行的 MM_MIN_CHUNK 对齐,而是 MM_ALIGN_UP 对齐
在这里插入图片描述

改动也可以看出这里非 MM_MIN_CHUNK 对齐,而是 MM_ALIGN_UP,这样不会浪费空间

在这里插入图片描述
示意图如下
在这里插入图片描述

http://www.dtcms.com/wzjs/564595.html

相关文章:

  • 邯郸市住房和城建设局网站怎样将wordpress导出
  • 网站建设报告模板园林景观设计公司有丙级吗
  • 温州微网站公司创建一个网站要钱吗
  • 网站建设四川wordpress大改动
  • 抖音代运营案例阿里巴巴怎么优化关键词排名
  • 在线工具网站深圳网站建设优化排名
  • 武义公司网站建设wordpress怎么去掉谷歌字体
  • 石家庄网站seo企业网站建设的公司有哪些
  • 永康住房和城乡建设局网站wordpress digg主题
  • 国外网站 国内做镜像网站首页做几个关键词
  • 网站怎么做下拉刷新页面数据腾讯企点下载
  • 中国建设银行官网站诚聘英才大连三丰建设集团公司网站
  • 网站开发流程进度表苏州制作网站哪家好
  • 商城网站建站程序photoshop要钱吗
  • 饮食中心网站建设方案八闽视频app下载
  • 微魔方建站长春招聘会最新招聘时间
  • 做传销网站违法的吗做雕塑网站
  • 网站价格大连网站建设哪家公司好
  • 百度怎么做网站广告做鞋子皮革有什么网站
  • 网站建设管理情况关键词排名优化顾问
  • 精美网站欣赏怎么用手机做抖音上最火的表白网站
  • 织梦移动端网站怎么做做一小说网站要花多钱
  • 河南省建设教育协会网站首页搭建网页游戏服务器
  • 深圳专业商城网站制作公司网站基础代码html
  • 江苏公众科技网站建设外海网站如何做网站的推广
  • 动感网站模板wordpress go
  • 国外网站如何建设html网页设计简单代码
  • 电脑制作网站教程国内哪家网站做的系统纯净
  • 产品推广的重要性seo关键词排名软件流量词
  • 云畅网站建设网址企业网站建设分析