注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
unrulife的个人空间 https://home.eeworld.com.cn/space-uid-462700.html [收藏] [复制] [分享] [RSS] 这是一个快乐的地方,如果你不快乐了,常进来转转!
日志

RTOS任务管理与任务调度

已有 1239 次阅读2014-3-14 20:18 |个人分类:嵌入式开发| 控制系统, system, 能力

RTOS,即:实时系统(Real-time operating system),实时系统能够在指定或者确定的时间内完成系统功能和外部或内部、同步或异步时间做出响应的系统。它的正确性不仅依赖系统计算的逻辑结果,还依赖于产生这个结果的时间。因此实时系统应该在事先先定义的时间范围内识别和处理离散事件的能力;系统能够处理和储存控制系统所需要的大量数据。

    下面简单介绍下RTOS的一些特点:

一、时间约束性

  实时系统的任务具有一定的时间约束(截止时间)。根据截止时间,实时系统的实时性分为“硬实时”和“软实时”。硬实时是指应用的时间需求能够得到完全满足,否则就造成重大安全事故,甚至造成重大的生命财产损失和生态破坏,如在航空航天、军事、核工业等一些关键领域中的应用。软实时是指某些应用虽然提出时间需求,但实时任务偶尔违反这种需求对系统运行及环境不会造成严重影响,如监控系统等和信息采集系统等。

二、可预测性

  可预测性是指系统能够对实时任务的执行时间进行判断,确定是否能够满足任务的时限要求。由于实时系统对时间约束要求的严格性,使可预测性称为实时系统的一项重要性能要求。除了要求硬件延迟的可预测性以外,还要求软件系统的可预测性,包括应用程序的响应时间是可预测的,即在有限的时间内完成必须的工作;以及操作系统的可预测性,即实时原语、调度函数等运行开销应是有界的,以保证应用程序执行时间的有界性。

三、可靠性

  大多数实时系统要求有较高的可靠性。在一些重要的实时应用中,任何不可靠因素和计算机的一个微小故障,或某些特定强实时任务(又叫关键任务)超过时限,都可能引起难以预测的严重后果。为此,系统需要采用静态分析和保留资源的方法及冗余配置,使系统在最坏情况下都能正常工作或避免损失。可靠性已成为衡量实时系统性能不可缺少的重要指标。

四、与外部环境的交互作用性

  实时系统通常运行在一定的环境下,外部环境是实时系统不可缺少的一个组成部分。计算机子系统一般是控制系统,它必须在规定的时间内对外部请求做出反应。外部物理环境往往是被控子系统,两者互相作用构成完整的实时系统。大多数控制子系统必须连续运转以保证子系统的正常工作或准备对任何异常行为采取行动。   

当前的实时性操作系统比以前的更加复杂,有以下特点:

1、多任务类型   2、约束的复杂性    3、具有短暂超载的特点

    任务的管理:

1、任务的状态,任务拥有的资源情况是不断变化的,导致任务状态也表现出不断变化的特性。不同的实时内核实现方式对任务状态的定义不尽相同,但是都可以概括为三种基本的状态:执行状态  就绪状态   等待状态

任务会在不同的状态之间进行转换,即任务状态的变迁:对于处于就绪状态的任务,获得CPU后,就处于执行状态。对于执行状态的任务如果被高优先级任务所抢占,任务又会回到就绪状态。处于执行状态的任务如果需要等待资源(除CPU之外的其他资源),任务会被切换到等待状态。处于等待状态的任务,如果需要的资源(除CPU之外的其他资源)得到满足,就会转换为就绪状态,等待被调度执行。多个任务进行状态转换的过程需要一个调度程序,调度程序用来确定下一个需要投入执行的任务

2、任务切换,保存当前任务的上下文,并恢复需要执行的任务的上下文的过程。当发生任务切换时,当前正在运行的任务的上下文就需要通过该任务的任务控制块保存起来,把需要投入运行的任务的上下文从对应的任务控制块中恢复出来,任务切换将导致任务状态发生变化,任务切换的步骤:1保存当前任务上下文环境  2更新当前处于运行状态的任务的任务控制块的内容,如把任务的状态由运行状态改变为就绪或是等待状态  3把任务的任务控制块移到相应的队列  4选择另一个任务进行执行,调度  5改变需要投入运行的任务的任务控制块的内容,把任务的状态变为运行状态  6根据任务控制块,恢复需要投入运行的任务的上下文环境。

3、任务管理机制:设置任务属性可以用来设置任务的抢占、时间片等特性,以确定是否允许任务在执行过程中被抢占或是对同优先级任务采用时间片轮转方式运行等,改变任务优先级用来根据需要改变任务的当前优先级,获取任务信息获得任务的当前优先级、任务的名字、任务的上下文、任务的状态等内容,便于用户进行决策。

1、创建任务,过程即为分配任务控制块的过程,在创建任务时,通常需要确定任务的名字和任务的优先级等内容,确立任务所能使用的堆栈区域,在任务创建成功后,通常会为用户返回一个标识该任务的ID,以实现对任务的引用管理  2、删除任务,把任务从系统中去掉,释放对应的任务控制块   3、挂起任务,把任务变为等待状态  4、解挂任务,可通过解挂任务操作把任务转换为就绪状态   5、任务延时,一种特殊的挂起任务的方法

    任务的调度: 

    为了精确管理“时间”资源,已达到实时性和与预测性要求,并能够满足是实时系统的新要求,需用实时调度理论对任务进行调度和可调度性分析。任务调度技术包括调度策略和可调度性分析方法,两者是紧密结合的。任务调度技术研究的范围包括任务使用系统资源(包括处理机、内存、I/O、网络等资源)的策略和机制,以及提供判断系统性能是否可预测的方法和手段。例如,什么时候调度任务运行、在哪运行(当系统为多处理机系统或分布式系统时)、运行多长时间等等;以及判断分析用一定参数描述的实时任务能否被系统正确调度。

    任务是RTOS中最重要的操作对象,每个任务在RTOS的调用下由CPU分时执行。任务的调度目前主要有时间分片式、轮流查询式和优先抢占式三种,不同的RTOS可能支持其中一种或几种,其中优先抢占式对实时性的支持最好。RTOS管理下的系统CPU和系统资源的时间是同时分配给不同任务的,这样看起来就像许多任务在同时执行,但实际上每个时刻只有一个在执行,也就是当前任务,休眠的任务则是在存储器中保留其插上下文背景,一量切换为当前任务即可从上次执行的末尾继续执行任务。任务的切换有两种原因。当一个任务正常地结束时,它就把CPU控制权交给RTOS,RTOS则检查任务队列中的所有任务,判断下面哪个任务的优先级最高,需要先执行。另一种情况是在一个任务执行时,一个优先级更高的任务发生了中断,这时RTOS就将当前任务的上下文保存起来,切换到中断任务。RTOS经常性地整理任务队列,删除结束的任务,增加新的要执行的任务,并将其按照优先级从大到小的顺序排列起来,这样可以合理地在各个任务之间分配系统资源。实现多任务的关键在于合理地将系统功能分解为各个任务模块。

  给定一组实时任务和系统资源,确定每个任务何时何地执行的整个过程就是调度。在非实时系统中,调度的主要目的是缩短系统平均响应时间,提高系统资源利用率,或优化某一项指标;而实时系统中调度的目的则是要尽可能地保证每个任务满足他们的时间约束,及时对外部请求做出响应。实时调度技术通常有多种划分方法,常用以下两种。

抢占式调度和非抢占式调度

  1)抢占式调度通常是优先级驱动的调度。每个任务都有优先级,任何时候具有最高优先级且已启动的任务先执行。一个正在执行的任务放弃处理器的条件为:自愿放弃处理器(等待资源或执行完毕);有高优先级任务启动,该高优先级任务将抢占其执行。除了共享资源的临界段之外,高优先级任务一旦准备就绪,可在任何时候抢占低优先级任务的执行。抢占式调度的优点是实时性好、反应快,调度算法相对简单,可优先保证高优先级任务的时间约束,其缺点是上下文切换多。而非抢占式调度是指不允许任务在执行期间被中断,任务一旦占用处理器就必须执行完毕或自愿放弃。其优点是上下文切换少;缺点是在一般情况下,处理器有效资源利用率低,可调度性不好。

静态表驱动策略和优先级驱动策略

  2)静态表驱动策略(Static Table-Driven Scheduling)是一中离线调度策略,指在系统运行前根据各任务的时间约束及关联关系,采用某种搜索策略生成一张运行时刻表。这张运行时刻表与列车运行时刻表类似,指明了各任务的起始运行时刻及运行时间。运行时刻表一旦生成就不再发生变化了。在系统运行时,调度器只需根据这张时刻表启动相应的任务即可。由于所有调度策略在离线情况下指定,因此调度器的功能被弱化,只具有分派器(Dispatcher)的功能。

  优先级驱动策略指按照任务优先级的高低确定任务的高低确定任务的执行顺序。优先级驱动策略又分为静态优先级调度策略。静态优先级调度是指任务的优先级分配好之后,在任务的运行过程中,优先级不会发生改变。静态优先级调度又称为固态优先级调度。动态优先级调度是指任务的优先级可以随着时间或系统状态的变化而发生变化。

 

转载自新浪心善渊的博客

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章