嵌入式实时操作系统的任务管理及任务调度.pdf

上传人:w**** 文档编号:71757260 上传时间:2023-02-05 格式:PDF 页数:5 大小:423.09KB
返回 下载 相关 举报
嵌入式实时操作系统的任务管理及任务调度.pdf_第1页
第1页 / 共5页
嵌入式实时操作系统的任务管理及任务调度.pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《嵌入式实时操作系统的任务管理及任务调度.pdf》由会员分享,可在线阅读,更多相关《嵌入式实时操作系统的任务管理及任务调度.pdf(5页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、-1、嵌入式实时操作系统简介11 英文名 Embedded Real-time Operation System,简写为 RTOS。定义:当外界事件或数据产生时,能够承受并以足够快的速度予以处理,其处理的结果又能在规定的时间之来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。注:在工业控制、军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。我们常常说的嵌入式操作系统都是嵌入式实时操作系统。比方 C/OS-II、eCOS 和 Linu*。故对嵌入式实时操作系统的理解应该建立在对嵌入式系统的理解之上参加对响应时间的要求。1.2.2 I

2、EEE 定义:嵌入式系统是用于控制、监视或者辅助操作机器和设备的装置。一般定义:以应用为中心、以计算机技术为根底、软件硬件可裁剪、功能、可靠性、本钱、体积、功耗格要求的专用计算机系统。1.3 分类:V*Works,uC/OS-,uClinu*,eCos,RT*C 等。2、嵌入式实时操作系统的任务管理21 任务管理:是嵌入式实时操作系统的核心和灵魂,决定了操作系统的实时性能。它通常包含优先级设置、多任务调度机制和时间确定性等局部。2.1.1 优先级设置:嵌入式操作系统支持多任务,每个任务都具有优先级,任务越重要,赋予的优先级应越高。优先级的设置分为静态优先级和动态优先级两种。静态优先级指的是每个

3、任务在运行前都被赋予一个优先级,而且这个优先级在系统运行期间是不能改变的;动态优先级则是指每个任务的优先级(特别是应用程序的优先级)在系统运行时可以动态地改变。2.1.2 多任务调度机制:任务调度主要是协调任务对计算机系统资源的争夺使用。对系统资源非常匮乏的嵌入式系统来说,任务调度尤为重要,它直接影响到系统的实时性能。通常,多任务调度机制分为基于优先级抢占式调度和时间片轮转调度。1基于优先级抢占式调度:系统中每个任务都有一个优先级,核总是将CPU 分配给处于就绪态的优先级最高的任务运行。如果系统发现就绪队列中有比当前运行任务更高的优先级任务,就把当前运行任务.z.-置于就绪队列中,调入高优先级

4、任务运行。系统采用优先级抢占式进展调度,可以保证重要的突发事件及时得到处理。2时间片轮转调度:让优先级一样的处于就绪状态的任务按时间片使用 CPU,以防止同优先级的*一任务长时间独占 CPU。在一般情况下,嵌入式实时操作系统采用基于优先级抢占式调度与时间片轮转调度相结合的调度机制。2.1.3 时间的可确定性:嵌入式实时操作系统甬数调用与效劳的执行时间应具有可确定性。系统效劳的执行时间不依赖于应用程序任务的多少。基于此特征,系统完成*个确定任务的时间是可预测的。2.2 任务管理机制:在核的设计过程中,最先应考虑的是任务的状态以及迁移时序,然后根据此状态设计相应的队列,如就绪队列、等待队列等。核时

5、钟也依赖任务的状态。可以看出,任务管理实现的核心和根底是任务状态和迁移时序。任务状态:在多任务状态中,任务要参与资源的竞争,只有在所需资源得到满足的情况下才能得到执行。然而,任务拥有的资源情况是不断变化的,这将导致任务状态也表现出不断变化的特性。不同的实时核实现式对状态的定义不尽一样,但都包括以下三种根本状态:1等待:任务在等待I/O 完成或者等待*事件的发生;2就绪:任务已经得到需要运行的资源,并等待获得处理器资源;3执行:任务获得处理器和其他所有需要的资源,相关代码正在被运行。在单处理器系统中,任时候只有一个任务处于运行状态。如果没有任任务需要运行,则核会运行一个空闲任务。任一个可以执行的

6、任务都必须处于就绪状态,实时核会从所有就绪的任务中,使用适宜的调度策略选择一个运行。当一个任务请求I/O 操作,或者等待信号量将会处于等待状态。任务状态转移:在一定条件下,任务会在不同的状态之间进展转化,称为任务状态迁移,如图 1 所示。迁移图图 1 任务状态.z.-图 2 实际实现的任务状态转换图图 2 在描述任务状态迁移的同时,也描述了任务的生存期,任务的生命期从新建态时开场直到完毕态时完毕。在给定的时刻,任务的状态一定处在这六种状态之一。新建状态是指任务被创立的过程,在这个过程中主要工作有:为任务分配TCB 和栈空间以及其他资源。当任务创立完成以后,任务就具备运行的能力了,与此同时,任务

7、进入就绪状态,并等待调度器为它分配运行的时机。当任务得到运行的时机,任务开场执行。处于运行态的任务会在任意时刻由运行态进入休眠态、就绪态或完毕状态。其中进入休眠态是任务的主动过程,这主要是任务调用了核提供的休眠函数,任务在休眠状态,如果没有其他任务唤醒它,它将永远休眠下去直到系统关闭,这种式也可用于任务同步。等待状态主要由两种原因引起,一种是等待*事件的发生,如等待信号量;第二种为任务主动等待多少个tick。最后,任务可以将自己杀死进入完毕态。图 3 任务状态迁移示意图图 3 描述了三个任务状态迁移过程。图中包含三个任务和一个调度程序。调度程序确定下一个需要投入运行的任务,因此调度程序本身也占

8、用一定的处理时间。3、嵌入式实时操作系统的任务调度3.1 任务调度:调度是核的主要职责之一,调度的主要任务就是要决定该轮到哪个任务运行。多数实时核采用基于优先级调度的算法。基于优先级的调度算法是指,每个任务根据重要程度被赋予一定的优先级,CPU 总是让处在就绪态的优先级最高的任务运行。然而,终究时让高优先级任务掌握 CPU 的使用权,有两种不同的情况,这取决于核的类型是可剥夺型的还是可剥夺型核。当调度程序决定新的任务获得CPU 的使用权时,这时核将执行任务切换。任务切换过程为:首先保存当前任务的上下文,即CPU 存放器中的全部容。这些容可以保存在任务的自己的栈中,也可以保存在TCB 中。然后,

9、将需要运行的任务的上下文从该任务的栈中重新装入CPU 的存放器,并开场运行。任务切换过程增加了应用程序的额外负荷。CPU 的部存放器越多,额外负荷就越重。3.2 调度算法.z.-时间片轮转调度算法:当两个或两个以上任务有同样优先级,核允一个任务运行事先确定的一段时间,该段时间叫做时间片,然后切换给另一个任务。核在满足以下条件时,把CPU控制权交给下一个就绪态的任务:当前任务运行的时间片到期;当前任务在时间片还没完毕时已经完成了。3.2.2 基于优先级的调度算法:每个任务都赋予优先级。任务越重要,赋予的优先级就越高。优先级的分配式可分为静态分配和动态分配的式。静态优先级是指应用程序执行过程中诸任

10、务的优先级不变。在静态优先级系统中,各个任务以及它们的时间约束在程序编译时是的。动态优先级指应用程序执行过程中,任务的优先级是可变的。Linu*采取的调度策略结合了这几种调度案。在Linu*系统中,调度算法最根本的一类就是基于优先级的调度。优先级高的任务先运行,一样优先级的任务按照轮转式进展调度。Linu*也实现了基于动态优先级的调度法。一开场,利用静态优先级的法设置任务的优先级,然而它允调度程序根据需要来提升、降低优先级。3.3 调度器实现:在整个任务管理中,任务调度无疑是系统的核心,任务调度通常由核中的调度器实现。调度器的实现与任务运行状态迁移,任务队列有密切的联系,可以说任务运行状态迁移

11、和任务队列决定了调度器的实现。调度器的主要作用是在就绪队列中选择优先级最高的任务运行,如果优先级最高的任务不止一个,则选择队头的任务运行。虽然整个调度器的功能可以用上面的几句话概括,但调度器的实现远远没有则简单,主要困难来源下面的原因:确定调度器运行的时机;中断处理程序完了后,是执行当前任务,还是马上调度;调度器的性能;调度中伴随着任务上下文的切换,尤其对处理器架构有关的上下文,应该设计良好的接口以便移植。对于实时系统来说,中断处理程序执行完毕后,应该马上执行调度,这是因为中断常常伴随着有新的任务处于就绪队列中,在这些任务中可能会有高优先级的任务就绪,所以在实时核中要求必须支持在中断后马上进展

12、任务调度。不管是在实时系统,还是在其他系统中,调度器性能显得非常重要,常常要求调度器的时间复杂度至少应该为线性,当然常数是最好的。对于不同的处理器架构,其提供的存放器,状态存放器都有很大的区别,调度器应该留出良好的接口给不同的处理器,以便以后便移植。.z.-在实现调度器时,根本上考虑了上面的几个根本问题。根据任务状态迁移、核队列等面的容,在 byCore 中实现了一个叫 scheduler()的调度程序。在 scheduler()中调用几个与硬件相关的函数,这几个函数主要用于实现任务硬件上下文的切换,这局部代码用汇编完成,并且与处理器有关。图 4 描述了 scheduler()的算法流程图。图

13、 4 scheduler()的算法流程图该调度程序的算法非常简单,首先,在允调度的情况下,如果有高优先级任务就绪,则进展任务切换。任务切换会发生在两种处理器模式下,一种是处理器处于正常的运行态,另一种发生在中断态中。因此,核使用两组函数分别处理这两种情况。在两种处理器状态下都有启动新任务和新旧任务切换函数接口实现最后的任务切换工作,这两组函数与处理器有关,并由汇编实现。启动新任务的主要功能是将任务的初始上下文复制给处理器的各个存放器,这包括通用存放器、堆栈指针存放器、状态存放器和指令指针存放器等。这些初始值在新任务创立时被初始化。启动新任务发生的时机有两种情况,第一种情况是核初始化完毕后,启动

14、第一个任务;第二种情况为任务主动完毕后,当前任务指针被置位NULL 时。任务切换发生在两个任务之间,一个是被换切换出去的任务,另一个是将要执行的任务。任务切换函数也由汇编代码实现。它所要完成的工作主要有两个,第一是将旧任务被换切换出去的任务的上下文保存到自己的栈中,第二是新任务将要执行的任务将保存在栈中的上下文复制到处理器的相关存放器中。任务切换的发生时机有:当前任务执行时间到;当前任务被高优先级任务抢占;当前任务休眠,或等待*事件发生。4、结语通过查阅相关资料,我对嵌入式实时操作系统以及嵌入式实时操作系统的任务管理、任务调度有了更进一步的了解。多嵌入式操作系统都是实时操作系统,而实时系统的调度追求的是实时性,其结果的正确性依赖于逻辑结果和产生该结果的时间。任务是任务调度的根本单位,而任务管理的容是优先级设置、多任务调度机制和时间确定性等局部。只有设置好了任务的相关容,才能很好的实现任务的调度。.z.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com