首页> 中国专利> 一种增强实时性能的任务管理方法

一种增强实时性能的任务管理方法

摘要

一种在RTEMS实时操作系统中增强实时性能的任务管理方法,包括如下步骤:A、通过发送信号量的方式调度某一个任务;B、设置同任务优先级任务就绪队列,如果根据所述某一任务的信号量的状态值确定其应该被放入就绪队列,则将该任务排到同任务优先级队列;反之则强制抢占处理器资源并执行该任务;C、为所述某一任务指定优先级抢占阀值,根据该阀值判定是否允许抢占该任务;D、当所述某一任务添加到所述同任务优先级队列中时,根据其信号量以及抢占阀值判断其所属优先级等级,并在所述同优先级就绪任务队列中定位插入位置,从而形成一个有序的任务阻塞队列。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-12-20

    未缴年费专利权终止 IPC(主分类):G06F9/46 授权公告日:20131218 终止日期:20181230 申请日:20111230

    专利权的终止

  • 2013-12-18

    授权

    授权

  • 2012-09-05

    实质审查的生效 IPC(主分类):G06F9/46 申请日:20111230

    实质审查的生效

  • 2012-07-04

    公开

    公开

说明书

技术领域

本发明涉及实时系统操作系统内核设计领域,具体涉及一种在RTEMS实时操作系统中增强实时性能的任务管理方法。

背景技术

随着实时系统的需求越来越多,规模越来越大,传统的小规模的单片机系统已经不能满足面向大规模实时控制系统的需要。实时系统在规模变大的同时,也有很多的设计因素与实时性、时间确定性产生矛盾,必须在现有实时操作系统的基础上做出更多的优化,才能让整个系统的更加稳定,具有更强的时间确定性,让应用程序开发者拥有更大的灵活性。

RTEMS作为一种开源的实时操作系统,本身的优点很多,但是如果被应用到高精度控制的实时系统中,目前还有许多缺点。主要表现在以下几点:1.任务调度采用基于优先级调度的方式,只要高优先级任务处于就绪态,低优先级的任务就立刻被抢占。2.任务规模比较大的时候,多任务争夺一个资源的时候,时间延迟波动较大,无法满足硬实时系统时间确定性的需求。3.作为同等优先级的任务就绪之后,会采用时间片乱转的调度算法进行调度。而无法控制同等优先级任务的运行顺序。4.调度算法的设计比较单一,如果根据信号量触发某个任务的运行,需要执行一系列的系统调用,比较耗时,而且也无法强制执行指定任务。

发明内容

鉴于现有RTEMS实时操作系统中的缺陷,本发明的目的在于提供一种在RTEMS实时操作系统中增强实时性能的任务管理方法,其特征在于包括如下步骤:

A、通过发送信号量的方式调度某一个任务,调度的方式有两种:一种是将该任务放入就绪队列中,等待被调度;另一种是强制执行该任务;

B、将所述就绪队列设置为同优先级任务队列,如果根据所述某一任务的信号量的状态值确定其应该被放入就绪队列,则将该所述某一任务排到同优先级任务队列;反之则强制抢占处理器资源并执行该任务;

C、为所述某一任务指定优先级抢占阀值,优先级超过该抢占阀值的任务可对所述某一任务进行抢占,而优先级小于该抢占阀值的任务则不被允许抢占该所述某一任务,系统进行调度计算之前,通过比对抢占阀值,确定是否进行任务切换;

D、当所述某一任务添加到所述同优先级任务队列中时,根据其信号量以及抢占阀值判断其所属优先级等级,并在所述同优先级任务队列中定位插入位置,从而形成一个有序的任务阻塞队列。

进一步,本发明所述的在RTEMS实时操作系统中增强实时性能的任务管理方法,其特征在于在所述步骤B中,定义同优先级任务队列辅助数据结构,对同优先级任务队列中的任务进行计数,并在系统改变任务状态和任务优先级的时候,根据该辅助数据结构进行就绪队列的任务自增或自减操作。

进一步,本发明所述的在RTEMS实时操作系统中增强实时性能的任务管理方法,其特征在于在所述步骤B中,通过系统调用可以将所述某一任务添加到同优先级任务队列的任意位置。

进一步,本发明所述的在RTEMS实时操作系统中增强实时性能的任务管理方法,其特征在于的所述系统调用针对同优先级任务队列的操作包括:将当前任务移动到指定任务ID的后继结点;或者将当前任务移动到任意指定结点。

进一步,本发明所述的在RTEMS实时操作系统中增强实时性能的任务管理方法,其特征在于在所述步骤C中,通过系统调用可以改变抢占阀值。

进一步,本发明所述的在RTEMS实时操作系统中增强实时性能的任务管理方法,其特征在于在所述步骤D中,在同优先级任务队列中定位新任务采用多链表的辅助结构实现快速定位。

本发明所述的在RTEMS实时操作系统中增强实时性能的任务管理方法通过一系列任务管理操作,提高系统的实时性,增加系统的时间确定性,减少系统在随着任务规模变大出现实时性能大幅度波动的情况。

附图说明

图1是本发明在RTEMS实时操作系统中增强实时性能的任务管理方法的流程图。

具体实施方式

为使本发明的上述目的、特征和优点更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

图1是本发明在RTEMS实时操作系统中增强实时性能的任务管理方法的流程图,包括如下步骤:

A、通过发送信号量的方式调度某一个任务,调度的方式有两种:一种是将该任务放入就绪队列中,等待被调度;另一种是强制执行该任务;

步骤A设计信号量触发任务调度机制,在RTEMS操作系统中以如下方式实现:

(1)定义信号量响应的两种操作码。

在RTEMS 4.9.0源码文件中,专门用于定义操作码全局变量的文件options.h中,为操作码集合option_set分别添加任务操作状态字标识:RTEMS_PREEMPT_ready和RTEMS_FORCE,对应直接进入就绪队列和直接进行抢占两种操作码。

(2)实现信号量触发任务调度。

在获取信号量的处理函数中,其中有两个传入参数,一个是option_set,另一个是对象ID;在RTEMS系统中表示信号量操作的参数和信号量的ID。在本方法中,作为判定是否进行调度的条件和任务ID(RTEMS中对象ID通用)。在函数体中,根据传入参数option_set的值判断语句设置函数流程分支:如果传入参数值为RTEMS_PREEMPT_ready,作为对象ID传入的任务改变状态为就绪状态,任务被放入就绪队列中,系统接下来判断是否有高于当前优先级的任务处于就绪状态,确定是否会有必要发生抢占;如果传入参数值为RTEMS_FORCE,作为对象ID传入的任务的优先级被设置为最高,并强制执行任务切换。

B、将所述就绪队列设置为同优先级任务队列,如果根据所述某一任务的信号量的状态值确定其应该被放入就绪队列,那么就将该所述某一任务排到同优先级任务队列;反之则强制抢占处理器资源并执行该任务;

步骤B同优先级任务就绪队列操作,在RTEMS操作系统中以如下步骤实现:

(1)定义同优先级任务就绪队列辅助数据结构,对同优先级任务队列中的任务进行计数,并在系统改变任务状态和改变任务优先级的时候,根据该辅助数据结构进行就绪队列的任务自增或自减操作。

在RTEMS 4.9.0源码文件thread.h文件中任务控制块结构的定义Thread_Control_struct结构中添加ready_number,标识同等优先级队列*ready中的任务的个数。

(2)对辅助数据结构的操作

在任务初始化函数将ready_number初始为0,在任务就绪功能函数_Thread_Ready()、任务唤醒功能函数_Thread_Resume()和任务状态清除功能函数_Thread_Clear_state()中实现ready_number做自增操作,在任务挂起功能函数_Threadre_Suspend()和任务临时状态设置功能函数_Thread_Set_transient()做自减操作。

在系统改变任务状态和改变任务优先级的时候,直接根据ready_number的值进行就绪队列的任务删除的操作,如果此值为零,证明当前优先级没有就绪任务,全局变量_Thread_Heir指向的即为需要获得处理器资源的任务;如果此值大于零,则不进行任务切换,当前任务控制的成员ready->next即为需要获得处理器资源的任务。

(3)增加系统调用实现将当前任务添加到*ready队列的任意位置。

本系统调用是针对*ready队列操作的。方式有两种,第一种将当前任务移动到指定任务ID的后继结点;第二种是将当前任务移动到第几个结点。通过系统调用可以将所述某一任务添加到同优先级任务队列的任意位置。

C、为所述某一任务指定优先级抢占阀值,优先级超过该抢占阀值的任务可对所述某一任务进行抢占,而优先级小于该抢占阀值的任务则不被允许抢占该所述某一任务,系统进行调度计算之前,通过比对抢占阀值,确定是否进行任务切换;

步骤C设置抢占阀值,在RTEMS操作系统中以如下步骤实现:

(1)定义抢占阀值数据域。

在RTEMS 4.9.0源码文件thread.h文件中任务控制块结构体的实体定义Thread_Control_struct结构中添加door,标识当前任务的抢占阀值。并在任务初始化函数中初始化为255。

(2)任务初始化的时候更新抢占阀值数据域。

创建任务的函数系统调用中参数需要增加传入参数,并将任务抢占阀值设置为参数指定值。通过系统调用可以改变抢占阀值。

(3)实现对任务抢占的屏蔽功能

当判断任务是否进行切换的时候,比较当前任务是否大于抢占阀值,如果成立的话,则进行任务切换;如果不成立,则不进行任务切换。

D、当所述某一任务添加到所述同优先级任务队列中时,根据其信号量以及抢占阀值判断其所属优先级等级,并在所述同优先级任务队列中定位插入位置,从而形成一个有序的任务阻塞队列。

步骤D实现多任务争夺资源的防抖动算法设计,在同优先级任务队列中采用多链表的辅助结构实现快速定位新任务。在RTEMS操作系统中以如下步骤实现:

(1)任务优先级被划分为16等级

系统将256个任务优先级分为16等级,如果任务为资源的争夺者,则系统会按照优先级的大小关系将它链接到对应等级中。

(2)系统分配辅助数据结构管理16个等级任务

任务分配16个链表头,每个链表结点的数据部分为每个结点的优先级。

(3)任务申请资源的操作约定

当任务申请资源阻塞的时候,根据任务的优先级与16除法操作,确定任务等级。确定所属等级之后,再与8做余数运算操作确定是在链表的前半部还是后半部,按照查询的方式进一步确定需要添加在阻塞链表的具体位置。

在多任务应用环境中,不使用本发明的RTEMS系统中,多个同等优先级的任务都就绪,系统只能按照当前顺序进行调度,并且其先后顺序是不能控制的;当有高优先级任务就绪的时候,系统会马上进行抢占;如果多任务申请同一资源,系统在最坏情况下要遍历32个结点。

使用了本发明系统后,多个同等优先级任务就绪,应用开发人员可以通过系统调用将任务放置到就绪队列的任意位置,从而以任意指定顺序进行调度;如果有高优先级任务就绪,系统只会在该任务大于其抢占阀值的时候发生抢占;如果多任务申请同一资源,系统在最坏情况下要遍历8个结点。

通过以上的陈述,本发明通过更加灵活的实时系统调度方法,改进了系统的实时性。

最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号