本发明涉及一种低安全关键任务调度方法,特别涉及一种基于回收再分配的低安全关键任务调度方法。
背景技术:
发表于ieeethe20thasiaandsouthpacificdesignautomationconference2015年版630-635的文章“enhancedpartitionedschedulingofmixed-criticalitysystemsonmulticoreplatforms”提出了一种双分区混合关键任务(dual-partitionedmixed-criticality,dpm)调度方法。该调度方法针对低安全关键任务采用核间迁移的方法来保证低安全关键任务的调度成功率。
该方法虽然能够在一定程度上提高低安全关键任务的调度成功率,但是有很大一部分低安全关键任务并满足其提出的核间迁移的条件,因此会有一部分低安全关键任务仍无法顺利执行,且其没有利用任务执行过程中产生的slack时隙,增加了处理器的空转期,降低了处理器的利用率。
技术实现要素:
为了克服现有低安全关键任务调度方法处理器利用率低的不足,本发明提供一种基于回收再分配的低安全关键任务调度方法。该方法在系统开始运行时,对系统中由于任务执行而产生的slack时隙进行保存,每一个要保存的slack时隙都需要记录其空闲时段长度length和死限时间ds,将slack时隙按照死限时间ds递增的顺序保存在时隙队列sq中;同时对被迫中止执行的低安全关键任务进行回收,每一个被回收的任务需要记录其剩余执行时间cs和任务死限时间dw,按照任务优先级递减的顺序保存在任务回收队列req_c中。取出任务回收队列req_c中优先级最高的任务,根据任务死限时间和空闲时隙slack的死限时间的比较,找到可以对任务进行调度的slack时隙,对任务进行再分配。本发明采用回收再分配方法可以提高低安全关键任务的调度成功率,同时,slack空闲时隙的利用减少了处理器的空转期,提高了处理器的利用率。
本发明解决其技术问题所采用的技术方案:一种基于回收再分配的低安全关键任务调度方法,其特点是包括以下步骤:
步骤一、在系统开始运行时,使用一个全局的空闲时隙队列sq对任务执行产生的slack时隙sq进行回收。当一个任务执行完毕后,记录其空闲时隙长度length,由公式(1)计算得到;同时记录空闲时隙的死限时间ds。将空闲时隙sq以死限时间ds递增的顺序存放在空闲时隙队列sq中。
式中,ci表示任务的最坏执行时间,
步骤二、在任务调度过程中,对被迫中止执行的低安全关键任务进行回收,在进行回收时,记录任务的剩余执行时间
式中,
步骤三、判断回收队列req_c是否为空,若为空,则表示被迫终止的低安全关键任务都已经完成再分配,跳转步骤九;若不为空,跳转步骤四。
步骤四、从回收队列req_c中取出优先级最高的低安全关键任务wlsk,同时找出空闲时隙队列sq中死限时间大于任务wlsk死限时间的空闲时段sq。
步骤五、判断在空闲时段sq的时间区间内,任务wlsk是否获取到执行所需的资源,如果获取到执行所需资源,跳转步骤六;如果未获取到执行所需资源,跳转步骤九。
步骤六、判断空闲时段sq的时段长度是否大于任务剩余执行时间,如果空闲时段时间小于任务剩余执行时间,跳转步骤七;如果空闲时段时间大于任务剩余执行时间,跳转步骤八;如果空闲时段时间等于任务剩余执行时间,跳转步骤十。
步骤七、将任务wlsk分配到该空闲时段sq执行,这种情况下,空闲时段sq会被消耗完,但是任务并没有执行完毕。在回收队列req_c中更新任务wlsk的剩余执行时间
式中,
步骤八、将任务wlsk分配到该空闲时段sq执行,这种情况下,任务wlsk会执行完毕,但是空闲时段sq并不会被消耗完。在空闲时段队列sq中更新空闲时段sq的长度信息lengthn,由公式(4)计算得到;跳转步骤十。
式中,lengthn表示空闲时段sq执行任务wlsk之后的长度,lengtho表示空闲时段sq执行任务wlsk之前的长度,
步骤九、任务再分配失败。
步骤十、任务再分配成功。
本发明的有益效果是:该方法在系统开始运行时,对系统中由于任务执行而产生的slack时隙进行保存,每一个要保存的slack时隙都需要记录其空闲时段长度length和死限时间ds,将slack时隙按照死限时间ds递增的顺序保存在时隙队列sq中;同时对被迫中止执行的低安全关键任务进行回收,每一个被回收的任务需要记录其剩余执行时间cs和任务死限时间dw,按照任务优先级递减的顺序保存在任务回收队列req_c中。取出任务回收队列req_c中优先级最高的任务,根据任务死限时间和空闲时隙slack的死限时间的比较,找到可以对任务进行调度的slack时隙,对任务进行再分配。本发明采用回收再分配方法可以提高低安全关键任务的调度成功率,同时,slack空闲时隙的利用减少了处理器的空转期,提高了处理器的利用率。
下面结合附图和具体实施方式对本发明作详细说明。
附图说明
图1是本发明基于回收再分配的低安全关键任务调度方法的流程图。
具体实施方式
参照图1。本发明基于回收再分配的低安全关键任务调度方法具体步骤如下:
步骤一、在系统开始运行的时候,使用一个全局的空闲时隙队列sq对任务执行产生的slack时隙sq进行回收。当一个任务执行完毕后,记录其空闲时隙长度length,由公式(1)计算得到;同时还要记录空闲时隙的死限时间ds。将空闲时隙sq以死限时间ds递增的顺序存放在空闲时隙队列sq中。
式中,ci表示任务的最坏执行时间,
步骤二、在任务调度的过程中,对被迫中止执行的低安全关键任务进行回收,在进行回收时,记录任务的剩余执行时间
式中,
步骤三、判断回收队列req_c是否为空,若为空,则表示被迫终止的低安全关键任务都已经完成再分配,跳转步骤九;若不为空,跳转步骤四。
步骤四、从回收队列req_c中取出优先级最高的低安全关键任务wlsk,同时找出空闲时隙队列sq中死限时间大于任务wlsk死限时间的空闲时段sq。
步骤五、判断在空闲时段sq的时间区间内,任务wlsk是否可以获取到执行所需的资源,如果可以,跳转步骤六;如果不可以,跳转步骤九。
步骤六、判断空闲时段sq的时段长度是否大于任务剩余执行时间,如果空闲时段时间小于任务剩余执行时间,跳转步骤七;如果空闲时段时间大于任务剩余执行时间,跳转步骤八;如果空闲时段时间等于任务剩余执行时间,跳转步骤十。
步骤七、将任务wlsk分配到该空闲时段sq执行,这种情况下,空闲时段sq会被消耗完,但是任务并没有执行完毕。在回收队列req_c中更新任务wlsk的剩余执行时间
式中,
步骤八、将任务wlsk分配到该空闲时段sq执行,这种情况下,任务wlsk会执行完毕,但是空闲时段sq并不会被消耗完。在空闲时段队列sq中更新空闲时段sq的长度信息lengthn,由公式(4)计算得到;跳转步骤十。
式中,lengthn表示空闲时段sq执行任务wlsk之后的长度,lengtho表示空闲时段sq执行任务wlsk之前的长度,
步骤九、任务再分配失败。
步骤十、任务再分配成功。