章节前回顾.PPT

上传人:本田雅阁 文档编号:2752097 上传时间:2019-05-11 格式:PPT 页数:77 大小:906.53KB
返回 下载 相关 举报
章节前回顾.PPT_第1页
第1页 / 共77页
章节前回顾.PPT_第2页
第2页 / 共77页
章节前回顾.PPT_第3页
第3页 / 共77页
章节前回顾.PPT_第4页
第4页 / 共77页
章节前回顾.PPT_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《章节前回顾.PPT》由会员分享,可在线阅读,更多相关《章节前回顾.PPT(77页珍藏版)》请在三一文库上搜索。

1、课前回顾,嵌入式实时系统,学习目标,实时操作系统的特点,嵌入式操作系统,发展历程,无操作系统的嵌入算法阶段,以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统,通用的嵌入式实时操作系统阶段,基于Internet的嵌入式系统,第一阶段,无操作系统的嵌入算法阶段 以单芯片为核心的可编程控制器形式的系统。 具有与监测、伺服、指示设备相配合的功能。 大部分应用于一些专业性极强的工业控制系统中 一般没有操作系统的支持,通过汇编语言编程对系统进行直接控制,运行结束后清除内存。 特点: 系统结构和功能都相对单一 处理效率较低 存储容量较小 几乎没有用户接口。 使用简便、价格很低,第二阶段,以嵌入式CPU

2、为基础、以简单操作系统为核心的嵌入式系统。 特点 CPU种类繁多 通用性比较差 系统开销小 效率高 一般配备系统仿真器,操作系统具有一定的兼容性和扩展性 应用软件较专业,用户界面不够友好 系统主要用来控制系统负载以及监控应用程序运行,第三阶段,通用的以嵌入式操作系统为核心的嵌入式实时系统阶段 特点 嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好; 操作系统内核精小、效率高,并且具有高度的模块化和扩展性 具备文件和目录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能 具有大量的应用程序接口(API),开发应用程序简单 嵌入式应用软件丰富。,第四阶段,基于Internet为标

3、志的嵌入式系统 正在迅速发展的阶段。 目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及Internet技术与信息家电、工业控制技术等结合日益密切,嵌入式设备与Internet的结合将代表着嵌入式技术的真正未来。,依赖于相关技术的发展,嵌入式操作系统架构,实时操作系统内核,实时操作系统组成,最简内核纳核,实时操作系统内核代码大约1K到100K 用户可裁减掉程序员认为没有使用到的功能,直到只剩下最简内核(任务的管理与调度,称其为纳核,可以只有8k) 如何得到最简内核是嵌入式系统开发中非常重要的一环!,什么样的OS才是实时OS呢?,实时操作系统IEEE实时UNIX分

4、委会要求 异步的事件响应 切换时间和中断延迟时间确定 优先级中断和调度 抢占式调度 内存锁定 连续文件 同步,移植而来的嵌入式实时操作系统,通用操作系统移植到嵌入式系统中,形成的嵌入式操作系统。 嵌入式 Windows NT/XP SUN Java 操作系统 朗讯科技公司Inferno 嵌入式Linux 等,实时操作系统,实时操作系统 WindRiver 公司的VxWorks ISI 的pSOS QNX 系统软件公司的QNX ATI 的Nucleus 中国科学院凯思集团的Hopen 嵌入式操作系统 等等,专用实时操作系统,办公设备 WinCE,Palm 手机 Nokia、 Motorala的E

5、POC 等等,硬实时操作系统,客户可以设置任务的优先级 任务根据优先级运行 抢先式内核 没有虚拟内存,软实时操作系统,优先级分配, 没有优先级逆转 响应时间快 抢占式系统调用 无虚拟内存 (或支持页级锁),操作系统分类,按照操作系统的架构可以分为: 整体 OS 分层 OS 客户机/服务器 OS,整体式操作系统,整体式操作系统Monolithic OS 操作系统是包含了不同模块的一整块代码集 难于调试 任何一处修改都可能影响其他模块 Bug的修正可能带来其他Bug的出现 任何过程可以调用其它任何过程,没有考虑过程相互之间的依赖性和互操作性,分层操作系统,分层操作系统Layered OS 比Mon

6、olithic OS好,如OSI Layer 缺点 有时操作系统很难按照OSI进行分层,客户机/服务器操作系统,客户机/服务器操作系统Client-Server OS 最新的模型 最小的有限的操作系统功能 (scheduler and synchronization primitive) 其他所有功能当做系统任务运行 应用软件作为客户机通过系统调用要求服务器服务软件提供服务。,客户机/服务器操作系统,优点 易于调试 将任务分配多个微处理器上非常简单。 可以动态装载或卸载各种模块。 缺点 由于内存保护,系统消耗较大 必须保护系统进程 当应用软件切换到服务器内存空间时需要消耗时间。,你听说过哪些实

7、时操作系统?,eCos,eCos的特点我们在第一讲里已讲过,QNX,加拿大渥太华大学 网络功能相当强 实时分布式操作系统 国内也有很多的跟随者 源码不公开,ucOS,特点 uc/os采用可剥夺型实时多任务内核 uc/os适合小型控制系统,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2k 不足 没有网络和文件系统支持 应用软件少,WinCE,优点: 具有和Windows兼容的GUI 开发工具友好 缺点 非实时,目前已经向硬实时发展 $,pSOS,十分优秀的RTOS 目前已被WindRiver收购 高实时性(任务切换、中断响应) 在国内的使用逐年减少,VRTX,全球

8、最早推出的RTOS 实时性、高可靠较好 开发工具功能弱 目前已很少使用,vxWorks,目前全球使用最广泛的RTOS 高实时性 高可靠(火星探路者Pathfinder使用的就是该系统) 微内核结构 面向对象方法 开发工具功能强大 缺点:$,开源嵌入式Linux,优点 源码公开,可控,可裁减,可修改 应用软件丰富 支持CPU类型多 缺点 实时性差(非抢占式调度) 调度算法主要考虑效率和公平性 开发工具支持少 一体化内核结构,不易维护 适用领域 低成本、实时性要求不高、应用软件复杂的系统,ucLinux,为什么需要ucLinux(micro-conrol-linux) Linux需要硬件支持虚拟内

9、存,即CPU具有MMU 在简单CPU中,不支持MMU,如ARM7TDMI ucLinux就是没有虚拟内存的Linux ucLinux支持和Linux同样的接口,已有很多软件移植到ucLinux; 具有和Linux一样强大的网络功能和出 色的文件系统 ucLinux源码公开 注意事项 在ucLinux中,所有进程共享一个地址空间 没有隔离保护,RTLinux,在Linux内核与硬件层之间插入了一层 最坏的情况下在Intel x86处理器上响应时间: 15 s,实时操作系统组成,商业RTOS开发工具 交叉编译器,主要是C或C+编译器。 RTOS本身,它的核心是Real Time Kernel,包括

10、相关的函数库。 软件调试工具包,没有这类工具,多任务的应用程序几乎是没有办法调试的。,实时操作系统特点,确定性(Determinism) 响应性(Responsiveness) 用户控制(User control) 可靠性(Reliability) 软失败操作(Fail-soft operation),确定性,实时软件对于外部事件的响应时间必须是实时的、确定的和可以重复实现的,不管当时系统内部状态如何,都是可预测的。 一个测量操作系统确定性能力的指标是从一个高优先级设备中断到达到开始服务的最大延迟。 在非实时操作系统中,这个延迟可能是几十到数百毫秒; 在实时操作系统中有一个明确的上界,从几个微

11、秒到一毫秒不等。,响应性,响应性是在应答中断后,操作系统服务中断时间。 初始化中断处理和开始执行中断服务程序(ISR)需要的时间。如果是要求一个进程切换的ISR执行,那么比在当前进程上下文中的ISR执行延迟更长时间。 执行ISR需要的时间。这通常依赖于硬件平台。 中断嵌套的作用。如果一个ISR可能被另一个中断的到达而中断,那么它的服务将被延迟。,响应时间,确定性和响应性共同构成了对于外部事件的响应时间。 响应时间对于RTOS是至关重要的,由于系统必须满足系统外部个人、设备或者数据流的定时要求。,中断开始,中断结束,中断请求,确定性,响应性,响应时间,初始 化,开始 执行,执行,用户控制,在一个

12、典型的非实时操作系统中,用户或者不能控制操作系统的调度功能,或者只能提供粗略的指导,如将用户编组进入多于一个优先级的类别。 在RTOS中,允许用户精细控制任务优先级是基本功能。 用户应该能够区分硬实时任务和软实时任务,并在每个类别中指定相对的优先级。 一个RTOS也能够指定这类特征,如分页或者进程切换,哪些进程必须总是驻留在主存中,使用哪个磁盘传输算法,在各种优先级类别中的进程有哪些权利,等等。,可靠性,在非实时系统中一个瞬时错误可以简单地通过重新引导系统来解决 在多处理机非实时系统中一个处理机的失败可能在修复或代替该处理机之前造成服务级别的降低。 但是,实时系统需要实时响应和控制事件,性能的

13、丧失或降低可能造成灾难性的后果。,软失败操作,软失败操作是指这样一个特征,系统能够以这样一种方式失败,它能够尽可能地保留能力和数据。 一个典型的传统UNIX系统,当它检测到内核数据的误用,在系统控制台上发出失败消息,将内存内容倒到磁盘用于以后的失败分析,同时终止系统的执行。 与此相反,RTOS将试图或者纠正这个问题或者最小化它的影响,同时继续运行。典型情况下,系统通告用户或者用户进程,它将试图进行纠正动作,然后继续操作,或许此时降低了服务级别。,实时系统基本概念,代码的临界段,代码的临界段也称为临界区,指处理时不可分割的代码。一旦这部分代码开始执行,则不允许任何中断打入。为确保临界段代码的执行

14、,在进入临界段之前要关中断,而临界段代码执行完以后要立即开中断。,资源与共享,任何为任务所占用的实体都可称为资源。资源可以是输入输出设备,例如打印机、键盘、显示器,资源也可以是一个变量,一个结构或一个数组等。 可以被一个以上任务使用的资源叫做共享资源。为了防止数据被破坏,每个任务在与共享资源打交道时,必须独占该资源。,多任务,多任务运行的实现实际上是靠CPU(中央处理单元)在许多任务之间转换、调度。CPU只有一个,轮番服务于一系列任务中的某一个。多任务运行很像前后台系统,但后台任务有多个。多任务运行使CPU的利用率得到最大的发挥,并使应用程序模块化。在实时应用中,多任务化的最大特点是,开发人员

15、可以将很复杂的应用程序层次化。使用多任务,应用程序将更容易设计与维护。,任务,一个任务,也称作一个线程,是一个简单的程序,该程序可以认为CPU完全只属该程序自己。实时应用程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。,Stack,Stack,Stack,Memory CPU,TASK 1,TASK 2,TASK n,CPU Registers,多任务,任务的状态,休眠态相当于该任务驻留在内存中,但并不被多任务内核所调度。 就绪意味着该任务已经准备好,可以运行了,但由于该任务的优先级比正在运行的

16、任务的优先级低,还暂时不能运行。 运行态的任务是指该任务掌握了CPU的控制权,正在运行中。 挂起状态也可以叫做等待(WAITING)事件态,指该任务在等待,等待某一事件的发生,(例如等待某外设的I/O操作,等待某共享资源由暂不能使用变成能使用,等待定时脉冲的到来或等待超时信号的到来以结束目前的等待,等等)。 发生中断时,CPU 提供相应的中断服务,原来正在运行的任务暂不能运行,就进入了中断状态。,等待,休眠,就绪,运行,中断,任务切换,任务切换(Context Switch or Task Switch) 当多任务内核决定运行另外的任务时,它保存正在运行任务的当前状态(Context),即CP

17、U寄存器中的全部内容。这些内容保存在任务的当前状况保存区(Tasks Context Storage area),也就是任务自己的栈区之中。入栈工作完成以后,就是把下一个将要运行的任务的当前状况从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行。这个过程叫做任务切换。任务切换过程增加了应用程序的额外负荷。CPU的内部寄存器越多,额外负荷就越重。做任务切换所需要的时间取决于CPU有多少寄存器要入栈。实时内核的性能不应该以每秒钟能做多少次任务切换来评价。,内核(Kernel),多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通讯。 内核提供的基本服务

18、是任务切换。之所以使用实时内核可以大大简化应用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。 内核本身也增加了应用程序的额外负荷,代码空间增加ROM的用量,内核本身的数据结构增加了RAM的用量。但更主要的是,每个任务要有自己的栈空间,这一块吃起内存来是相当厉害的。 内核本身对CPU的占用时间一般在2到5个百分点之间。 单片机一般不能运行实时内核,因为单片机的RAM很有限。通过提供必不可缺少 的系统服务,诸如信号量管理,邮箱、消息队列、延时等,实时内核使得CPU的利用更为有效。,调度(Scheduler),调度就是要决定该轮到哪个任务运行了。 多数实时内核是基于优先级

19、调度法的。每个任务根据其重要程度的不同被赋予一定的优先级。 基于优先级的调度法,指CPU总是让处在就绪态的优先级最高的任务先运行。 究竟何时让高优先级任务掌握CPU的使用权,有两种不同的情况,这要看用的是什么类型的内核,是不可剥夺型的还是可剥夺型内核。,不可剥夺型内核,不可剥夺型内核(或非抢占式内核,Non-Preemptive Kernel) 不可剥夺型内核要求每个任务自我放弃CPU的所有权。 不可剥夺型调度法也称作合作型多任务,各个任务彼此合作共享一个CPU。 异步事件还是由中断服务来处理。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那

20、个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。,不可剥夺型内核优点,不可剥夺型内核的一个优点是响应中断快。 在任务级,不可剥夺型内核允许使用不可重入函数。 每个任务都可以调用非可重入性函数,而不必担心其它任务可能正在使用该函数,从而造成数据的破坏。因为每个任务要运行到完成时才释放CPU的控制权。当然该不可重入型函数本身不得有放弃CPU控制权的企图。 不可剥夺型内核几乎不需要使用信号量保护共享数据。 运行着的任务占有CPU,而不必担心被别的任务抢占。但这也不是绝对的,在某种情况下,信号量还是用得着的。处理共享I/O设备时仍需要使用互斥型信号量。 例如,在打

21、印机的使用上,仍需要满足互斥条件。,低优先 级任务,ISR,低优 先级 任务,高优 先级 任务,任务正在运行,中断到来,中断原来任务,执行中断服务子程序,使一个 高优先级任务进入就绪状态 由于是不可剥夺型内核,低优 先级任务未执行完毕,高优 先级任务不能立即执行,中断返回,继续执行原来任务,任务执行完毕,控制权交给 高优先级、已就绪任务,高优先级任务开始执行,不可剥夺型内核运行原理,不可剥夺型内核缺点,不可剥夺型内核的最大缺陷在于其响应时间。高优先级的任务已经进入就绪态,但还不能运行,要等,也许要等很长时间,直到当前运行着的任务释放CPU。与前后系统一样,不可剥夺型内核的任务级响应时间是不确定

22、的,不知道什么时候最高优先级的任务才能拿到CPU的控制权,完全取决于应用程序什么时候释放CPU。 不可剥夺型内核允许每个任务运行,直到该任务自愿放弃CPU的控制权。中断可以打入运行着的任务。中断服务完成以后将CPU控制权还给被中断了的任务。任务级响应时间要大大好于前后系统,但仍是不可知的,商业软件几乎没有不可剥夺型内核。,可剥夺型内核,当系统响应时间很重要时,要使用可剥夺型内核(或抢占式内核,Preemptive Kernel)。 最高优先级的任务一旦就绪,总能得到CPU的控制权。 当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高

23、优先级的任务立刻得到了CPU的控制权。 如果是中断服务子程序使一个高优先级的任务进入就绪态,中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。,可剥夺型内核运行原理,低优先 级任务,ISR,高优 先级 任务,低优 先级 任务,低优先级任务正在运行,中断到来,中断当前任务,中断服务完成,退出中断 进入新的优先级更高的任务,新任务执行,新任务执行完毕, 控制权还给原来的任务,继续执行原来的任务,执行中断服务,把另一个任务 置为高优先级、就绪状态,可剥夺型内核,使用可剥夺型内核,最高优先级的任务什么时候可以执行,可以得到CPU的控制权是可知的。 使用可剥夺型内核使得任务级响应时间得以最优化

24、。 使用可剥夺型内核时,应用程序不应直接使用不可重入型函数。调用不可重入型函数时,要满足互斥条件,这一点可以用互斥型信号量来实现。如果调用不可重入型函数时,低优先级的任务CPU的使用权被高优先级任务剥夺,不可重入型函数中数据有可能被破坏。 可剥夺型内核总是让就绪态的高优先级的任务先运行,中断服务程序可以抢占CPU,到中断服务完成时,内核让此时优先级最高的任务运行(不一定是那个被中断了的任务)。任务级系统响应时间得到了最优化,且是可知的。,区别,应用,内核,插入中断,应用,内核,ISR,内核,ISR,退出,ISR,中断任务响应,中断延时时间,重新安排延时时间,任务,抢占式内核,非抢占式内核,可重

25、入性(Reentrancy),可重入型函数可以被一个以上的任务调用而不必担心数据的破坏。 可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。 可重入型函数只使用局部变量,即变量保存在CPU寄存器中或堆栈中。如使用全局变量,则要对全局变量予以保护。,可重入型函数,函数strcpy()做字符串的复制。因为参数保存在堆栈中,故函数可以被多个任务调用,不必担心各任务调用函数期间会破坏对方的指针。,不可重入型函数,Task 1,Task 2,While (1) ,X = 1; Y = 2;,Swap ( ,Temp = *x;,*x = *y;,*y = Temp;, ,嵌入

26、式系统典型的调度技术,循环执行 静态调度策略 适合周期性任务 非抢占式事件驱动 任务被功能所代表 FIFO 安全, 功能有限,任务调度策略抢占方式,Pre_empty:不同优先级的任务采用抢占方式,任务调度策略时间片轮转方式,Timeslice:相同优先级的任务采用时间片轮转方式,任务优先级,每个任务都有其优先级。任务越重要,赋予的优先级应越高。 静态优先级 应用程序执行过程中诸任务优先级不变,则称之为静态优先级。在静态优先级系统中,诸任务以及它们的时间约束在程序编译时是已知的。 动态优先级 应用程序执行过程中,任务的优先级是可变的,则称之为动态优先级。实时内核应当避免出现优先级反转问题。,任

27、务优先级举例,ISR space,system task,user task,IDLE,优 先 级,task space,230,255,0,优先级翻转与优先级继承,如果完全按照优先级来进行任务调度,则会发生如下情况: 低优先级任务TaskB首先运行,调用 semTake()获得资源; 高优先级任务TaskA就绪运行,调用semTake()申请资源,被阻塞; 只有当taskB调用semGive()释放资源后,taskA才能继续运行,解决方法,Priority inheritance protocol(优先级继承协议) 让低优先级任务提高任务优先级,提高到和被阻塞高优先级任务同样的级别。 Priority ceiling protocol (优先级限高协议). 低优先级任务这次不是获得高优先级相同的优先级,而是获得某个预先设置好的优先级。而这个预先设置好优先级肯定不会比当前所有的存在的优先级低。在实现中,这个优先级一般被设置为实时系统中最高可能的优先级。,本课小结,实时操作系统概念,讨论及课后习题,准备交第一次作业(环境的建立) 准备做第二次作业(启动器),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1