嵌入式着操作系统概述.ppt

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

一、嵌入式操作系统概述 二、嵌入式操作系统基本概念 三、嵌入式实时操作系统?C/OS 一、嵌入式操作系统概述 概述 嵌入式操作系统的演变 嵌入式操作系统的分类 嵌入式操作系统的体系结构 嵌入式操作系统的组成 嵌入式操作系统的关键设计因素 二、嵌入式操作系统基本概念 前台与后台 多任务,任务优先级,调度 非占先式与占先式,可重入型函数 信号量,死锁,同步,事件标志 任务间通信,消息邮箱,消息队列 中断 前后台系统(1/2) 代码的临界区(2/2) 代码的临界区也称为临界区,指处理时不可分割的代码。一旦这部分代码开始执行,则不允许任何中断打入。 在进入临界区之前要关中断,而临界区代码执行完以后要立即开中断(在任务切换时,地址、指令、数据等寄存器堆栈保护)。 多任务(1/6) 任务的状态(2/6) 系统内核与调度(3/6) 多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通信。 调度(Scheduler)是内核的主要职责之一,就是要决定该轮到哪个任务运行了。多数实时内核是基于优先级调度法的。每个任务根据其重要程度的不同被赋予一定的优先级。基于优先级的调度法指,CPU总是让处在就绪态的优先级最高的任务先运行。 任务优先级(4/6) 静态优先级 应用程序执行过程中诸任务优先级不变,则称之为静态优先级。在静态优先级系统中,诸任务以及它们的时间约束在程序编译时是已知的。 动态优先级 应用程序执行过程中,任务的优先级是可变的,则称之为动态优先级。实时内核应当避免出现优先级反转问题。 优先级反转(5/6) 优先级反转的解决方法(6/6) 非占先式与占先式(1/7) 非占先式(non-preemptive) 非占先式调度法也称作合作型多任务(cooperative multitasking),各个任务彼此合作共享一个CPU。 异步事件还是由中断服务来处理。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。 非占先式内核的一个优点是响应中断快;其另一个优点是几乎不需要使用信号量保护共享数据。运行着的任务占有CPU,而不必担心被别的任务抢占。 非占先式内核的最大缺陷在于其响应高优先级的任务慢,任务已经进入就绪态,但还不能运行,也许要等很长时间,直到当前运行着的任务释放CPU。内核的任务级响应时间是不确定的,不知道什么时候最高优先级的任务才能拿到CPU的控制权,完全取决于应用程序什么时候释放CPU。 当系统响应时间很重要时,要使用占先式(preemptive)内核。最高优先级的任务一旦就绪,总能得到CPU的控制权。 当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。 使用占先式内核时,应用程序不应直接使用不可重入型函数。如果调入可重入型函数时,低优先级的任务CPU的使用权被高优先级任务剥夺,不可重入型函数中的数据有可能被破坏。 可重入型函数例(6/7) 信号量(Semaphore)(1/3) 信号量实际上是一种约定机制,在多任务内核中普遍使用。信号量就像一把钥匙,任务要运行下去,需先拿到这把钥匙。信号量用于: 控制共享资源的使用权(满足互斥条件) 标志某事件的发生 使两个任务的行为同步 信号与信号量在英文中都叫做Semaphore,并不加以区分,而说它有两种类型,二进制型(binary)和计数器型(counting) 二进制信号量(2/3) 计数式信号量(3/3) 任务间的通讯(1/4) 全程变量或共享内存 邮箱或消息队列 全程变量(2/4) 用全程变量时,必须保证每个任务或中断服务程序独享该变量。 中断服务中保证独享的唯一办法是关中断。 如果两个任务共享某变量,各任务实现独享该变量的办法可以是关中断再开中断,或使用信号量 消息邮箱(3/4) 消息邮箱 message mail box - 通过内核一个任务或一个中断服务程序可以把一则消息(一个指针)放到邮箱中。 - 通过内核一个或多个任务可以通过内核接收这则消息。 - 每个邮箱有相应的等待消息的任务列表,如果邮箱为空,则等待消息的任务将被挂起。 - 每个邮箱也应该有相应的发送消息的任务列表,如果邮箱满,则发送消息的任务将被挂起。 消息队列(4/4) 消息队列 message queue - 消息队列实际上是邮箱阵列。 - 通过内核一个任务或一个中断服务程序可以把一则消息(一个指针)放到消息队列中。 - 通过内核一个或多个任务可以

文档评论(0)

180****5152 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档