文档介绍:该【嵌入式实时操作系统任务管理及任务调度 】是由【泰山小桥流水】上传分享,文档一共【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教育资料