一种基于分组的实时操作系统双优先级任务调度节能方法

文档序号:6542882阅读:288来源:国知局
一种基于分组的实时操作系统双优先级任务调度节能方法
【专利摘要】本发明涉及一种基于分组的实时操作系统双优先级任务调度节能方法,不同组的任务之间,任务调度仅考虑任务的普通优先级,高优先级的任务能直接抢占低优先级任务;同组任务之间,任务调度不仅参考任务的普通优先级,还要考虑任务的阈值优先级,只有任务的普通优先级高于被抢占任务的阈值优先级时,抢占才可能发生。有益的效果是:通过给每个任务赋予两个与任务调度相关的优先级,减少任务运行中的抢占次数和上下文切换次数,降低任务运行能耗。对任务分组的方法,消除了双优先级调度对不同组任务运行的干扰,保证了系统的可靠性和实时性。
【专利说明】—种基于分组的实时操作系统双优先级任务调度节能方法
【技术领域】
[0001]本发明涉及基于高可靠实时系统软件节能【技术领域】,特别是涉及一种基于分组的实时操作系统双优先级任务调度节能方法。
【背景技术】
[0002]高可靠实时系统广泛用于航空、航天、电力等重要关键领域,保证关键任务可靠、稳定、安全运行。随着计算机技术的进步,高可靠实时系统的体积越来越小,重量越来越轻,功能越来越强,不断向智能化方向发展。在无人区或者恶劣环境条件下,高可靠实时系统大多采用电池、化学反应和自然发电技术来保证能源供给,然而电池储能容量有限,化学反应和自然发电技术容易受到外界环境的干扰,不能保证高可靠实时系统能源供给的可靠性和实时性,因此研究降低高可靠实时系统运行能耗的方法,能够减少系统能量需求,提高能源供给的可靠性和稳定性。
[0003]目前,学术和工业界对实时系统的节能技术主要从硬件、操作系统和应用软件三个方向进行研究,硬件上的电能管理主要作用于处理器和外设,通过使用工业电能管理标准“高级配置和电源管理接口”(ACPI),英特尔、AMD、IBM和威盛等处理器生产商采用调频和调压技术,降低处理器频率和电压,减少处理器运行能耗。外设通常具有多种运行模式,每种模式消耗的电能不同,当外设满负荷运行时,通常处于高能耗模式,当外设空闲时,为了节省电能,它将从高能耗模式转换到低能耗模式,由于外设模式转换过程也会带来电能开销,因此应用于外设的节能技术主要在于如何优化外设模式转换,常用的外设能耗模型是能耗状态机(PSM)。操作系统层的节能技术主要是动态电能管理(DPM)和任务调度技术的结合,根据任务的执行时间、截止期和周期等属性,在保证任务可调度性的前提下,动态调整处理器的频率,降低处理器的速度,延长任务的执行时间,进而减少处理器等硬件资源的空闲时间,降低系统能耗。应用软件节能技术种类较多,主要对系统中耗能构件进行管理,如调整屏幕背光强度,管理系统中任务的运行,配置系统能耗需求等。
[0004]高可靠实时系统具有高可靠和强实时性要求,上面的节能技术大多利用了 ACPI接口对处理器等硬件资源的电压和频率进行调整,然而,调频和调压技术会对系统的可靠性造成一定的影响,难以保证系统运行的可靠性和实时性,因此上文的节能技术难以适应高可靠实时系统的需求。

【发明内容】

[0005]本发明的目的在于克服上述已有节能方法采用调频、调压带来的可靠性低,实时性差的问题,提供一种基于分组的实时操作系统双优先级任务调度节能方法,减少实时操作系统特定分组的任务上下文切换次数,在降低系统能耗的同时满足高可靠实时系统的可靠性和实时性需求。
[0006]一种基于分组的实时操作系统双优先级任务调度节能方法,其特征在于:双优先级定义:在任务控制块中为任务定义两个运行时优先级:普通优先级和阈值优先级,并且满足阈值优先级不低于普通优先级;基于分组的双优先级任务调度方法步骤如下:
[0007]步骤1:首先,根据上文对任务的定义,将任务划分为系统任务和自定义任务;所述系统任务指为操作系统提供系统功能服务,运行于操作系统中的服务程序;所述自定义任务指由用户开发运行或安装于操作系统平台之上,为用户提供特定服务功能的应用程序;
[0008]步骤2:对自定义任务:根据其优先级高低做分组操作,以自定义任务的优先级范围为[Min, Max],当将[Min, Max]中每一级优先级对应的自定义任务各分为一组时,自定义任务最多分为Max-Min+Ι组;当将[Min, Max]中所有自定义任务全部分为一组时,自定义任务最少分为I组;
[0009]对系统任务,不论其优先级高低,将其全部分为I组;
[0010]步骤3:最后,整个系统的任务分组数等于自定义任务的分组数与系统任务分组数之和,即分组数处于[2,Max-Min+2]之间。
[0011]本发明提出的基于分组的实时操作系统双优先级任务调度节能方法,不同组的任务之间,任务调度仅考虑任务的普通优先级,高优先级的任务能直接抢占低优先级任务;同组任务之间,任务调度不仅参考任务的普通优先级,还要考虑任务的阈值优先级,只有任务的普通优先级高于被抢占任务的阈值优先级时,抢占才可能发生。
[0012]本发明与【背景技术】相比,具有的有益的效果是:
[0013](I)通过给每个任务赋予两个与任务调度相关的优先级,减少任务运行中的抢占次数和上下文切换次数,降低任务运行能耗。
[0014](2)对任务分组的方法,消除了双优先级调度对不同组任务运行的干扰,保证了系统的可靠性和实时性。
【专利附图】

【附图说明】
[0015]图1是基于分组的双优先级任务调度结构图;
[0016]图2是基于分组的双优先级任务调度流程图;
[0017]图3是任务上下文切换计算时间的统计分布图。
【具体实施方式】
[0018]本实施例基于分组的双优先级任务调度方法如下:
[0019]基于分组的双优先级任务调度方法由双优先级和分组两个步骤组成,每个步骤如下所示:
[0020]2a)双优先级定义
[0021]在任务控制块中为任务定义两个运行时优先级:普通优先级和阈值优先级。并且满足阈值优先级不低于普通优先级。普通优先级与阈值优先级在任务创建时被初始化,任务的普通优先级继承了其父的普通优先级的值,待任务开始运行时,通过系统调用对普通优先级和阈值优先级重新赋值。
[0022]确定阈值优先级的算法过程:
[0023](I)初始化任务属性值,按普通优先级从低到高为任务排序;
[0024](2)取优先级最低的任务,计算该任务在当前属性下的最坏响应时间;[0025](3)判断该任务的最坏响应时间与截止期的大小;
[0026](4)如果小于截止期,则阈值优先级分配成功,如果所有任务已分配完毕,则进入
(6),否则返回(2)继续分配下一个任务;
[0027](5)如果大于等于截止期,则提高阈值优先级,如果阈值优先级高于最大值,则分配不成功,程序结束,否则返回(3)继续执行;
[0028]( 6 )所有任务分配成功,程序结束。
[0029]2b)任务分组
[0030]定义1:系统任务指为操作系统提供系统功能服务,运行于操作系统中的服务程序,如时钟中断,调度程序,驱动程序等。
[0031]定义2:自定义任务指由用户开发运行或安装于操作系统平台之上,为用户提供特定服务功能的应用程序,如各种控制程序等。
[0032]任务分组的过程如下:
[0033](I)首先,根据上文对任务的定义,将任务划分为系统任务和自定义任务;
[0034](2)在(I)中分组的基础上,对自定义任务,根据其优先级高低对其继续做进一步分组操作,假设自定义任务的优先级范围为[Min, Max],如果将[Min, Max]中每一级优先级对应的自定义任务各分为一组,则自定义任务最多可以分为Max-Min+Ι组;如果将[Min, Max]中所有自定义任务全部分为一组,则自定义任务最少可以分为I组;
[0035](3)对系统任务,不论其优先级高低,将其全部分为I组;
[0036](4)最后,整个系统的任务分组数等于自定义任务的分组数与系统任务分组数之和,即分组数处于[2,Max-Min+2]之间。
[0037]自定义任务与系统任务的区别方法如下:
[0038]在任务控制块中定义自定义任务标志Is_Defined, Is_Def ined默认值为O,如果任务为自定义任务,则将Is_Defined置为I。
[0039]根据上文分组方法,令Max-Min+1 = n,按照任务优先级高低和自定义与否将系统中所有任务最多分为n+1组,任务的分组参考图1实现如下:
[0040]分组1:如果任务标志Is_Def ined为0,则该任务为系统任务,将其加入系统任务组,记为G1 ;
[0041]分组2:如果任务优先级pri e L1且任务标志IS_Defined为1,则该任务为L1级自定义应用任务,将其加入L1级自定义应用任务组,记为G2 ;
[0042]......[0043]分组η:如果任务优先级pri e Ln且任务标志Is_Def ined为I,则该任务为Ln级自定义应用任务,将其加入Ln级自定义应用任务组,记为Gn ;
[0044]分组n+1:如果任务优先级pri e Ln+1且任务标志IS_Defined为1,则该任务为Ln+1级自定义应用任务,将其加入Ln+1级自定义应用任务组,记为Gn+1。
[0045]基于分组的双优先级调度方法能够隔离不同组任务运行产生的干扰,在不同组的任务之间,任务调度仅考虑任务的普通优先级,高优先级的任务能够直接抢占低优先级任务;在同组任务之间,任务调度不仅涉及任务的普通优先级,还要考虑任务的阈值优先级,只有任务的普通优先级高于其它任务的阈值优先级时,抢占才可能发生。而且,任务调度不能对任务主动放弃CPU的情形产生任何影响。[0046]将当前执行任务记为prev,下一个待执行的任务记为next,基于分组的双优先级任务调度过程参照图2实现如下:
[0047](1)当系统中首个任务运行时,如果任务为非自定义任务,则任务调度优先级与其普通优先级相等;如果任务为自定义任务,则在任务调入CPU前,将任务的调度优先级提升为其阈值优先级。
[0048](2)如果任务prev和next均为非自定义任务,则维持原来调度策略不变,如果prev是主动放弃CPU,则主动调用schedule O函数触发调度,如果prev是被next抢占,则比较与next普通优先级高低,如果prev优先级低于next,则设置抢占标志位,被动调用schedule O函数触发调度。
[0049](3)如果prev为非自定义任务,next为自定义任务,则调度情形与(2)中相同,只是在next被调入CPU前,需将其调度优先级提升为阈值优先级。
[0050](4)如果prev为自定义任务,next为非自定义任务,如果任务prev主动放弃CPU,则其主动调用schedule O触发调度,如果任务prev被next抢占,则next的普通优先级仅需高于prev的普通优先级,任务prev被动调用schedule O函数触发调度。而且,任务prev在进入就绪队列前,需将其调度优先级从阈值优先级恢复为普通优先级。
[0051](5)如果任务prev和next均为自定义任务,如果任务prev主动放弃CPU,则其主动调用schedule O函数触发调度;如果任务prev和next属于同一组,且任务next抢占任务prev,则任务next的普通优先级必须高于prev的阈值优先级,而且,prev在换出前,需将其调度优先级恢复为普通优先级,next换入前,需将其调度优先级提升为阈值优先级。如果任务prev和next属于不同组,则调度过程与(4)相同。
[0052]采用本发明的步骤,使得任务运行能耗降低,任务运行能耗的评估为:
[0053]任务运行产生的能耗主要分为两类:一是任务运行必须消耗的能量,叫基础能耗;二是由于外界环境对任务运行造成的干扰带来的额外能耗,叫辅能耗。基础能耗由系统硬件资源直接产生,它等于任务在系统各硬件资源上花费的计算时间与硬件资源功率乘积的累加和。辅能耗由任务运行过程中的上下文切换产生,上下文切换包括主动上下文切换和被动上下文切换,辅能耗则由主动上下文切换与被动上下文切换的次数之和与上下文切换平均能耗的乘积得来。
[0054]任务运行能耗的评估公式如下所示:
【权利要求】
1.一种基于分组的实时操作系统双优先级任务调度节能方法,其特征在于:双优先级定义:在任务控制块中为任务定义两个运行时优先级:普通优先级和阈值优先级,并且满足阈值优先级不低于普通优先级;基于分组的双优先级任务调度方法步骤如下: 步骤1:首先,根据上文对任务的定义,将任务划分为系统任务和自定义任务;所述系统任务指为操作系统提供系统功能服务,运行于操作系统中的服务程序;所述自定义任务指由用户开发运行或安装于操作系统平台之上,为用户提供特定服务功能的应用程序;步骤2:对自定义任务:根据其优先级高低做分组操作,以自定义任务的优先级范围为[Min, Max],当将[Min, Max]中每一级优先级对应的自定义任务各分为一组时,自定义任务最多分为Max-Min+Ι组;当将[Min, Max]中所有自定义任务全部分为一组时,自定义任务最少分为I组; 对系统任务,不论其优先级高低,将其全部分为I组; 步骤3:最后,整个系统的任务分组数等于自定义任务的分组数与系统任务分组数之和,即分组数处于[2,Max-Min+2]之间。
【文档编号】G06F1/32GK103914346SQ201410133090
【公开日】2014年7月9日 申请日期:2014年4月3日 优先权日:2013年12月16日
【发明者】董云卫, 顾斌, 葛永琪, 杨春鑫 申请人:西北工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1