6ucos2嵌入式实时操作系统.ppt
《6ucos2嵌入式实时操作系统.ppt》由会员分享,可在线阅读,更多相关《6ucos2嵌入式实时操作系统.ppt(291页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、A Free sample background from Slide 1嵌入式系统原理与接口技术嵌入式系统原理与接口技术第六讲第六讲 嵌入式实时操作系统嵌入式实时操作系统 C/OS-C/OS-A Free sample background from Slide 2本节提要本节提要1 1 1 13 3 3 32 2 2 25 5 5 54 4 4 47 7 7 76 6 6 6嵌入式嵌入式实时操作系统实时操作系统概念概念 C/OS-C/OS-简介简介 C/OS-C/OS-C/OS-C/OS-时间管理时间管理时间管理时间管理 C/OS-C/OS-内核结构内核结构 C/OS-C/OS-C/OS-
2、C/OS-任务管理任务管理任务管理任务管理 C/OS-C/OS-C/OS-C/OS-任务通信与同步任务通信与同步任务通信与同步任务通信与同步 C/OS-C/OS-C/OS-C/OS-移植移植移植移植A Free sample background from Slide 31.1 1.1 计算机操作系统计算机操作系统q定义定义qOS是一种系统软件。qOS是在计算机硬件与计算机应用程序之间,通过提供应用程序接口,屏蔽了计算机硬件工作的一些细节,大大提高了应用程序的开发效率。p作用与功能作用与功能pOS为应用程序提供了一个界面友好,性能稳定、安全,效率高,操作方便的虚拟计算机。pOS的主要功能:处理
3、器的管理;存储的管理;设备的管理;文件的管理;网络和通信的管理;提供用户接口。A Free sample background from Slide 41.2 1.2 嵌入式操作系统嵌入式操作系统q定义定义q运行在嵌入式硬件平台上,对整个系统及其所操作的部件、装置等资源进行统一协调、指挥和控制的系统软件。q嵌入式操作系统的主要特点:q微型化q可裁剪性q实时性q高可靠性q易移植性q嵌入式操作系统按应用范围分为通用型(如Win CE,VXWorks,CLinuxCLinuxCLinuxCLinux,C/OS-C/OS-C/OS-C/OS-等)等)等)等)和专用型(Symbian,Plam OS等)
4、两种。A Free sample background from Slide 51.1.3 3 实时操作系统(实时操作系统(RTOSRTOS)q定义定义qRTOS是具有实时性能且能支持实时控制系统工作的操作系统。qRTOS是一个程序,它按时序方式调度执行,管理系统资源,并为开发应用代码提供一致的基础。RTOS的首要任务是调度一切可利用的资源来完成实时控制任务,其次才着眼于提高计算机系统的使用效率,其重要特点是能满足对时间的限制和要求。在实时计算中,系统的正确性不仅依赖于计算的逻辑结果,而依赖于结果产生的时间。A Free sample background from Slide 6qq RTO
5、SRTOSRTOSRTOS与通用计算机与通用计算机与通用计算机与通用计算机OSOSOSOS的区别的区别的区别的区别q实时性q代码尺寸小q应用程序开发较难q需要专用的开发工具A Free sample background from Slide 7qq RTOSRTOSRTOSRTOS的组成的组成的组成的组成 实时操作系统需根据实际应用环境的要求,对内核进行裁减和重配置。根据其面向实际应用领域的不同,实时操作系统组成也有所不同,一般包括以下几个重要部分:q实时内核q网络组件q文件系统q图形用户界面A Free sample background from Slide 8qq RTOSRTOSRT
6、OSRTOS的特点的特点的特点的特点q支持异步事件的响应q中断和调度任务的优先级机制q支持抢占式调度q确定的任务切换时间和中断延迟时间q支持同步A Free sample background from Slide 91.1.4 4 前前/后台系统后台系统q前/后台系统是嵌入式实时系统的主要形式,用于不复杂的小系统设计上。A Free sample background from Slide 10q前前/后台行为后台行为q应用程序是一个无限循环,循环中调用相应的函数完成相应的操作,这部分可看成后台行为(background)。q中断服务程序处理异步事件,这部分可看成前台行为(foregroun
7、d)。A Free sample background from Slide 11q说明说明q时间相关性很强的关键操作(critical operation)一定是靠中断服务来保证的。因为中断服务提供的信息一直要等到后台程序运行到该处理这个信息时,才能得到处理。q该系统在处理信息的及时性上,比实际做的要差。处理信息的及时性称做任务级响应时间。最坏情况下,任务级响应时间取决于整个循环的的执行时间。(循环执行时间不是常数)A Free sample background from Slide 121.1.5 5 代码的临界段代码的临界段 q代码的临界段也称为临界区,指处理时不可分割的代码。一旦这部
8、分代码开始执行,则不允许任何中断打入。q为确保临界段代码的执行不被中断,在进入临界段之前要关中断,而临界段代码执行完以后要立即开中断(在任务切换时,地址、指令、数据等寄存器堆栈保护)。A Free sample background from Slide 131.1.6 6 多任务多任务 q任务任务 q一个任务,也称作一个线程,是一个简单的程序。每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。存储器存储器任务2堆栈任务n堆栈任务1堆栈任务任务控制控制块块1 1任务任务控制控制块块2 2任务任务控制控制块块n ncpucpucpucpu寄存器
9、寄存器A Free sample background from Slide 14 每个任务都是一个无限的循环。每个任务都在 以下5 5种状态种状态之一:q休眠态休眠态q休眠态相当于该任务驻留在内存中,但并不被多任务内核所调用。q就绪态就绪态q就绪态意味着该任务已经准备好,可以运行,但由于该任务的优先级比正在运行的任务的优先级低,还暂时不能运行。A Free sample background from Slide 15q挂起态挂起态(等待某一事件发生)q挂起状态也可以叫做等待事件态WAITING,指该任务在等待,等待某一事件的发生。q被中断态被中断态 q发生中断时,CPU提供相应的中断服务,
10、原来正在运行的任务暂不运行,进入中断处理。q 运行态运行态q 运行态的任务是指该任务掌握了CPU的控制权,正在运行中。A Free sample background from Slide 16A Free sample background from Slide 17qq 多任务多任务多任务多任务 q多任务运行的实现实际上是靠CPU(中央处理单元)在许多任务之间转换、调度。CPU只有一个,轮番服务于一系列任务中的某一个。q多任务运行使CPU的利用率得到最大的发挥,并使应用程序模块化。在实时应用中,多任务化的最大特点是,开发人员可以将很复杂的应用程序层次化。q使用多任务,应用程序将更容易设计与
11、维护。A Free sample background from Slide 18qq 任务切换任务切换任务切换任务切换(Context Switch)Context Switch)Context Switch)Context Switch)q当多任务内核决定运行另外的任务时,它保存正在运行任务的当前状态(即CPU寄存器中的全部内容)到任务的当前状况保存区(即任务自己的栈区之中)。入栈完成后,把下一个将要运行的任务的当前状况从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行,这个过程叫做任务切换。q任务切换过程增加了应用程序的额外负荷。q任务切换所需要的时间取决于CPU有多少寄存器要
12、入栈。A Free sample background from Slide 191.1.7 7 系统内核与调度系统内核与调度q功能功能 多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通讯。内核提供的基本服务是任务切换。q 优点优点 使用实时内核可以大大简化应用系统设计,因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。qq 系统内核系统内核系统内核系统内核A Free sample background from Slide 20q缺点缺点q内核本身也增加了应用程序的额外负荷。q代码空间增加了ROM的用量。q内核本身的数据结构增加了RAM的用
13、量。q内核本身对CPU的占用时间一般在2到5个百分点之间。q说明说明q实时内核为使CPU的利用更为有效,提供了必不可少的系统服务:信号量管理,邮箱、消息队列及时间延时等。q单片机一般不能运行实时内核,因为单片机的RAM很有限。A Free sample background from Slide 21q调度算法调度算法q基于优先级的调度法 每个任务根据其重要程度的不同赋予一定的优先级,CPU总是让处在就绪态的、优先级最高的任务先运行。q时间片轮转调度法q调度原则调度原则 总是进入优先级最高、就绪态的任务运行。q 调度调度(SchedulerScheduler)调度是内核的主要职责之一,就是要决
14、定该轮到 哪个任务运行了。A Free sample background from Slide 221.1.8 8 不可剥夺与可剥夺型不可剥夺与可剥夺型q不可剥夺型调度法也称作合作型多任务,各个任务彼此合作共享一个CPU。异步事件还是由中断服务来处理。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。q 基于优先级的内核有两种类型:不可剥夺内核 和可剥夺型内核。q 不可剥夺型内核不可剥夺型内核q 要求每个任务主动放弃cpu的使用权。A Free sample
15、 background from Slide 23A Free sample background from Slide 24q不可剥夺型内核的优点不可剥夺型内核的优点q响应中断快 使用不可剥夺型内核时,任务级响应时间比前/后台系统快得多。此时的任务级响应时间取决于最长的任务执行时间。q几乎不需要使用信号量保护共享数据 运行着的任务占有CPU,而不必担心被别的任务抢占。但这也不是绝对的,在某种情况下,信号量还是用得着的。处理共享I/O设备时仍需要使用互斥型信号量。A Free sample background from Slide 25q不可剥夺型内核的缺点不可剥夺型内核的缺点q不可剥夺型内
16、核最大缺陷在于其响应时间,即响应高优先级的任务慢。不可剥夺型内核任务级响应时间要大大好于前/后台系统,但仍是不可知的,商业软件几乎没有不可剥夺型内核。A Free sample background from Slide 26q可剥夺型内核可剥夺型内核q最高优先级的任务一旦就绪,总能得到CPU的控制权。q当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。如果是中断服务子程序使一个高优先级的任务进入就绪态,中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。A Free sample ba
17、ckground from Slide 27A Free sample background from Slide 28q说明说明q使用可剥夺型内核,最高优先级的任务什么时候可以执行,何时可以得到CPU的控制权,这些是可知的,使得任务级响应时间得以最优化。q使用可剥夺型内核时,应用程序不应直接使用不可重入型函数。调用不可重入型函数时,要满足互斥条件,这一点可以用互斥型信号量来实现。如果调用不可重入型函数时,低优先级的任务的CPU使用权被高优先级任务剥夺,不可重入型函数中的数据有可能被破坏。A Free sample background from Slide 29q 可剥夺型内核总是让就绪态的
18、高优先级的任 务先运行,中断服务程序可以抢占CPU。q C/OS-以及大多数的商业的实时内核都是 可剥夺型内核。A Free sample background from Slide 301.1.9 9 可重入型函数可重入型函数q可重入型函数可以被一个以上的任务调用,而不必担心数据的破坏。可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。q可重入型函数或者只使用局部变量,即变量保存在CPU寄存器中或堆栈中。如果使用全局变量,则要对全局变量予以保护。A Free sample background from Slide 31q 可重入型函数的例子可重入型函数的例子q程
19、序清单程序清单(可重入型函数)void swap(int*x,int*y)void swap(int*x,int*y)int Temp;int Temp;Temp=*x;Temp=*x;*x =*y;*x =*y;*y =Temp;*y =Temp;A Free sample background from Slide 32q 不可重入型函数的例子不可重入型函数的例子q程序清单程序清单(不可重入型函数)int Temp;int Temp;void swap(int*x,int*y)void swap(int*x,int*y)Temp=*x;Temp=*x;*x =*y;*x =*y;*y =T
20、emp;*y =Temp;A Free sample background from Slide 33qq 把把TempTemp定义为局部变量;定义为局部变量;qq 调用函数之前关中断,调用后再开中断;调用函数之前关中断,调用后再开中断;qq 用信号量禁止该函数在使用过程中被再次调用。用信号量禁止该函数在使用过程中被再次调用。qq 使函数具有可重入性的方法使函数具有可重入性的方法使函数具有可重入性的方法使函数具有可重入性的方法:A Free sample background from Slide 341.1.10 10 任务优先级任务优先级qq任务优先级任务优先级任务优先级任务优先级 每个任
21、务都有优先级。任务越重要,赋予的优先级越高,对大多数内核而言,优先级是由用户决定的。q静态优先级静态优先级 应用程序执行过程中诸任务优先级不变,则称之为静态优先级。在静态优先级系统中,诸任务以及它们的时间约束在程序编译时是已知的。A Free sample background from Slide 35p 动态优先级动态优先级 应用程序执行过程中,任务的优先级是可变的,则称之为动态优先级。实时内核应当避免出现优先级反转问题。A Free sample background from Slide 361.1.11 11 优先级反转优先级反转q 优先级反转优先级反转q 为防止为防止优先级反转,内
22、核能自动变换任务优先级反转,内核能自动变换任务 的优先级,这叫做优先级继承的优先级,这叫做优先级继承A Free sample background from Slide 37q 优先级反转优先级反转A Free sample background from Slide 38q 优先级继承A Free sample background from Slide 391.11.12 2 任务优先级分配任务优先级分配 q任务优先级分配任务优先级分配q实时系统大多综合了软实时和硬实时这两种需求。软实时系统只是要求任务执行得尽量快,并不要求在某一特定时间内完成。硬实时系统中,任务不但要执行无误,还要准时
23、完成。q单调执行率调度法RMS(Rate Monotonic Scheduling),用于分配任务优先级。这种方法基于任务执行的次数(或称任务的执行率),执行最频繁的任务优先级最高。A Free sample background from Slide 40qq 单调执行率调度法单调执行率调度法单调执行率调度法单调执行率调度法qRMS做了一系列假设:q所有任务都是周期性的;q任务间不需要同步,没有共享资源,没有任务间数据交换等问题;qCPU必须总是执行那个优先级最高且处于就绪态的任务。换句话说,须使用优先级调度法。qRMS定理 (Ei/Ti)n(21/n-1)iA Free sample ba
24、ckground from Slide 41qRMS认为:最高执行率的任务具有最高的优先级;但在某些条件下,最高执行率的任务并非是最重要的任务。q 基于任务的CPU最高允许使用率A Free sample background from Slide 421.11.13 3 互斥条件互斥条件 实现任务间通讯最简便的办法是使用共享数据结构。虽然共享数据区法简化了任务间的信息交换,但必须保证每个任务在处理共享数据时的排它性,以避免竞争和数据的破坏。与共享资源打交道时,使之满足互斥条件最一般的方法有:q关中断;q使用测试并置位指令;q禁止做任务切换;q利用信号量。A Free sample backg
25、round from Slide 43qq 关中断和开中断关中断和开中断关中断和开中断关中断和开中断q处理共享数据时保证互斥,最简便快捷的办法是关中断和开中断。qC/OS-提供两个宏调用以完成关中断和开中断。qOS_ENTER_CRITICAL()qOS_EXIT_CRITICAL()q说明 在任何时候,关中断的时间都要尽量短。一般说,关中断时间最长不超过内核本身的关中断时间,这样就不会影响系统中断延迟。A Free sample background from Slide 44qq 测试并置位操作测试并置位操作测试并置位操作测试并置位操作q定义 如果不使用实时内核,当两个任务共享一个资源时,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ucos2 嵌入式 实时 操作系统
限制150内