嵌入式系统及应用.ppt

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统及应用.ppt

嵌入式系统及应用 第八章 内存管理 主要内容 概述 内存管理机制 内存保护 概述 不同实时内核所采用的内存管理方式不同,有的简单,有的复杂。 实时内核所采用的内存管理方式与应用领域和硬件环境密切相关。 在强实时应用领域,内存管理方法就比较简单,甚至不提供内存管理功能。 一些实时性要求不高,可靠性要求比较高,且系统比较复杂的应用在内存管理上就相对复杂些,可能需要实现对操作系统或是任务的保护。 概述 嵌入式实时操作系统在内存管理方面需要考虑如下因素: 不使用内存管理:最快速和最确定的内存管理方式,适用于那些小型的嵌入式系统,系统中的任务比较少,且数量固定。 通常的操作系统都至少具有基本的内存管理方法:提供内存分配与释放的系统调用。 概述 虚拟存储技术: 为用户提供一种不受物理存储器结构和容量限制的存储管理技术,是桌面/服务器操作系统为在所有任务中使用有限物理内存的通常方法,每个任务从内存中获得一定数量的页面,并且,当前不访问的页面将被置换出去,为需要页面的其他任务腾出空间。 置换是一种具有不确定性的操作:当任务需要使用当前被置换出去的页面中的代码和数据时,将不得不从磁盘中获取页面,而在内存中另外的页面又可能不得不需要先被置换出去。 在嵌入式实时操作系统中一般不使用虚拟存储技术,以避免页面置换所带来的开销。 概述 平面内存模式: 应用程序和系统程序能够对整个内存空间进行访问。 平面内存模式比较简单,易于管理,性能也比较高。 适合于程序简单、代码量小和实时性要求比较高的领域。 内存保护: 应用比较复杂、程序量比较大的情况; 防止应用程序破坏操作系统或是其他应用程序的代码和数据。 概述 内存保护包含两个方面的内容: 防止地址越界:每个应用程序都有自己独立的地址空间,当应用程序要访问某个内存单元时,由硬件检查该地址是否在限定的地址空间之内,只有在限定地址空间之内的内存单元访问才是合法的,否则需要进行地址越界处理; 防止操作越权:对于允许多个应用程序共享的存储区域,每个应用程序都有自己的访问权限,如果一个应用程序对共享区域的访问违反了权限规定,则进行操作越权处理。 内存管理机制 静态分配 系统在启动前,所有的任务都获得了所需要的所有内存,运行过程中将不会有新的内存请求。 在强实时系统中,减少内存分配在时间上可能带来的不确定性。 不需要操作系统进行专门的内存管理操作。 系统使用内存的效率比较低下,只适合于那些强实时,且应用比较简单,任务数量可以静态确定的系统。 内存管理机制 动态分配 堆(heap):应用通过分配(malloc)与释放(free)操作来使用内存。 堆会带来碎片: 内存被逐渐划分为位于已被使用区域之间的越来越小的空闲区域。 垃圾回收: 对内存堆进行重新排列,把碎片组织成为大的连续可用内存空间。但垃圾回收的时间长短不确定:不适合于处理实时应用。 在实时系统中,避免内存碎片的出现,而不是在出现内存碎片时进行回收。 内存管理机制 常用管理方式: 固定大小存储区: 在指定边界的一块地址连续的内存空间中,实现固定大小内存块的分配。 可变大小存储区: 在指定边界的一块地址连续的内存空间中,实现可变大小内存块的分配。 应用根据需要从固定大小存储区或者可变大小存储区中获得一块内存空间,用完后将该内存空间释放回相应的存储区。 固定大小存储区管理 可供使用的一段连续的内存空间被称为是一个分区; 分区由大小固定的内存块构成,且分区的大小是内存块大小的整数倍数。 固定大小存储区管理 分区的操作 创建分区 删除分区 从分区得到内存块 把内存块释放到分区 获取分区ID 获取当前创建的分区的数量 获取当前所有分区的ID 获取分区信息 固定大小存储区管理 如果内存块处于空闲状态,将使用内存块中的几个字节作为控制结构,用来存放用于双向链接的前向指针和后向指针。 在使用内存块时,内存块中原有的控制信息不再有效,其中的所有存储空间都可以被使用。 固定大小存储区管理的系统开销对用户的影响为零。 由于内存块的大小固定,不存在碎片的问题。 可变大小存储区管理 可变大小存储区管理为基于堆的管理方式。 堆为一段连续的、大小可配置的内存空间,用来提供可变内存块的分配。 可变内存块称为段,最小分配单位称为页,即段的大小是页的大小的整数倍。 如果申请段的大小不是页的倍数,实时内核将会对段的大小进行调整,调整为页的倍数。 例如,从页大小为256个字节的堆中分配一个大小为350字节的段,实时内核实际分配的段大小为512个字节。 可变大小存储区管理 可变大小存储区中的空闲段通过双向链表链接起来,形成一个空闲段链。 在创建堆时,只有一个空闲段,其大小为整个存储区的大小减去控制结构的内存开销。 从存储区中分配段时,可依据首次适应算法,查看空闲链

文档评论(0)

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

1亿VIP精品文档

相关文档