Memomory Management.pptVIP

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Memomory Management.ppt

* 内存管理,谁来管理? 系统中有flash、sdram,RTOS和应用编译成可执行影像后,占用了哪些flash和sdram,管理剩余的部分 2. 实时嵌入式系统中的内存管理:内存管理的内容;特点;管理策略; 3. UC/OS-II是如何进行内存管理的 * * 宿主机系统、目标机嵌入式系统 我们的目标是开发在目标板上面运行的软家,但是….。必须在借助于主机进行开发.. 则宿主机系统需提供软件:交叉编译器、连接器、源代码级的符号调试器 两个系统之间的连接: 类型; 用来下载程序映象; 用来传输调试信息 程序包括:系统软件、RTOS、应用代码,是如何编译、链接成一个可执行映象的呢? * 链接器:将多个目标文件组合成一个更大的重定位目标文件、一个共享目标文件、或一个最终可执行映象 链接过程: 符号消解 - 确定外部符号在哪个或哪些目标文件中定义;外部符号在静态库中定义时,从库中复制目标文件并复制到映象中 符号重定位:映射符号到其定义; * * 但是在实时嵌入式操作系统里面没有类似windows的函数,编译后的各段在内存中是如何分布的呢?我们从映象文件从目标机上的运行谈起! * 讲了这么多和RTOS的内存管理有什么关系? * 实时嵌入式操作系统的堆在哪里? 用什么样的策略来管理?一定是堆吗?可以先静态分配,然后再动态管理 * * 内部碎片/外部碎片 * 一个内核堵塞分配函数用一个计数式信号灯和一个互斥信号灯锁实现。 多个任务可以访问内存池的空闲块列表,每次发那配和回收时要改变内存池链表结构,而其是共享资源,所以用互斥信号灯锁户进行维护;内存块的获取和释放都从列表的开头进行 分配过程:一个任务在具体分配空闲块时,要先获取计数式信号灯,如果小于0则挂起,直到有空闲块产生或超时; 如果大于0,则表明有空闲块可分配,把计数式信号灯减1,先保留该空闲块块的使用权,然后再去获取缓冲池 的操作权(到链表获取一个空闲块),如果此时互斥锁关闭,则另外一个任务正从内存池提取内存块或者向内存池 释放内存块,该任务只好挂起。当互斥锁打开后,内核通知该任务,该任务则获取该锁,并从内存池中获取一个 空闲块。 注:此时获取的可能已不再是先前“占位” 的那一个空闲块 * * 思考题:TCB的OSTCBStat状态、OSTCBDly、OSTCBDelReq的重要作用; 深入理解时钟节拍服务函数的作用:对于delay;对于delay且suspend;对于pend+定时; 结合OSTimeDlyResume()函数去理解 * 静态分配 与 动态分配 的比较(2) 仅仅采用静态分配, 使系统失去了灵活性, 必须在设计阶段就预先知道所需要的内存并对之作出分配;必须在设计阶段就预先考虑到所有可能的情况,因为一旦出现没有考虑到的情况,正在运行的系统就无法处理。 这样的分配方案必然导致很大的浪费,因为内存分配必须按照最坏情况进行最大的配置, 而实际运行时很可能只使用其中的一小部分;而且在硬件平台不变的情况下, 不可能灵活地为系统添加功能, 从而使得系统的升级变得困难。 * 静态分配 与 动态分配 的比较(3) 虽然动态内存分配会导致响应和执行时间不确定、内存碎片等问题, 但是它的实现机制灵活, 给程序实现带来极大的方便。 * 静态分配 与 动态分配 的比较(4) 大多数的系统是硬实时和软实时的综合。系统中的一部分任务有严格的时限要求, 而另一部分只是要求完成得越快越好 按照RMS(Rate Monotonous Scheduling)理论, 这样的系统必须采用抢先式任务调度;而在这样的系统中, 就可以采用动态内存分配来满足部分对可靠性和实时性要求不高的任务。 采用动态内存分配的最大好处就是给设计者很大的灵活性, 可以方便地将原来运行于非嵌入式操作系统的程序移植到嵌入式系统中 * 内存分配函数的分类 永久堵塞内存分配函数 时限堵塞内存分配函数 永不堵塞内存分配函数 * 实现阻塞内存分配函数的必要性 实现阻塞分配内存函数的必要性 许多嵌入式系统中,任务竞争有限的可使用内存,通常内存耗尽只是暂时的现象。对某些任务,如果调用malloc函数内存分配失败(malloc不允许阻塞),该任务则必须重新调用malloc函数申请内存分配,这是耗时的操作。如果,把malloc定义成允许延时分配的函数(即可延时一段时间等待空闲内存的产生),则任务可以选择等待内存变成可用的,而不是整个失败或回溯 例子: 以太网上网络收发,由于接受任务经常接收突发到达的数据包而使用了大量的内存。发送任务申请内存时可使用堵塞分配函数 * 堵塞内存分配函数的

文档评论(0)

caijie1982 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档