- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《嵌入式实时操作系统μCOS原理与实践6》.ppt
嵌入式实时操作系统μC/OS原理与实践 教材 :嵌入式实时操作系统μC/OS原理与实践 电子工业出版社 作者:卢有亮 luyl@ 电子科技大学能源科学与工程学院 第6章 内存管理 6.1 内存管理数据结构 6.1.1内存控制块 6.1.2 内存控制块实体 6.1.3 空闲内存控制块链表 6.1.4 内存分区 6.2 内存控制块初始化 6.3 创建内存分区 6.4内存分区获取 6.5内存分区释放 6.6查询内存分区的状态 6.7内存管理实例 习题 嵌入式系统中,内存资源是十分宝贵的,如果采用内存分区方式不合理,经过一段时间的内存分配和释放、再发配和再释放,会产生很多零散的内存碎块。这些零散的空间很难利用,因此怎样解决内存分配过程中产生的碎块问题是内存管理的关键问题。 μC/OS-II中,采用分区的方式管理内存,即将连续的大块内存按分区来管理,每个系统中有数个这样的分区,每个分区又包含数个小相同的内存块。这样,在分配内存的时候,根据需要从不同的分区中得到数个内存块,而在释放时,这些内存块重新释放回他们原来所在的分区。这样就不会产生内存越分越凌乱,没有整块的连续分区的问题了。 首先,当操作系统需要创建内存分区时,调用OSMemCreate()函数,并通过参数传递需要建立内存分区的属性,包括:内存分区的首地址,内存分区中内存块的数量,内存分区中内存块的大小,以及返回信息代码的地址。 然后,检查判断是否执行函数参数检查,以保证内存分区的创建成功。如果执行函数参数检查,则判断:内存分区地址是否有效,内存分区地址大小是否一致,内存分区是否至少含有两个内存块,每个内存块是否起码可以容纳一个指针。 最后,执行创建内存分区的算法,创建一个内存分区,并返回内存控制块的地址,供系统调用。内存分区创建的算法是:将内存分区首地址加内存块大小得到下一个内存块地址,然后再加内存块大小得到下一个内存块地址,如此循环(内存块数量-1)次,直至最后一个内存块创建完成。在其过程中,通过指针建立内存块的链接表,并将最后一个内存控制块内的指针指向空地址。 习题 1. 论述μC/OS-II的内存管理机制。 2.请说明内存分区的内存控制块MCB的关系。 3. 内存管理使用循环队列管理内存块,请说明使用循环队列管理内存块的优点。 4. MCB空闲链表是在μC/OS-II的什么函数中生成的,画出该函数的流程。 5. OSMemCreate创建内存分区,请问创建内存分区的过程中有没有生成新的内存空间?为什么? 画出创建内存分区的流程。 6.如何获得一个内存分区,在什么情况下不能获得内存分区,如何判断? 7. 为什么要释放内存分区?如何释放一个内存分区,在什么情况下不能释放内存分区,如何判断? 8. 编写任务,任务A实现创建两个有任务分区P1和P2,创建后向任务B发消息,任务B接收到消息后,开始向分区P1中写满1,向分区P2中写满2,然后发消息给任务A,任务A接收到消息后将两个分区的内容打印出来。请上机实践。 * 作者卢有亮 图书PPT和全部代码下载/15441 《嵌入式实时操作系统原理与实践》 * 作者卢有亮 图书PPT和全部代码下载/15441 《嵌入式实时操作系统原理与实践》 6.1 内存管理数据结构 6.1.1内存控制块 6.1.2 内存控制块实体 OS_MEM OSMemTbl[OS_MAX_MEM_PART]; 6.1.3 空闲内存控制块链表 OS_MEM *OSMemFreeList; 6.1.4 内存分区 内存分区与消息队列在一点上相似,就是必须由用户任务来创建。其实定义一个内存分区是相当简单的一件事情,其实就是一个二维数组。 如:INT32U MemBuf[10][20] MemBuf就可以是一个内存分区,该分区共有800个字节,分为10个内存块。使用MCB可以将该分区管理起来,实现动态分配和释放 6.2 内存控制块初始化 OS_MemClr 为了解析OS_MemInit函数,我们先需要了解一个内存清零函数OS_MemClr,该函数用于对指定内存中的数据进行清零操作。OS_MemClr最大只容许清除内存中64K字节的数据。用户不必担心产生清除数据量不满足要求的问题,因为这个功能的应用没有一个能接近这个限制。这个功能在一个时间点只清除1个字节的数据,这是为了在任何处理器上移植该程序时都能对准内存位置。当然,如果确定了处理器类型,可以修改该函数,以提高代码效率。 OS_MemClr两个参数。第一个参数是指向8位无符号整数的指针pdest,表示将要被清零的内存的起始地址。第二个参数是16位的整型size,表示需要清零的内存大小。OS_MemClr这个函数很简单,将从pdest开
您可能关注的文档
最近下载
- 吊篮日常检查记录.doc VIP
- 16S401 管道和设备保温、防结露及电伴热.docx VIP
- 2025年黑龙江、吉林、辽宁、内蒙古高考地理试题评价分析与教学反思理试题评价分析与教学反思.docx
- 2019人教版高中数学A版 必修第2册《第九章 统计》大单元整体教学设计[2020课标].pdf
- 人教版(2024)八年级上册英语Unit 1 Happy Holiday教案.docx
- 建筑装饰设计基础第1章电子课件 .pptx VIP
- 心理健康教学课件:七年级上第1课走进心理健康课.pptx
- 天然气调压器切断阀介绍.ppt VIP
- 对外汉语时间教学.ppt VIP
- 《人造板工艺学》课件 第十三单元 生产工艺设计.ppt VIP
文档评论(0)