ARM和嵌入式系统设计4.ppt

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

实模式和保护模式是嵌入式操作系统中常见的两个存储管理方式。 1.实模式存储管理 在实模式存储管理方式中,系统不使用MMU; 不划分“系统空间”和“用户空间”,整个系统只有一个地址空间,即物理内存地址空间; 应用程序和系统程序都能直接对所有的内存单元进行随意访问,无须进行地址映射; 操作系统的内核与外围应用程序在编译连接后,两者通常被集成在同一个系统文件中; 系统中的 “任务”或“进程”均是内核线程,只有运行上下文和栈是独享的,其他资源都是共享的。 存储管理的实模式与保护模式 1.实模式存储管理 在实模式存储管理方式中,系统的内存地址空间一般可以分为text、data、bss、堆、栈五个部分。其中: .text(代码段):用来存放操作系统和应用程序的所有代码。 .data(数据段):用来存放操作系统和应用程序当中所有带有初始值的全局变量。 .bss:用来存放操作系统和应用程序当中所有未带初始值的全局变量。 堆:为动态分配的内存空间,在系统运行时,可以通过类似于malloc/free之类的函数来申请或释放一段连续的内存空间。 栈:保存运行上下文以及函数调用时的局部变量和运行参数。 优点:方案简单、存储管理的开销确定,比较适合于规模较小、简单和实时性要求较高的系统。 缺点:没有存储保护、安全性差,在应用程序中出现的任何一个小错误或蓄意攻击都有可能导致整个系统的崩溃。 2.保护模式存储管理 在保护模式存储管理方式中,微处理器必须具有MMU硬件并启用它。 在保护模式存储管理方式中: 系统内核和用户程序有各自独立的地址空间,操作系统和MMU共同完成逻辑地址到物理地址的映射; 每个应用程序只能访问自己的地址空间; 对于共享的内存区域,也必须按照规定的权限规则来访问,具有存储保护功能。 保护模式存储管理方式的安全性和可靠性较好,适合于规模较大、较复杂和实时性要求不太高的系统。 分区存储管理适合在多道程序操作系统中应用。分区存储管理把整个内存划分为系统区和用户区两大区域,然后再把用户区划分为若干个分区,可以同时有多个任务在系统中运行,每个任务都有各自的地址空间。 分区存储管理又可以分为固定分区和可变分区两类。 1.固定分区存储管理:分区的个数、位置和大小一旦确定后,就固定不变,不能再修改了。为了满足不同程序的存储需要,各个分区的大小可以是相等的,也可以是不相等的。 优点:易于实现,系统的开销比较小,空闲空间的管理、内存的分配和回收算法都非常简单。 缺点:1)内存的利用率不高,在任务所占用的分区内部未被利用的空间的碎片(内碎片)会造成很大的浪费;2)分区的总数是固定的,限制了并行执行的程序个数,N个分区最多只能有N个任务在同时运行。 2.可变分区存储管理 各分区不是预先划分好的固定区域,而是系统动态创建的。在系统生成后,操作系统通常放在内存地址的最低端,其余的空间则成为一个完整的大空闲区。在装入一个程序时,系统将根据它的需求和内存空间的使用情况,从这个空闲区当中划出一块来,分配给它,当程序运行结束后会释放所占用的存储区域 与固定分区相比,每个分区都是按需分配的,分区的大小正好等于任务的大小。这样就避免了在固定分区当中由于分区的大小不当所造成的内碎片,从而提高了内存的利用效率。但可变分区存储管理也可能会存在外碎片。所谓的外碎片,就是在各个占用的分区之间,难以利用的一些空闲分区。外碎片通常是一些比较小的空闲分区。 在实现可变分区存储管理技术的时候,需要考虑内存管理的数据结构、内存的分配算法以及内存的回收算法三个方面的问题 分区存储管理 在内存管理的数据结构上,系统会维护一个分区链表,来跟踪记录每一个内存分区的情况,包括该分区的状态(已分配或空闲)、起始地址、长度等信息。 内存的分配算法:当一个新任务来到时,需要为它寻找一个空闲分区,其大小必须大于或等于该任务的要求。 若是大于要求,则将该分区分割成两个小分区,其中一个分区为要求的大小并标记为“占用”,另一个分区为余下部分并标记为“空闲”。 选择分区的先后次序一般是从内存低端到高端。通常的分区分配算法有:最先匹配法(first-fit)、下次匹配法(next-fit)、最佳匹配法( best-fit)和最坏匹配法(worst-fit)。 内存的回收算法:当一个任务运行结束,并释放它所占用的分区后,如果该分区的左右邻居也是空闲分区,则需要将它们合并为一个大的空闲分区。与此相对应,在分区链表上,也要将相应的链接节点进行合并,并对其内容进行更新。 1.物理地址和逻辑地址 (1)物理地址(physical address):也叫内存地址、绝对地址或实地址。 (2)逻辑地址(logical address):也叫相对地址或虚地址。用户的程序经过汇编或编译后

文档评论(0)

骨干 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档