文档介绍:该【嵌入式实时操作系统任务管理及任务调度 】是由【泰山小桥流水】上传分享,文档一共【7】页,该文档可以免费在线阅读,需要了解更多关于【嵌入式实时操作系统任务管理及任务调度 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。..
1、嵌入式实时操作系统简介
-timeOperationSystem,简写为RTOS。
:当外界事件或数据产生时,能够接受并以足够快的速度予以办理,其办理的
结果又能在规定的时间之内来控制生产过程或对办理系统作出迅速响应,并控制所有实时任
务协调一致运行的嵌入式操作系统。(注:在工业控制、军事设施、航空航天等领域对系统
的响应时间有苛刻的要求,这就需要使用实时系统。我们经常说的嵌入式操作系统都是嵌入
式实时操作系统。比方μC/OS-II、eCOS和Linux。故对嵌入式实时操作系统的理解应当建
立在对嵌入式系统的理解之上加入对响应时间的要求。)
:嵌入式系统是“用于控制、督查或许协助操作机器和设施的装置”。
:以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、
成本、体积、功耗严格要求的专用计算机系统。
:VxWorks,uC/OS-Ⅱ,uClinux,eCos,RTXC等。
2、嵌入式实时操作系统的任务管理
:是嵌入式实时操作系统的核心和灵魂,决定了操作系统的实时性能。它
平常包括优先级设置、多任务调动系统和时间确定性等部分。
:嵌入式操作系统支持多任务,每个任务都拥有优先级,任务越重要,
赐予的优先级应越高。优先级的设置分为静态优先级和动向优先级两种。静态优先级指的是
每个任务在运行前都被赐予一个优先级,而且这个优先级在系统运行时期是不能够改变的;动
态优先级则是指每个任务的优先级(特别是应用程序的优先级)在系统运行时能够动向地改
变。
:任务调动主若是协调任务对计算机系统资源的强抢使用。对系统
资源特别困穷的嵌入式系统来说,任务调动特别重要,它直接影响到系统的实时性能。平常,
多任务调动系统分为鉴于优先级抢占式调动和时间片轮转调动。(1)鉴于优先级抢占式调
度:系统中每个任务都有一个优先级,内核老是将CPU分派给处于就绪态的优先级最高的
word教育资料
..
任务运行。若是系统发现就绪行列中有比目前运行任务更高的优先级任务,就把目前运行任
务置于就绪行列中,调入高优先级任务运行。系统采用优先级抢占方式进行调动,能够保证
重要的突发事件实时获得办理。(2)时间片轮转调动:让优先级同样的处于就绪状态的任
务准时间片使用CPU,以防备同优先级的某一任务长时间独占CPU。在一般情况下,嵌入式实时操作系统采用鉴于优先级抢占式调动与时间片轮转调动相联合的调动系统。
:嵌入式实时操作系统甬数调用与服务的履行时间应拥有可确定性。
系统服务的履行时间不依靠于应用程序任务的多少。鉴于此特点,系统完成某个确定任务的
时间是可展望的。
:在内核的设计过程中,最先应试虑的是任务的状态以及迁移时序,
尔后依照此状态设计相应的行列,如就绪行列、等待行列等。内核时钟也依靠任务的状态。
能够看出,任务管理实现的核心和基础是任务状态和迁移时序。
:在多任务状态中,任务要参加资源的竞争,只有在所需资源获得悉足的
情况下才能获得履行。但是,任务拥有的资源情况是不断变化的,这将致使任务状态也表现
出不断变化的特点。不同样的实时内核实现方式对状态的定义不尽同样,但都包括以下三种基本状态:(1)等待:任务在等待I/O完成或许等待某事件的发生;(2)就绪:任务已经得
到需要运行的资源,并等待获得办理器资源;(3)履行:任务获得办理器和其他所有需要的资源,有关代码正在被运行。在单办理器系统中,任何时候只有一个任务处于运行状态。
若是没有任何任务需要运行,那么内核会运行一个安闲任务。任何一个能够履行的任务都必
须处于就绪状态,实时内核会从所有就绪的任务中,使用合适的调动策略选择一个运行。当一个任务恳求I/O操作,或许等待信号量将会处于等待状态。
:在必然条件下,任务会在不同样的状态之间进行转变,称为任务状态迁移,如图1所示。
word教育资料
..
图1任务状态迁移图
2实质实现的任务状态变换图
2在描绘任务状态迁移的同时,也描绘了任务的生计周期,任务的生命期从头建态时
开始直到结束态时结束。在给定的时刻,任务的状态必然处在这六种状态之一。新建状态是指任务被创立的过程,在这个过程中主要工作有:为任务分派TCB和栈空间以及其他资源。
当任务创立完成此后,任务就具备运行的能力了,与此同时,任务进入就绪状态,并等待调
度器为它分派运行的机会。当任务获得运行的机会,任务开始履行。处于运行态的任务会在
随意时刻由运行态进入休眠态、就绪态或结束状态。其中进入休眠态是任务的主动过程,这
主若是任务调用了内核供应的休眠函数,任务在休眠状态,若是没有其他任务唤醒它,它将
永远休眠下去直到系统封闭,这种方式也可用于任务同步。等待状态主要由两种原因惹起,
一种是等待某事件的发生,如等待信号量;第二种为任务主动等待多少个tick。最后,任务
能够将自己杀死进入结束态。
word教育资料
..
3任务状态迁移表示图
3描绘了三个任务状态迁移过程。图中包括三个任务和一个调动程序。调动程序确定下一个需要投入运行的任务,因此调动程序自己也占用必然的办理时间。
3、嵌入式实时操作系统的任务调动
1任务调动:调动是内核的主要职责之一,调动的主要任务就是要决定该轮到哪个任务
运行。多半实时内核采用鉴于优先级调动的算法。
鉴于优先级的调动算法是指,每个任务根
据重要程度被赐予必然的优先级,
CPU老是让处在就绪态的优先级最高的任务运行。
但是,
终究何时让高优先级任务掌握
CPU的使用权,有两种不同样的情况,这取决于内核的种类(是
可剥夺型的仍是可剥夺型内核)。当调动程序决定新的任务获得
CPU的使用权时,这时内
核将履行任务切换。任务切换过程为:第一保留目前任务的上下文,即
CPU存放器中的全
部内容。这些内容能够保留在任务的自己的栈中,也能够保留在
TCB中。尔后,将需要运
行的任务的上下文从该任务的栈中从头装入
CPU的存放器,并开始运行。任务切换过程增
加了应用程序的额外负荷。
CPU的内部存放器越多,额外负荷就越重。
2调动算法
:当两个或两个以上任务有同样优先级,内核赞同一个任务运
行起初确定的一段时间,该段时间叫做时间片,尔后切换给另一个任务。内核在知足以下条
件时,把CPU控制权交给下一个就绪态的任务:①目前任务运行的时间片到期;②目前任
务在时间片还没结束时已经完成了。
word教育资料
..
:每个任务都赐予优先级。任务越重要,赐予的优先级就越
高。优先级的分派方式可分为静态分派和动向分派的方式。静态优先级是指应用程序履行过程中诸任务的优先级不变。在静态优先级系统中,各个任务以及它们的时间拘束在程序编译时是已知的。动向优先级指应用程序履行过程中,任务的优先级是可变的。
Linux采用的调动策略联合了这几种调动方案。在Linux系统中,调动算法最基本的一类
就是鉴于优先级的调动。优先级高的任务先运行,同样优先级的任务依照轮转方式进行调动。
Linux也实现了鉴于动向优先级的调动方法。一开始,利用静态优先级的方法设置任务的优
先级,但是它赞同调动程序依照需要来提升、降低优先级。
3调动器实现:在整个任务管理中,任务调动无疑是系统的核心,任务调动平常由内核中的调动器实现。调动器的实现与任务运行状态迁移,任务行列有亲密的联系,能够说任务
运行状态迁移和任务行列决定了调动器的实现。调动器的主要作用是在就绪行列中选择优先
级最高的任务运行,若是优先级最高的任务不仅一个,则选择队头的任务运行。诚然整个调动器的功能能够用上面的几句话归纳,但调动器的实现远远没有那么简单,主要困难根源下面的原因:①.确定调动器运行的机会;②.中止办理程序完了后,是履行目前任务,仍是
马上调动;③.调动器的性能;④.调动中陪伴着任务上下文的切换,特别对办理器架构有关的上下文,应当设计优秀的接口以便移植。
关于实时系统来说,中止办理程序履行完成后,应当马上履行调动,这是因为中止经常
陪伴着有新的任务处于就绪行列中,在这些任务中可能会有高优先级的任务就绪,因此在实
时内核中要求必定支持在中止后马上进行任务调动。不论是在实时系统,仍是在其他系统中,
调动器性能显得特别重要,经常要求调动器的时间复杂度最少应当为线性,自然常数是最好的。关于不同样的办理器架构,其供应的存放器,状态存放器都有很大的差异,调动器应当留出优秀的接口给不同样的办理器,以便此后方便移植。
在实现调动器时,基本上考虑了上面的几个基本问题。依照任务状态迁移、内核行列等方面的内容,在byCore中实现了一个叫scheduler( )的调动程序。在scheduler( )中调用几个与硬件有关的函数,这几个函数主要用于实现任务硬件上下文的切换,这部分代码用汇编完成,
而且与办理器有关。图4描绘了scheduler( )的算法流程图。
word教育资料
..
4scheduler( )的算法流程图
该调动程序的算法特别简单,第一,在赞同调动的情况下,若是有高优先级任务就绪,
则进行任务切换。任务切换会发生在两种办理器模式下,一种是办理器处于正常的运行态,
另一种发生在中止态中。因此,内核使用两组函数分别办理这两种情况。在两种办理器状态
下都有“启动新任务”和“新旧任务切换”函数接口实现最后的任务切换工作,这两组函数与处
理器有关,并由汇编实现。“启动新任务”的主要功能是将任务的初始上下文复制给办理器的
各个存放器,这包括通用存放器、货仓指针存放器、状态存放器和指令指针存放器等。这些
初始值在新任务创立时被初始化。启动新任务发生的机会有两种情况,第一种情况是内核初
始化完成后,启动第一个任务;第二种情况为任务主动结束后,目前任务指针被置位NULL
word教育资料
..
时。“任务切换”发生在两个任务之间,一个是被换切换出去的任务,另一个是将要履行的任
务。任务切换函数也由汇编代码实现。它所要完成的工作主要有两个,第一是将旧任务(被
换切换出去的任务)的上下文保留到自己的栈中,第二是新任务(将要履行的任务)将保留
在栈中的上下文复制到办理器的有关存放器中。任务切换的发活力遇有:①目前任务履行时
间到;②目前任务被高优先级任务抢占;③目前任务休眠,或等待某事件发生。
4、结语
经过查阅有关资料,我对嵌入式实时操作系统以及嵌入式实时操作系统的任务管理、任
务调动有了更进一步的认识。很多嵌入式操作系统都是实时操作系统,而实时系统的调动追
求的是实时性,其结果的正确性依靠于逻辑结果和产生该结果的时间。任务是任务调动的基
本单位,而任务管理的内容是优先级设置、多任务调动系统和时间确定性等部分。只有设置
好了任务的有关内容,才能很好的实现任务的调动。
word教育资料