您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 嵌入式系统与软件(4)
1嵌入式实时内核基础2嵌入式实时内核的关键设计问题实时性可移植性可剪裁、可配置性可靠性应用编程接口3实时性实时性是指实时内核应该保证系统尽可能快地对外部事件产生响应。实时性是实时内核最重要的特性之一。实时系统的正确性不仅依赖于系统计算的逻辑结果,还依赖于产生这些结果的时间。系统的实时性与硬件、操作系统及程序三方面有关系。4相关概念–确定性:是指系统对外部事件响应的最坏时间是可以预知的。–响应性:是指系统在识别外部事件以后,要花多长时间来服务该事件。–响应时间:确定性和响应性结合在一起构成了系统对外部事件的响应时间,对于多任务实时应用来说,可以分两种情况:中断响应时间和任务响应时间。实时性5实时性内核实时性的重要原则:–支持多任务;–支持强占式多任务;–支持任务的优先级调度;–任务的优先级可以继承;–支持可预测的任务同步机制;–实时内核的运行时间可知并可以预测;–系统调用的确定性。6实时性影响实时性的主要因素–调度算法–可抢占式内核–内核的关中断时间–数据结构–存储管理机制–资源的有限时间等待–优先级反转问题的解决–中断处理–浮点数的优化处理7可抢占内核与不可抢占内核体现在任务在使用内核提供的系统调用的过程中被中断打断的不同处理上。可抢占内核:中断服务程序退出时进行任务重调度,如果有优先级更高的任务就绪,就立即让高优先级任务运行,不要求必须回到被中断的任务,将未完成的系统调用执行完不可抢占内核:中断服务程序退出时,即使有优先级更高的任务就绪也必须回到被中断的任务,将未完成的系统调用执行完后,才能让高优先级任务执行。8可移植性可移植性是设计实时内核时需要重点考虑的目标之一;嵌入式软件的移植工作分为异种处理器平台之间的移植和同种处理器平台之间的移植;不同处理器平台间的移植工作集中在任务切换、中断控制设备和时间设备的驱动上;同种处理器平台间的移植工作集中在对芯片级控制寄存器的操作上。9影响内核可移植性的因素编程语言:高级语言与汇编语言。体系结构:–可以将内核设计为三层结构:硬件无关层、硬件抽象层和硬件相关层。代码实现的技巧:–对不可移植代码的使用转换成对函数和宏定义的使用。10可剪裁、可配置性可剪裁表示系统在增加、删除功能模块时仅需要做少量的修改或者根本不用修改。可剪裁性要求系统中各功能模块之间尽量不存在耦合关系。可配置性是针对系统中未被卸装的模块,根据应用在数量、机制、工作空间和堆栈等方面的不同需求,决定系统的规模、功能以及内存分配等。11可靠性可靠性对于实时系统来说通常比非实时系统更为重要。提高可靠性所采用的机制有:异步信号、定时器、优先级继承、优先级天花板、异常(出错)处理、用户扩展和内存保护等。12编程接口每个操作系统提供的系统调用的功能和种类都不同。一般来说,系统调用提供得越多,功能越强,越能对应用程序的开发提供高效率的支持,同时也会减少应用程序的维护工作量;相反,系统调用提供得越少,越单一,应用程序越复杂,可靠性越低。API影响着应用参与系统控制的深浅程度。通过实时内核提供的API,开发者可以在应用中使用实时内核提供的各种功能,达到对系统硬件资源和软件资源的合理、充分的使用。提供面向行业的接口标准是嵌入式实时操作系统的一个发展趋势。13嵌入式实时内核的主要功能任务管理中断管理任务间的同步与通信管理时间管理对共享资源的互斥管理存储管理I/O管理出错管理用户扩展管理电源管理14任务管理任务是被调度执行和竞争资源的最基本实体单元;实时内核最基本的功能是管理任务、提供多线程的支持;任务管理主要包括创建任务、删除任务、改变任务状态和查询任务状态等功能;任务管理的核心是任务调度,确定一个适合嵌入式应用特定要求的任务调度算法。15多任务管理机制的好处相对于前后台软件结构而言,多任务软件结构的每个任务规模较小,每个任务更容易编码和调试,其质量也更容易得到保证。不少应用本身就是由多个任务构成的,采用多任务的处理方式是应用问题的一个非常自然的解决方式。任务之间具有较高的独立性,耦合性小,通过增加新的任务就能方便地扩充系统功能。实时性强,保证紧急事件得到优先处理成为可能。16进程进程的定义主要包括以下内容:–一个正在执行的程序;–计算机中正在运行的程序的一个实例;–可以分配给处理器,并由处理器执行的一个实体;–由一个顺序的执行线程、一个当前状态和一组相关的系统资源所刻画的活动单元。进程由代码、数据、堆栈和进程控制块PCB构成。17任务任务定义任务是一个具有独立功能的无限循环的程序段的一次运行活动,是操作系统调度的单位。具有动态性、并行性和异步独立性。–动态性:任务状态是不断变化的。任务状态一般分为就绪态(ready),运行态(running),阻塞态(wait/suspended)。–并行性:系统中同时存在多个任务,它们宏观上是同时运行的–异步独立性:每个任务各自按相互独立的不可预知的速度运行,走走停停。18程序与任务之间的区别任务更能真实地描述并发,而程序不能任务是由程序和数据两部分组成的程序是静态的,任务是动态的任务有生命周期,有诞生有消亡,短暂的;而程序是相对长久的一个程序可对应多个任务,反之亦然任务具有创建其他任务的功能,而程序没有19任务组成–代码(如:Code)–数据(如:DATA、BSS)–堆栈(用户堆栈、核心堆栈)–任务控制块TCB–任务标识、任务优先级–任务状态和控制信息–保存CPU的现场任务20内核代码多任务模型内核数据栈数据任务控制块栈任务控制块栈任务控制块代码代码代码数据数据21任务参数任务的特性可以通过优先级、周期、计算时间、就绪时间和截止时间等参数来进行描述。–任务优先级表示任务对应工作内容在处理上的优先程度。优先级越高,表明任务越需要得到优先处理。任务优先级分为静态优先级和动态优先级。静态优先级表示任务的优先级被确定后,在系统运行过程中将不再发生变化;动态优先级则意味着在系统的运行过程中,任务的优先级是可以动态变化的。–周期是周期任务所具有的参数,表示任务周期性执行的间隔时间。–任务的计算时间是指任务在特定硬件环境下被完整执行所需要的时间,也被称为任务的执行时间。22任务参数任务的特性可以通过优先级、周期、计算时间、就绪时间和截止时间等参数来进行描述。–任务的就绪时间表示任务具备了在处理器上被执行所需要的条件时的时间。–任务的截止时间意味着任务需要在该时间到来之前被执行完成。截止时间可以通过绝对截止时间和相对截止时间两种方式来表示,相对截止时间为任务的绝对截止时间减去任务的就绪时间。23任务状态–多任务系统中任务参与资源竞争,处理器资源在任务之间分配,任务状态在不断的变化–不同的内核实现对任务状态的定义不尽相同,但是都可以概括为以下三种状态:–执行态:当前占有CPU的任务状态–就绪态:一旦获得CPU就能执行的任务状态–阻塞态:由于资源条件未满足,没有资格竞争CPU的任务状态任务24任务状态就绪执行阻塞25任务任务的上下文和上下文切换–任务的上下文记录了该任务的执行环境(如,寄存器的内容)。–针对不同体系结构的处理器,任务的上下文有不同的定义。–任务的上下文切换表示当前执行任务在将处理器的控制权交给即将运行的任务之前,把它的执行环境(该任务的上下文)保存到相应的数据结构中,用即将运行任务的上下文重新布置执行环境。26任务管理机制任务管理用来实现对任务状态的直接控制和访问,实时内核的任务管理是通过系统调用来实现的,这些系统调用主要包括任务创建、任务删除、任务挂起、任务唤醒和设置任务属性等内容。–任务创建:为任务分配和初始化相关的数据结构。获得任务控制块TCB;根据实时内核用户提供的信息初始化TCB;为任务分配一个可以唯一标识任务的ID;使任务处于就绪状态,把任务放置到就绪队列;进行任务调度处理。27–任务删除:实时内核根据任务创建时获得的ID删除指定的任务。根据指定的ID,获得对应任务的TCB;把任务的TCB从队列中取出来,挂入空闲TCB队列;释放任务所占用的资源。–任务挂起:根据任务的ID把指定任务挂起,直到通过唤醒任务对任务进行解挂。通过任务挂起,一个任务可以把自己挂起。根据指定的ID,获取对应任务的TCB;把任务的状态变为等待状态,并把TCB放置到等待队列;如果任务自己挂起自己,则进行任务调度。任务管理机制28–任务唤醒:根据任务ID解挂指定的任务。根据指定的ID,获得对应任务的TCB;如果任务在等待其他资源,任务将仍然处于等待状态;否则,把任务的状态变为就绪状态,并把TCB放置到就绪队列;进行任务调度。–任务睡眠:使当前任务睡眠一段指定的时间,时间到后,任务又重新回到就绪状态。修改任务状态,把任务状态变为等待状态;把任务TCB放置到时间等待链进行任务调度。任务管理机制29–关于任务扩展:以便于应用能够向系统中添加一些关于任务的附加操作,为应用提供在系统运行的关键点上进行干预的手段。任务扩展的时机:任务创建时、任务删除时、任务上下文切换时。任务扩展功能可通过任务扩展表或是单独应用编程接口的方式来实现。任务扩展表用来存放实现任务扩展处理的例程,实时内核通过查找任务扩展表来获取扩展处理的入口函数。任务管理机制30任务管理机制–任务变量:某些例程可能同时被多个任务调用,每个调用任务又期望例程中的全局或是静态变量提供不同的值。–实时内核通常提供以下关于任务变量的操作:向指定的任务中添加任务变量;删除指定任务的任务变量;获得指定任务的任务变量;获得指定任务当前拥有的任务变量的数量;获得指定任务的所有任务变量。31任务调度要解决的问题WHAT:按什么原则分配CPU—任务调度算法WHEN:何时分配CPU—任务调度的时机HOW:如何分配CPU—任务调度过程(任务的上下文切换)32任务调度任务调度的概念–任务调度的实质就是将处理器资源合理分配给适当的任务,一方面确保任务的时间约束能被满足,另一方面尽量提高处理器资源的利用率。–任务调度就是从就绪状态的任务中,挑选一个任务到处理器上运行。–操作系统中负责任务调度的程序称为任务调度程序(scheduler)或任务调度器(dispatch)。33任务调度调度点的位置:–中断服务程序的结束位置;–任务因等待资源而处于等待状态;–任务处于就绪状态时。实时内核的主要职责是要确保所有的任务都能够满足任务的时间约束特性要求。在设计调度程序时,要综合考虑以下因素:–CPU的使用率;–输入/输出设备的吞吐率;–响应时间;–公平性;–截止时间。34任务调度算法内核常用的几种任务调度算法–基于优先级调度–轮转调度–单调速率调度(RM调度)35优先级调度优先级调度算法–优先级调度就是让高优先级的任务优先得到处理的调度策略–按照正在执行的任务可否被抢占,优先级调度分为:•可抢占调度•不可抢占调度36确定优先级的方法静态优先级法:在任务创建时指定优先数,在任务运行时优先数不变动态优先级法:在任务创建时创立一个优先级,但在其生命周期内优先级可以动态变化。如等待时间长优先级可改变优先级调度37不可抢占调度(non-preemptivescheduling)–一旦某个任务占有了处理器就一直运行下去,直到该任务由于自身的原因自愿放弃处理器,任务调度程序才按优先级进行重调度,让其它任务运行。–任务在运行过程中只能被中断打断(抢占)。–中断处理程序即使唤醒了一个更高优先级的任务,当中断处理完成后只能返回到被中断的任务,只有这个任务放弃了处理器时,更高优先级的任务才能运行。优先级调度38不可抢占调度任务1任务2任务3优先级高低时间任务2就绪任务3就绪优先级调度39不可抢占调度的优点--对共享数据的保护需求较低不可抢占调度的缺点--系统的响应时间得不到保证因此,对于实时性要求较高的系统不可选择这种调度方式。优先级调度40可抢占调度(preemptivescheduling)–任何时刻都严格按照高优先级任务在
本文标题:嵌入式系统与软件(4)
链接地址:https://www.777doc.com/doc-3263254 .html