嵌入式操作系统-2.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微内核的优点 小而且简单,容易理解,容易维护 各模块可以独立开发 系统配置灵活方便 微内核的缺点 效率降低 安全降低 — 嵌入式操作系统 嵌入式系统 主要内容 嵌入式操作系统 实时操作系统 微内核与单内核 RTOS的任务调度机制 决定了多任务能力与实时性 通用模式: 调度策略:优先级调度、时间片轮转调度 调度方式:抢占式、不可抢占式、选择可抢占式 时间片:定长时间片与变长时间片 RTOS一般使用抢占式任务调度 时间限定的任务调度算法 速度单调算法 工作由定期任务组织 任务时间定长度 使用频率高的优先级高 时限驱动算法 工作定期与不定期 执行时长随着时间变化 下一个要安排执行的任务是时限最早的任务 存储管理单元(MMU) 实模式 保护模式 Mem管理 中断禁止时间 用户态-中断态 中断延时时间 确认中断-----?中断服务第一语句执行 三部分 Microprocessor 的硬件延时 RTOS由中断将权利交给相关代码的时间 中断禁止时间 可中断式内核 中断发生时;即使运行核心服务也保证一定时间内响应 缩短中断延时时间 任务切换时间 控制权取回 交给另外一任务 两个主要评价实时性的指标: 最大中断禁止时间 任务切换时间 任务 分时系统以进程(线程)为基本单位 RTOS以任务为基本单位 组成: 任务控制块 程序区 数据区 堆栈区 系统堆栈 用户堆栈 任务的状态 运行 就绪 挂起 休眠 任务的同步与通讯 消息 事件 信号量 信箱 共享内存 消息 系统公用数据交换区 私有消息缓冲区 公用消息缓冲池 消息机制 创建 删除 接受消息 发送消息 广播消息 紧急消息 消息可以是定长与不定长 事件 应用于同步,通讯数据量不大 接受事件 发送事件 RTOS一般有15-32个事件 信号量 创建 删除 P操作 V操作 RTOS需要解决优先级倒置问题 优先级倒置问题 条件 高优先级任务H 低优先级任务L 中优先级任务M 共享内存Y,写操作 信号量S,互斥 优先级倒置问题 步骤 1)L取得S(P操作),但是未做V操作 2)H中断,H运行态 3)H写Y,但是Y的S被占用 4)L重新取得控制权 5)M出现,取得控制权 结果: M比H优先 如果不断的M出现,H不能执行 解决方法 1、采用非抢占式任务管理 2、优先级继承 L抢回控制权后,暂时继承H的优先级 (priority inheritance) 设S为正占用着某项共享资源的进程P以及所有正在等待占用这个资源的进程的集合; 找出这个集合中的优先级最高者,其优先级为P’ 把进程P的优先级设置成P’ 优先级封顶(priority ceiling) 设S为所有可能竞争使用某项共享资源的进程的集合。事先为这个集合规定一个优先级上限p’,使得这个集合中所有进程的优先级都小于p’。注意p’并不一定是整个系统中的最好优先级。 在创建保护该项资源的信号量或互斥量时,将p’作为一个参数。 每当有进程通过这个信号量或互斥量取得共享资源时,就将此进程的优先级暂时提高到p’,一直到释放该项资源的时候才恢复其原有的优先级。 可以看出,操作系统的“实时”与否,并不仅仅取决于速度问题,甚至更多的是反应速度和处理时间的可预测性问题。 微内核与单内核 分层模拟 通用计算机需要“大而全”的内核 你不需要,别人可能需要 当局限于某个具体领域时,做些“裁减” 嵌入式系统的用户群以及对功能的要求是相对封闭的 商业上考虑,大而全也不合适 微内核与单内核(续) “裁减”或“系统生成”没有根本上解决问题 将内核中的部分内容移到内核外面,作为服务进程运行。 代表:MACH 把内核中的部分内容移到外面,但不作为独立的进程运行,而是作为让应用程序调用的库函数存在。 fopen与open socket 微内核与单内核(续) 在微内核中保留哪些东西? 进程管理 存储管理 进程间通信 中断响应框架 微内核的优先级倒置问题 有A、B两个应用程序,A的优先级比B高,但是A在睡眠,而B在运行。 B需要进行文件操作,发请求给文件服务进程,自己进入睡眠,等待文件操作完成 本来在睡眠的文件服务进程接受到B的请求后开始为B服务。 此时A因某外部事件而变成就绪。 发生调度时,A与文件服务进程都是就绪状态。文件服务进程由于优先级高而更为优先。可是文件服务进程代表的是B,因此发生优先级倒置。 微内核的优先级倒置问题 以上问题的解决办法是采用“客户驱动优先级”,但是对于LINUX等操作系统,由于是不可剥夺的,因此天生不可解决。 微内核的优先级倒置问题 A B C ,C正在运行 C需要文件操作,发请求给文件服务进程,进入睡眠,等待文件操作完成。 文件服务进程开始为C服务,并将优先级设成与C相同。 此时A被外部时间唤醒,也需

文档评论(0)

186****6410 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档