《最新嵌入式系统基础部分-实时系统PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新嵌入式系统基础部分-实时系统PPT课件.ppt(104页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式系统基础部分实时系统嵌入式系统基础部分实时系统实时系统逃跑吧!谁能跑的掉?足够快!什么是实时系统?实时指对随机发生的外部时间做出及时的相应并对其进行处理。(所谓事件时指来自与计算机系统相连接的设备所提出的服务要求和采集数据)实时系统指系统能及时(或即时)相应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。什么是实时系统?开始截止时间实时系统在某时间以前必须开始执行指定任务;完成截止时间实时系统在某时间以前必须完成指定任务。什么是实时系统?IEEE(美国电气电子工程师协会)实时系统为“那些正确性不仅取决于计算的逻辑结果,也取决于产生结果所花费的时间的系统
2、”。实时嵌入式系统必须在一个可预测可保证的时间段内做出对外部事件的反应。如果没有达到上述要求,那么系统就会做出错误的操作。什么是实时系统?POSIX Standard 1003.1操作系统中实时的定义:操作系统有能力在限定响应时间范围内,提供满足需求的服务。-实时系统指标响应时间(Response Time):是计算机识别一个外部事件到作出响应的时间,生存时间(Survival Time):是数据有效等待时间,在这段时间里数据是有效的。吞吐量(Throughput):是在一给定时间内,系统可以处理的事件总数。实时系统到底有多快?实时系统的响应“足够快”满足要求即可实时软件时限十微秒的时间内对外
3、部事件做出可靠的响应实时系统是最快的吗?不一定是运行速度最快的代码可预测性比速度更重要怎么达到实时的要求呢?充分发挥硬件的功能微处理器的中断机制简单的单线程循环程序基于实时操作系统的复杂多线程程序以硬件的方式实现软件嵌入式系统分类 按确定性来分嵌入式系统硬实时系统(Hard Real Time)系统对系统响应时间有严格的要求,如果系统响应时间不能满足,就要引起系统崩溃或致命的错误。软实时系统(Soft Real Time)系统对系统响应时间有要求,但是如果系统响应时间不能满足,不会导致系统出现致命的错误或崩溃。嵌入式系统分类按确定性来分嵌入式系统严格实时系统(Firm Real-Time)系统
4、对系统响应时间有严格的要求,如果系统响应时间不能满足,就要导致无法接受的低质量服务。非实时系统(Non Real-Time)系统对系统响应时间没有实时要求。硬实时系统应用汽车(沃尔沃S80有19台计算机)飞机(JAS)医疗设备 空间设备(火星探测器)军方系统 工业自动化举例硬实时嵌入式系统交换机交换机速度很快,你感觉不到交换机的交换时间消耗。当你在互联网上冲浪时,你访问一个网站,需要经过无数次交换过程,如果其中一个交换机的交换服务速度下降,将导致访问速度的下降,甚至导致网络的终端。软实时系统应用 软实时系统应用 游戏 DVD(MPEG 编码)英特网视频和广播 通讯Web Server举例软实时
5、嵌入式系统PDA,手机PDA支持很多应用软件,这些手机的应用软件的响应时间只要用户可以接受即可举例严格实时嵌入式系统打印机一分钟可以打印3页至100页想像一下,如果打印机二分钟只打印一页,不错打印机还在工作,但你能忍受吗?视频点播宽带视频点播一般可以达到512K,视频效果基本可以观看。如果宽带视频速度只能达到128K,你能忍受吗?软实时 vs 硬实时1s100ms10ms1ms100ms10ms1msSoftHard激光打印机TCPIP协议栈自动检票机大型游戏比较非实时系统软实时系统严格实时严格实时实时系统硬实时系统嵌入式实时系统分类按软件结构来分嵌入式实时系统单线程程序(Single-thr
6、eaded program)(1)循环轮询系统(Polling Loop)(2)有限状态机(Finit State Machine)事件驱动系统(Event-Driven system)(1)前后台系统(Foreground/Background)又叫中断驱动系统(2)实时多任务系统(Multitasking或Multi-thread Program Model)(3)多处理机系统循环轮询系统优点:对于简单的系统而言,便于编程和理解没有中断的机制,程序运行良好,不会出现随机的问题缺点:有限的应用领域(由于不可确定性)对于大量的I/O服务的应用,不容易实现大的程序不便于调试适合于慢速和非常快速的
7、简单系统循环轮询系统最简单的软件结构是循环轮询,程序依次检查系统的每一个输入条件,一旦条件成立就进行相应的处理。Initialize()While(true)if(condition_1)action_1();if(condition_2)action_2();if(condition_n)acition_n();举例-简单循环轮询系统举例-复杂循环轮询系统有限状态机优点:对于小的系统而言,便于编程和理解可以快速的执行只是通过改变输出功能来改变机器的响应缺点:有限的应用领域不能保证确定性对于大的应用系统,难于调试举例-简单有限状态机举例-复杂有限状态机事件驱动系统事件驱动系统是能对外部事件直接
8、响应的系统。是嵌入式实时系统的主要形式。前后台实时多任务多处理器等例如,很多基于微处理器的产品采用前后台系统设计,如微波炉、电话机、玩具等。从省电的角度出发,平时微处理器处在停机状态,所有的事都靠中断服务来完成。前后台系统前后台系统(Foreground/Background)中断服务程序处理异步事件,这部分可称为前台(Foreground),或叫中断级应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,这部分可称为后台(Background),或叫任务级系统的性能:中断延迟时间(Interrupt latency time)响应时间(response time)恢复时间(recov
9、ery time)前后台系统中断驱动系统的一种后台是一个循环轮询系统一直在运行。前台是由一些中断处理过程组成的。当有一前台事件(外部事件)发生时,引起中断,进行前台处理,处理完成后又回到后台(通常又称主程序)。中断中断1 1中断中断2 2主程序主程序中断中断1 1中断中断1 1中断中断2 2前后台系统ISRISRISRISR时间后后台台前台前台初始化初始化处理处理1 1事件事件1 1处理处理2 2事件事件2 2N NY YY YN NISR1ISR1ISR2ISR2前台处理后台处理ISR3ISR3前后台系统需要考虑的是中断的现场保护和恢复,中断嵌套,中断处理过程与主程序的协调(共享资源)问题。
10、系统的性能:中断延迟时间(Interrupt latency time)响应时间(response time)恢复时间(recovery time)中断请求中断请求 数据传送数据传送 响应时间响应时间 主程序主程序 现场保护现场保护 和恢复和恢复中断服务中断服务|中断延迟时间中断延迟时间 恢复时间恢复时间前后台系统实时多任务系统优点:将复杂的系统分解为相对独立的多个线程,达到“分而制之”的目的,从而降低系统的复杂性。保证系统的实时性系统的模块化好,提高系统的可维护性。缺点:需要采用一些新的软件软件设计方法需要增加功能:线程间的协调,同步和通信功能需要对每一个共享资源互斥导致线程间的竞争需要使用
11、RTOS,RTOS要增加系统的开销实时多任务系统实时多任务系统单处理器多任务系统多处理多任务系统单处理器多任务系统对于一个复杂的嵌入式实时系统来说,当采用中断处理程序加一个后台主程序这种软件结构难以实时的、准确的、可靠的完成时存在一些互不相关的过程需要在一个计算机中同时处理时需要采用实时多任务系统!需要采用实时多任务系统!单处理器多任务系统结构由多个任务,多个中断处理过程,实时操作系统组成的有机的整体。每个任务是顺序执行的,并行性通过操作系统来完成,任务间的相互通信和同步也需要操作系统的支持。流程并发多任务:后台后台前台前台 ISRsTasks单处理器多任务系统多任务系统多个顺序执行的程序并行
12、运行。宏观上看,所有的程序同时运行,每个程序运行在自己独立的CPU上。实际上,不同的程序是共享同一个CPU和其它硬件。因此,需要RTOS来对这些共享的设备和数据进行管理。每个程序都被编制成无限循环的程序,等待特定的输入,执行相应的任务等。这种程序模型将系统分成相对简单的,相互合作的模块。单处理器多任务系统优点将复杂的系统分解为相对独立的多个线程,达到“分而制之”的目的,从而降低系统的复杂性。保证系统的实时性。系统的模块化好,提高系统的可维护性。缺点需要采用一些新的软件设计方法。需要增加功能:线程间的协调,同步和通信功能。需要对每一个共享资源互斥。导致线程间的竞争。需要使用RTOS,RTOS要增
13、加系统的开销。多处理器多任务系统多任务可运行在多个处理器上,由操作系统统一调度,处理。宏观上看是并发的,微观上看也是并发的。多处理机系统分为紧耦合系统(tightly-coupled system)和松耦合系统(loosely-coupled system)两种。多处理多任务系统目前还不成熟。多处理机系统紧耦合系统(tightly-coupled system)多个处理器通过共享内存空间来交换信息(如:SMP),松耦合系统(loosely-coupled system)多个处理器通过通讯线路来连接和交换信息。举例-多处理机系统举例-多处理机系统实时系统杀毒软件iNetmon EngineVir
14、us ParserVirus MatchingOutput AlertVirus SignatureSMS,Email,XML,HTML12345杀毒引擎架构杀毒引擎架构实时多任务系统优点:将复杂的系统分解为相对独立的多个线程,达到“分而制之”的目的,从而降低系统的复杂性。保证系统的实时性系统的模块化好,提高系统的可维护性。实时多任务系统缺点:需要采用一些新的软件软件设计方法需要增加功能:线程间的协调,同步和通信功能需要对每一个共享资源互斥导致线程间的竞争需要使用RTOS,RTOS要增加系统的开销实时系统基本概念任务一个任务,也称作一个线程,是一个简单的程序,该程序可以认为CPU完全只属该程序
15、自己。实时应用程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。StackStackStackStatusSPPriorityStatusSPPriorityStatusSPPrioritySPMemory CPU TASK 1TASK 2TASK nCPU Registers多任务实时任务如实时系统支持n个周期实时任务T1,Tn。Ti 可以用(Pi,Ci,Di)三元组描述 P,周期 C,最坏情况下的执行时间 D,任务结束期限实时任务 Ti 在周期开始执行,消耗Ci时间单元,但必须在Di时间单元后
16、执行完毕。如果Pi=Di,则三元组中Di可以被忽略任务的分类按照到达情况的可预测性,任务可以划分为:周期任务周期任务(periodic task)非周期任务非周期任务按照重要程度,可分为:关键任务关键任务(critical task)非关键任务非关键任务(noncritical task)周期任务与非周期任务周期任务与非周期任务周期任务每隔一个固定的时间间隔就会执行一次。举例:飞行器可能需要每隔100ms获得一次关于飞行器的速度、高度和姿态数据,控制传感器获取这些数据就需要通过周期任务来进行。非周期任务执行的间隔时间则为不确定的。举例:移动通信设备中的通信任务,该任务只有在需要进行通信的情况下
17、才会得到执行。非周期任务分为:sporadic task:有最小到达间隔时间限制有最小到达间隔时间限制aperiodic task:没有到达时间限制没有到达时间限制关键任务与非关键任务关键任务与非关键任务关键任务:关键任务:为需要得到及时执行及时执行的任务,否则将出现灾难性的后果举例:飞行器中用于处理生命支持系统和稳定性控制系统的任务非关键任务:非关键任务:如果没有得到及时执行,则不会产生严重后果 任务执行方式同步:按照预定的控制流顺序发生的事件异步:一般由中断产生并处理几个实时操作系统概念确定性(Determinism)响应性(Responsiveness)用户控制(User control
18、)可靠性(Reliability)软失败操作(Fail-soft operation)确定性实时软件对于外部事件的响应时间必须是实时的、确定的和可以重复实现的,不管当时系统内部状态如何,都是可预测的。一个测量操作系统确定性能力的指标是从一个高优先级设备中断到达到开始服务的最大延迟。在非实时操作系统中,这个延迟可能是几十到数百毫秒;在实时操作系统中有一个明确的上界,从几个微秒到一毫秒不等。响应性响应性是在应答中断后,操作系统服务中断时间。初始化中断处理和开始执行中断服务程序(ISR)需要的时间。如果是要求一个进程切换的ISR执行,那么比在当前进程上下文中的ISR执行延迟更长时间。执行ISR需要的
19、时间。这通常依赖于硬件平台。中断嵌套的作用。如果一个ISR可能被另一个中断的到达而中断,那么它的服务将被延迟。响应时间确定性和响应性共同构成了对于外部事件的响应时间。响应时间对于RTOS是至关重要的,由于系统必须满足系统外部个人、设备或者数据流的定时要求。中断开始中断结束中断请求确定性响应性响应时间初始化开始执行执行非占先式内核中断的性能指标占先式内核中断的性能指标用户控制在一个典型的非实时操作系统中,用户或者不能控制操作系统的调度功能,或者只能提供粗略的指导,如将用户编组进入多于一个优先级的类别。在RTOS中,允许用户精细控制任务优先级是基本功能。用户应该能够区分硬实时任务和软实时任务,并在
20、每个类别中指定相对的优先级。一个RTOS也能够指定这类特征,如分页或者进程切换,哪些进程必须总是驻留在主存中,使用哪个磁盘传输算法,在各种优先级类别中的进程有哪些权利,等等。可靠性在非实时系统中一个瞬时错误可以简单地通过重新引导系统来解决在多处理机非实时系统中一个处理机的失败可能在修复或代替该处理机之前造成服务级别的降低。但是,实时系统需要实时响应和控制事件,性能的丧失或降低可能造成灾难性的后果。软失败操作软失败操作是指这样一个特征,系统能够以这样一种方式失败,它能够尽可能地保留能力和数据。一个典型的传统UNIX系统,当它检测到内核数据的误用,在系统控制台上发出失败消息,将内存内容倒到磁盘用于
21、以后的失败分析,同时终止系统的执行。与此相反,RTOS将试图或者纠正这个问题或者最小化它的影响,同时继续运行。典型情况下,系统通告用户或者用户进程,它将试图进行纠正动作,然后继续操作,或许此时降低了服务级别。js代码的临界段 代码的临界段也称为临界区,指处理时不可分割的代码。一旦这部分代码开始执行,则不允许任何中断打入。为确保临界段代码的执行,在进入临界段之前要关中断,而临界段代码执行完以后要立即开中断。资源与共享任何为任务所占用的实体都可称为资源。资源可以是输入输出设备,例如打印机、键盘、显示器,资源也可以是一个变量,一个结构或一个数组等。可以被一个以上任务使用的资源叫做共享资源。为了防止数
22、据被破坏,每个任务在与共享资源打交道时,必须独占该资源。利用信号量管理临界资源任务任务信号量临界资源操作方法使用临界资源前,得到信号量使用临界资源使用完后,释放信号量任务上下文任务上下文任务上下文是指一个未运行的任务的状态,如堆栈指针、计数器、内存字段和通用寄存器等。多任务多任务运行的实现实际上是靠CPU(中央处理单元)在许多任务之间转换、调度。CPU只有一个,轮番服务于一系列任务中的某一个。多任务运行很像前后台系统,但后台任务有多个。多任务运行使CPU的利用率得到最大的发挥,并使应用程序模块化。在实时应用中,多任务化的最大特点是,开发人员可以将很复杂的应用程序层次化。使用多任务,应用程序将更
23、容易设计与维护。任务的状态休眠态相当于该任务驻留在内存中,但并不被多任务内核所调度。就绪意味着该任务已经准备好,可以运行了,但由于该任务的优先级比正在运行的任务的优先级低,还暂时不能运行。运行态的任务是指该任务掌握了CPU的控制权,正在运行中。挂起状态也可以叫做等待(WAITING)事件态,指该任务在等待,等待某一事件的发生,(例如等待某外设的I/O操作,等待某共享资源由暂不能使用变成能使用,等待定时脉冲的到来或等待超时信号的到来以结束目前的等待,等等)。发生中断时,CPU 提供相应的中断服务,原来正在运行的任务暂不能运行,就进入了中断状态。等待休眠就绪运行中断任务切换任务切换(Context
24、 Switch or Task Switch)当多任务内核决定运行另外的任务时,它保存正在运行任务的当前状态(Context),即CPU寄存器中的全部内容。这些内容保存在任务的当前状况保存区(Tasks Context Storage area),也就是任务自己的栈区之中。入栈工作完成以后,就是把下一个将要运行的任务的当前状况从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行。这个过程叫做任务切换。任务切换过程增加了应用程序的额外负荷。CPU的内部寄存器越多,额外负荷就越重。做任务切换所需要的时间取决于CPU有多少寄存器要入栈。实时内核的性能不应该以每秒钟能做多少次任务切换来评价。内
25、核(Kernel)多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通讯。内核提供的基本服务是任务切换。之所以使用实时内核可以大大简化应用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。内核本身也增加了应用程序的额外负荷,代码空间增加ROM的用量,内核本身的数据结构增加了RAM的用量。但更主要的是,每个任务要有自己的栈空间,这一块吃起内存来是相当厉害的。内核本身对CPU的占用时间一般在2到5个百分点之间。单片机一般不能运行实时内核,因为单片机的RAM很有限。通过提供必不可缺少 的系统服务,诸如信号量管理,邮箱、消息队列、延时等,实时
26、内核使得CPU的利用更为有效。调度(Scheduler)调度就是要决定该轮到哪个任务运行了。多数实时内核是基于优先级调度法的。每个任务根据其重要程度的不同被赋予一定的优先级。基于优先级的调度法,指CPU总是让处在就绪态的优先级最高的任务先运行。究竟何时让高优先级任务掌握CPU的使用权,有两种不同的情况,这要看用的是什么类型的内核,是不可剥夺型的还是可剥夺型内核。调度延迟调度延迟是指当一个事件从引起更高优先级的任务就绪到这个任务开始运行之间的时间。简而言之,是一个任务被触发后,由就绪到开始运行的时间。区别应用内核插入中断应用内核ISR内核ISR退出ISR中断任务响应中断延时时间重新安排延时时间任
27、务抢占式内核非抢占式内核区别可重入性(Reentrancy)可重入型函数可以被一个以上的任务调用而不必担心数据的破坏。可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。可重入型函数只使用局部变量,即变量保存在CPU寄存器中或堆栈中。如使用全局变量,则要对全局变量予以保护。可重入型函数可以被一个以上的任务调用,而不必担心数据的破坏。可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。可重入型函数或者只使用局部变量,即变量保存在CPU寄存器中或堆栈中。不可重入型函数一个不可重入型函数的例子int Temp;Void swap(int*x,int
28、*y)Temp=*x;*X=*Y;*y=Temp;可重入型函数一个可重入型函数的例子Void swap(int*x,int*y)int Temp;Temp=*x;*X=*Y;*y=Temp;可重入型函数 void strcpy(char*dest,char*src)while(*dest+=*src+);*dest=NUL;函数strcpy()做字符串的复制。因为参数保存在堆栈中,故函数可以被多个任务调用,不必担心各任务调用函数期间会破坏对方的指针。不可重入型函数 int Temp;void swap(int*x,int*y)Temp=*x;*x =*y;*y =Temp;Task 1Task
29、 2While(1)x=1;y=2;Swap(&x,&y);Temp=*x;*x=*y;*y=Temp;While(1)z=1;t=2;Swap(&z,&t);Temp=*z;*z=*t;*t=Temp;不可重入函数被中断破坏如何使函数具有可重入性 使Swap()函数具有可重入性的条件:把Temp定义为局部变量调用Swap()函数之前关中断,调用后再开中断用信号量禁止该函数在使用过程中被再次调用嵌入式系统典型的调度技术循环执行静态调度策略适合周期性任务非抢占式事件驱动任务被功能所代表FIFO安全,功能有限任务调度策略抢占方式 高优先级任务A中优先级任务 B低优先级任务 CEventEventP
30、re_empty:不同优先级的任务采用抢占方式 任务调度策略时间片轮转方式ABCDABCD时间片Timeslice:相同优先级的任务采用时间片轮转方式任务优先级 每个任务都有其优先级。任务越重要,赋予的优先级应越高。静态优先级 应用程序执行过程中诸任务优先级不变,则称之为静态优先级。在静态优先级系统中,诸任务以及它们的时间约束在程序编译时是已知的。动态优先级 应用程序执行过程中,任务的优先级是可变的,则称之为动态优先级。实时内核应当避免出现优先级反转问题。任务优先级举例ISR space system task user task IDLE 优先级task space 230 2550 优先级
31、翻转与优先级继承 如果完全按照优先级来进行任务调度,则会发生如下情况:低优先级任务TaskB首先运行,调用 semTake()获得资源;高优先级任务TaskA就绪运行,调用semTake()申请资源,被阻塞;只有当taskB调用semGive()释放资源后,taskA才能继续运行优先级反转Task 1(H)Task 2(M)Task 3(L)Priority InversionTask 3 Get SemaphoreTask 1 Preempts Task 3Task 1 Tries to get SemaphoreTask 2 Preempts Task 3Task 3 ResumesTask 3 Releases the Semaphore(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)解决方法Priority inheritance protocol(优先级继承协议)让低优先级任务提高任务优先级,提高到和被阻塞高优先级任务同样的级别。Priority ceiling protocol(优先级限高协议).低优先级任务这次不是获得高优先级相同的优先级,而是获得某个预先设置好的优先级。而这个预先设置好优先级肯定不会比当前所有的存在的优先级低。在实现中,这个优先级一般被设置为实时系统中最高可能的优先级。
限制150内