- 1、本文档共68页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MOCOR平台内存管理介绍及案例分析 MOCOR平台内存管理介绍 MOCOR内存管理的基本架构 ThreadX的内存管理 MOCOR的内存管理 MOCOR内存bug实例分析 MOCOR内存管理的基本架构 一般的嵌入式系统中最基本的内存管理方案有两种——静态分配和动态分配。 静态分配是指在编译或链接时将程序所需的内存空间分配好。采用这种分配方案的内存段,其大小一般在编译时就能够确定。静态分配比较简单,一般不需要特殊的管理。 动态分配是指系统运行时根据需要动态地分配内存,为实现动态分配,系统里需要有一套完善的管理机制。本文中所指的内存管理,就是指动态分配内存的管理。 MOCOR内存管理的基本架构 MOCOR内存管理体系的一个大致的调用层次如下图所示: MOCOR内存管理的基本架构 从可用的内存资源的角度,还可以得到下面的一个内存分配图。 MOCOR平台内存管理介绍 MOCOR内存管理的基本架构 ThreadX的内存管理 MOCOR的内存管理 MOCOR内存bug实例分析 ThreadX的内存管理 内存字节池(BTYE POOL) 内存块池(BLOCK POOL) ThreadX的内存管理 内存字节池(BTYE POOL) ThreadX的内存管理---内存字节池 1.基本概念: 内存字节池是一个连续的内存块。在字节池中,内存的分配以字节为单位,任意大小的内存都可以在字节池上分配(受限于内存的容量)。 内存字节池类似于C语言里的堆(heap),所以,字节池我们也可以把它叫做字节堆,代码里我们也可以看到创建的字节池通常以heap来命名。但与一般意义上的堆的不同在于,ThreadX里的字节池可以有多个,MOCOR平台也是利用了这一特性,根据不同的需求而创建了多个heap。 每一个字节池都有一个相应的字节池控制块,通常是一个全局结构。控制块包括对内存池的定义和状态,比如内存池的名字,可用的字节数等。该结构的定义如下: ThreadX的内存管理---内存字节池 ThreadX的内存管理---内存字节池 2.分配方式: 从字节池中分配内存类似于C语言的malloc调用,该调用返回所需内存的数量(以字节为单位)。分配的原则是“首次符合”原则,就是说,当第一个空闲内存块的大小满足需求时,就从该内存块分配内存,然后将该内存块的剩余内存转换成一个新块。字节池在初始状态下,只有一个空闲块,以后随着随着分配的进行,内存块会随之增多。 除了上述的分配原则之外,字节池里还定义了一个值BYTE_POOL_SLIP_SIZE。这是在代码里实现指定的一个具体数值,在分配内存时,如果要分配的内存大小大于这一数值,则从字节池的底部开始分配。采用这种分配方式是为了减少内存碎片的产生,尽量把大内存的分配区域和小内存的分配区域分开。目前系统里定义的BYTE_POOL_SLIP_SIZE为80K。 ThreadX的内存管理---内存字节池 3.内存布局: 以一个分配了两次的字节池为例,在内存中的情况如下: ThreadX的内存管理---内存字节池 注意: 首先要注意的问题是碎片,一个字节池可能有2000字节的可用空间,但不保证一定能分配到2000字节的连续空间,内存池对连续字节的数量不做保证。 分配一块内存所需要的时间跟分配内存的大小,字节池中的碎片数等因素有关,如果字节池有2000字节的空闲块,花多长时间找到这块内存也是没有保证的。因此,在时间要求苛刻的任务中应避免使用字节池。 字节池不能在中断函数里使用,也不能在timer回调函数里使用。 ThreadX的内存管理---内存字节池 思考: 假定系统中有一个内存字节池,并且已经从中分配了几次内存。当内存池中还有500字节的剩余内存时,应用程序申请200字节的内存,在什么情况下,这样的申请不能满足? ThreadX的内存管理 内存块池(BLOCK POOL) ThreadX的内存管理---内存块池 1.基本概念: 内存块池也是一个连续的字节块,但它是由一定数量的固定szie的内存块组成的。因此,从一个内存块池中分配出的内存总是固定大小的。 相比字节池,内存块池的两个主要优势是: 没有碎片。因为内存块池是固定size的块构成,所以没有碎片的产生。 分配和释放的速度很快。所需的时间相当于简单的链表操作,分配时不需要有哪些信誉好的足球投注网站整个内存块列表,它总是使用链表头部的内存块来分配。 内存块池的主要缺点是缺乏灵活性。固定尺寸既是它的优点也是它的缺点。如果一个内存块池的尺寸足够大,可以满足用户最极限的内存分配需求,那么,这个内存块池上分配许多不同尺寸的内存会导致严重的内存浪费。一种解决办法是同时创建几个不同的内存块池,每个内存块池分别容纳不同尺寸
您可能关注的文档
- IBM项目管理案例分析.ppt
- HTML语言与网页设计.ppt
- icon风格案例分析.ppt
- imore项目营销案例分享.ppt
- InDesign排版设计案例教程.ppt
- ICU管道护理及滑脱的处理.ppt
- InDesign版式设计案例教程.ppt
- INGE及案例介绍2016.ppt
- IPMPC级案例分析模板:山西移动网络信息管理系统开发案例.ppt
- IPMP案例分析模板.ppt
- 三农村养老服务管理手册.doc
- 工程量清单计价216混凝土墙清单计算规则79课件讲解.ppt
- 2025年沪教牛津版英语五年级上册 Module 2测试卷含答案及单元整理.pdf
- 高一数学培优函数的应用——零点与函数模型-讲义(学生版).pdf
- 甘肃省天水市名校2023年八年级数学第一学期期末调研模拟试题含解析.doc
- 2025版高考历史二轮复习专题限时集训13当今世界政治经济格局的演变.doc
- 2025年河北省廊坊市霸州市杨芬港镇陈家堡村(社区工作人员)自考复习100题模拟考试含答案.pdf
- 专题05受力分析与共点力平衡——重难点.docx
- 2024秋高中地理第一章宇宙中的地球第三节地球的运动第3课时地球公转的地理意义练习含解析中图版必修1.doc
- 2024届湖北省孝感市孝昌县八年级数学第一学期期末复习检测试题含解析.doc
最近下载
- 广汽集团公司2010年度财报.pdf
- HEIDENHAIN海德汉TNC640 (34059x-10) Cycle Programming用户手册.pdf
- 2024年机电安装工程行业分析报告及未来五到十年行业发展趋势报告.docx
- 2022年长春市朝阳区工会系统招聘考试试题及答案解析.docx VIP
- 《大数据架构与设计》实践报告-网易云音乐大数据系统构建.docx VIP
- 仓储物流园及配套基础设施项目可行性研究报告-立项备案.doc VIP
- 城乡环卫保洁投标方案.doc
- 2022年1月吉林省长春市工会系统招聘考试《工会基础知识》试卷及答案.pdf VIP
- 2023年上海海洋大学计算机科学与技术专业《计算机网络》科目期末试卷A(有答案).docx VIP
- [高清书籍]威尼斯商人.PDF
文档评论(0)