实时嵌入式操作系统艾云峰aiyunfeng@gmail.comCollegeofComputing&CommunicationEngineeringReal-timeEmbeddedOperatingSystem2内容回顾(一)理解嵌入式系统的软硬件组成的多样性理解实时嵌入式系统的的实时性要求理解什么是实时嵌入式操作系统、作用及主要组成理解实时内核的组成:调度器、对象、服务理解调度算法、多任务、任务切换、任务控制快、上下文、等基本概念理解实时嵌入式操作系统的几个关键特性可靠性可预测性可剪裁性紧凑性3内容回顾(二)前后台系统、可剥夺型内核、不可剥夺型内核代码临界段、临界区资源、共享资源、互斥任务、任务的状态、任务状态转变、任务切换可重入型任务优先级、静态优先级、动态优先级优先级反转、优先级继承任务间的关系:独立、互斥、同步、通信4内容回顾(二)互斥的四种实现方法同步:单向同步、双向同步、关联性同步通信:消息邮箱、消息队列中断:中断嵌套、中断延迟、中断响应、中断恢复时钟节拍:延时抖动5内容大纲一、RTOS的任务管理与调度任务任务管理任务调度6任务的定义一个任务是独立的执行线程,是内核调度的单位,具有动态性、并行性等特性。动态性:任务状态是不断变化的并行性:系统中同时存在多个任务,宏观上是同时运行的任务的内容:7任务的分类周期性任务(pediodictask)非周期性任务有最小到达时间间隔限制的任务(sporadictask)没有到达时间限制的任务(aperiodictask)关键任务(criticaltask)非关键任务(noncriticaltask)8任务的参数优先级(priority)周期(period)任务周期性执行的时间间隔任务的计算时间(computationtime)也被称为任务的执行时间(executiontime),指任务在特定硬件环境下被完整执行所需的时间。由于任务每次执行环境的差异性,导致任务的每次执行时间不同,因此常用最坏情况下的执行时间(worstcasetime)来表示,也可用统计时间(statistictime)来表示就绪时间(readytime)任务具备了在处理器上被执行的条件时所需要的时间截止时间(deadline)绝对截止时间(absolutedeadline);相对截止时间(relativetime);9任务管理任务管理包括建立任务删除任务挂起任务唤醒任务设置任务属性查询任务属性调度任务等任务管理可以引起任务在各种状态之间进行转换在这几项工作中任务调度是关键10任务状态(1)任务的状态代表了任务占有系统资源的状况。不同的嵌入式操作系统所定义的任务状态虽然略有不同,但都有就绪、运行、阻塞等3种状态1.就绪状态:就绪状态是任务已经具备被运行的条件,正在等待被运行的状态。2.运行状态:运行状态是任务已经获得了处理器资源,正在被运行的状态。3.阻塞状态:任务正在等待某种事件发生;等待某一共享资源;任务自身的延迟11任务状态(2)任务状态间的转换一个任务被建立后首先进入的是就绪状态。处于执行状态的任务如果需要使用某种资源并且暂时得不到满足时,就会进入到阻塞状态。处于就绪状态的任务,如果被操作系统内核中的调度程序选中,获得了CPU的使用权后就将进入执行状态,在系统的处理器上运行。处于执行状态的任务如果执行权被具有更高优先级的任务抢占或运行时间超时,就会重新回到就绪状态。处于阻塞状态的任务,如果需要使用的资源系统已经可以得到,那么它将转换为就绪状态。12任务控制块嵌入式操作系统对任务的管理是通过任务控制块(TCB)来实现的任务控制块是一个包含与任务相关的信息的数据结构,通常包含以下信息:任务名字任务执行的起始地址任务的状态任务的优先级任务的上下文任务的队列指针等13任务队列(1)任务队列是由任务控制块所构成的队列。嵌入式操作系统通过任务队列实现对任务的管理。单就绪队列和单等待队列14任务队列(2)单就绪队列和多等待队列15建立任务各种嵌入式操作系统都会提供一个用于建立任务的系统调用任务建立成功后,该调用会返回一个标识新建任务的标识号。用户可以通过这个标识号进行与任务相关的其它操作在建立任务时一般需要提供以下的信息:(1)任务的名字(2)任务的优先级(3)任务堆栈(4)任务属性(5)任务代码的入口地址(6)传递给任务的参数16删除任务各种嵌入式操作系统也都会提供一个用于删除任务的系统调用这个系统调用的功能是以建立任务时返回的标识号为参数删除该参数所指定的任务。17挂起任务嵌入式操作系统提供的任务挂起系统调用可以根据任务的标识号(ID),把指定任务挂起,直到通过唤醒任务的系统调用将其唤醒为止任务被挂起后,将处于阻塞状态通过挂起任务的系统调用,一个任务可以把自己挂起。当任务把自己挂起后,会引起任务的调度,操作系统内核将选取另外一个合适的任务运行。18唤醒任务嵌入式操作系统提供的任务唤醒系统调用可以根据任务的标识号(ID)唤醒指定的任务如果任务还在等待其他资源,则任务解挂后仍然处于阻塞状态;否则,被唤醒后的任务将处于就绪状态。19设置任务信息使用嵌入式操作系统提供的设置任务信息系统调用可以设置任务的优先级、是否可抢占、时间片等属性,以确定任务在调度时所拥有的优先级,是否允许在执行过程中被抢占,以及运行的时间片的长短等。20查询任务信息使用嵌入式操作系统提供的查询任务信息系统调用可以获得任务的优先级、是否可抢占、时间片大小、任务上下文和任务的状态等信息,以便用户进行决策21任务调度任务调度是在多任务环境下产生的一个概念。其作用是确定任务的执行顺序和执行时间的长短一种调度算法可被认为是在一个特定时刻用来选择将要运行的任务及其运行时间的一组规则在发生以下情况后,操作系统内核通常就要进行任务调度。(1)中断服务程序结束运行。(2)当前运行的任务因等待某一资源而进入了阻塞状态(3)某一任务进入就绪状态。22经典的调度算法FirstComeFirstServed(FCFS)ShortestJobFirst(SJF)RoundRobin(RR)PriorityScheduling23FirstComeFirstServed(FCFS)ItassignstheCPUtotasksbasedontheirarrivaltimes.24FCFSScheduling(1)25FCFSScheduling(2)26ShortestJobFirst(SJF)Scheduling27RoundRobin(RR)28priorityscheduling29基于优先级的不可抢占式调度采用不可抢占式调度时,如果中断服务程序使一个高优先级任务变为就绪状态,也必须等到当前运行的任务主动放弃对CPU的使用权后,新就绪的高优先级任务才能投入运行因为无法确定低优先级的任务何时才能结束运行,所以采用不可抢占式调度时,系统的响应时间是不确定的,实时性相对比较差。采用不可抢占式调度时系统的执行过程在低优先级任务运行过程中,一个外部中断到达。如果系统允许中断,则CPU的使用权被交给中断服务程序。中断服务程序使一个高优先级任务进入就绪状态。中断服务程序运行完毕,CPU的使用权被交还给原先被中断的低优先级任务。低优先级任务继续运行。低优先级任务运行完毕或因某种原因被阻塞,释放CPU的使用权,内核进行调度,切换到在中断处理过程中就绪的高优先级任务。高优先级任务运行。31基于优先级的可抢占式调度采用可抢占式调度时,如果中断服务程序使一个优先级更高的任务进入就绪状态,那么在中断处理结束后,高优先级的任务便开始运行由于中断服务程序的运行时间可以大致估算,所以采用可抢占式调度时,系统的响应时间是相对比较确定的。采用可抢占式调度时系统的执行过程在低优先级任务运行的过程中,一个外部中断到达。如果系统允许中断,则CPU的使用权被交给中断服务程序。中断服务程序使一个高优先级任务进入就绪状态。高优先级任务运行。高优先级任务运行完成,或者因为某种原因被阻塞,内核进行任务调度;低优先级任务获得CPU使用权,从被中断的代码处继续往下运行。中断服务程序运行完毕后,内核进行任务调度,让新就绪的高优先级任务获得CPU的使用权。33课后作业:阅读下面两篇文章:BasicConceptsofReal-TimeOperatingSystemsASurveyofTaskSchedulers