本发明涉及嵌入式软件技术领域。
背景技术:
在航天测控系统中,地面测试设备负责对应答机进行全方位、多场景的地面测试验证,对于地面测试设备来说,人机交互功能是其重要的功能。嵌入式软件完成人机交互功能的实现,是地面测试设备的主要控制软件。在测控地面测试设备中,嵌入式软件的任务调度算法和数据传输机制是影响软件性能的重要因素。
对嵌入式软件中任务进行分析,现有的低优先级的非周期任务、周期软实时任务平均响应时间过长,主要表现在:
(1)在存在多种优先级同时就绪的情况下,高优先级任务的持续抢占,使得其他低优先级的任务长期得不到执行。
(2)在基于优先级的时间片轮转调度,调度机制没有全方面考虑任务在任意时刻的状态特性,如处理器处理多个线程时,规定每个线程执行1毫秒后切换到另一个线程,对于即将结束的线程,依然要等待处理器将其他线程每个执行1毫秒后才能进行,这就增长了整体执行的时间,效率较低。由于执行周期长的线程获得较大的时间片分配,对于测控地面测试设备中需要快速反应的任务、剩余时间相对较短的任务,任务被错失的概率较大。
实时调度可以分为三类:优先级驱动、共享驱动、定时驱动三类。目前,国内外对地面测试设备的多线程任务调度的研究主要集中在两个方面:
(1)对于周期任务的静态调度算法,根据任务执行周期的长短进行优先级分配。执行周期越长,优先级越低;执行周期越短,优先级越高。
(2)对于周期任务的动态优先级调度算法,根据到达任务的截止期,动态计算其优先级大小。到达任务的截止期越短则其越紧急,对应优先级应越高。
从大型机系统到嵌入式系统,现在主流地面测试设备的操作系统都是属于优先级驱动的调度,且针对任务调度进行的优化也是基于优先级进行,故在此主要对优先级驱动的调度方法进行研究。
地面测试设备的任务调度算法有以周期任务为模型的单调速率调度算法(rm)和最早截止期调度算法(edf)以及dm、lsf算法等。
在2014年第63期《ieeetransactionsoncomputers》第1309页到1315页m.park发表的论文“anefficienttestmethodforratemonotonicschedulability”针对rm算法的可调度性提出一种基于反馈时间分析的有效测试方法,优化后较原始公式更接近真实测试结果。在2014年第63期《ieeetransactionsoncomputers》1197页至1206页由j.lee和k.g.shin发表的“preemptajobornotinedfschedulingofuniprocessorsystems”中,对edf的抢占时延性能进行了分析,提出基于edf的分包调度策略,但对其调度方式的评估方法仍有待提高。
相对而言,对最早截止期优先调度算法和最小空闲时间优先调度算法的研究路线更为合理可行。在2015年a.brun等在《ieeeembeddedsystemsletters》第7期第89页到91页发表的论文“anoteontheedfpreemptionbehaviorin“ratemonotonicversusedf:judgmentday””中针对多优先级抢先的m/g/1队列进行了edf调度性能分析,对多处理器上任务调度进行了优化,但相对edf耗费稍多的调度时间。
因此,目前尚未有一种线程调度方案能够解决地面测试设备任务调度中高优先级任务持续抢占以及短周期任务易被错失的问题。
技术实现要素:
有鉴于此,本发明提供了一种自适应动态调整的线程调度系统及方法,能够解决地面测试设备任务调度中高优先级任务持续抢占以及短周期任务易被错失的问题。
一种自适应动态调整的线程调度系统,针对处理器中执行的软件,采用系统对软件中的线程进行调度,系统包括:
预处理模块,配置用于将处于就绪状态的线程分成周期线程和非周期线程。
优先级计算模块,配置用于针对周期线程和非周期线程采用预先设定的优先级公式分别计算优先级以及优先级的权重参数。
调度模块,配置用于依据优先级选择处于就绪状态的线程切换进入运行状态。
状态采集模块,配置用于采集获取进入运行状态的线程的优先级的权重参数。
调度状态存储模块,配置用于存储采集获取的进入运行状态的线程的优先级的权重参数。
进一步地,优先级计算模块,还配置用于:
针对周期线程,预先设定优先级公式为:
周期线程的优先级为在线程的初始优先级的基础上,增加由线程的周期、截止期以及剩余空闲时间依权重计算的周期线程优先级调整值。
周期线程的优先级的权重参数即为线程的周期、截止期以及剩余空闲时间的权重。
针对非周期线程,预先设定的优先级公式为:
当任务价值为1时,非周期线程的优先级设置为比当前处于运行状态的线程高一级;非周期线程的优先级的权重参数为0。
当任务价值为0时,非周期线程的优先级为在线程的初始优先级的基础上,增加由截止期以及剩余空闲时间依权重计算的非周期线程优先级调整值。
非周期线程的优先级的权重参数为截止期以及剩余空闲时间的权重。
进一步地,周期线程为周期硬实时线程时,线程的周期、截止期以及剩余空闲时间的权重分别为:
其中t为当前时间;其中
周期线程为周期软实时线程时,线程的周期、截止期以及剩余空闲时间的权重分别为:
其中
进一步地,针对非周期线程,预先设定的优先级公式,其中当任务价值为0时,非周期线程的截止期以及剩余空闲时间的权重分别为:
其中t为当前时间,
非周期线程的截止期为ef/(u/sum);u为处理器利用率;sum为处理器中执行的软件中总线程数。
非周期线程的剩余空闲时间为
本发明实施例还提供了一种自适应调整的线程调度方法,该方法用于对处理器中执行的软件中的线程进行调度,方法包括如下步骤:
s101、获取处于就绪状态的线程,判断处于就绪状态的线程是否为周期线程;
若是,则跳转至s102;否则跳转至s103。
s102、针对周期线程采用预先设定的优先级公式分别计算优先级以及优先级的权重参数。
设置预先设定的优先级公式为:
周期线程的优先级为在线程的初始优先级的基础上,增加由线程的周期、截止期以及剩余空闲时间依权重计算的周期线程优先级调整值。
周期线程的优先级的权重参数即为线程的周期、截止期以及剩余空闲时间的权重。
跳转至s104;
s103、针对非周期线程采用预先设定的优先级公式分别计算优先级以及优先级的权重参数;设置预先设定的优先级公式为:
当任务价值为1时,非周期线程的优先级设置为比当前处于运行状态的线程高一级;非周期线程的优先级的权重参数为0。
当任务价值为0时,非周期线程的优先级为在线程的初始优先级的基础上,增加由截止期以及剩余空闲时间依权重计算的非周期线程优先级调整值。
非周期线程的优先级的权重参数为截止期以及剩余空闲时间的权重。
跳转至s104。
s104、依据优先级选择处于就绪状态的线程切换进入运行状态。
s105、采集获取进入运行状态的线程的优先级的权重参数并存储。
进一步地,周期线程为周期硬实时线程时,线程的周期、截止期以及剩余空闲时间的权重分别为:
其中t为当前时间;其中
周期线程为周期软实时线程时,线程的周期、截止期以及剩余空闲时间的权重分别为:
其中
进一步地,针对非周期线程,预先设定的优先级公式,其中当任务价值为0时,非周期线程的截止期以及剩余空闲时间的权重分别为:
其中t为当前时间,
非周期线程的截止期为ef/(u/sum);u为处理器利用率;sum为处理器中执行的软件中总线程数;
非周期线程的剩余空闲时间为
有益效果:
1、本发明提出的自适应动态调整的线程调度系统及方法,在现有优先级任务调度算法的基础上增加了优先级实时计算,并根据线程当前运行状态和本身固有属性参数动态调整线程优先级,因此在进行线程调度时,在地面测试设备多种优先级线程同时进入就绪状态的情况下,通过优先级计算模块获知各处于就绪状态的线程的等待时长及剩余生存周期,自适应地调整线程优先级,避免低优先级线程长期等待无法执行,提高线程执行命中率,从而避免地面测试设备在进行任务调度时,高优先级任务持续抢占以及短周期任务易被错失的问题,有效改善地面测试设备多线程切换的效率。
2、本发明所提出的自适应动态调整线程调度系统及方法,针对线程调度过程中对拥有低优先级的非周期任务、周期软实时任务平均响应时间过长的问题,提出了基于周期、截止期和剩余空闲时间等多参数的自适应优先级线程调度方法,各参数权重随时间动态改变,因此减小了任务切换次数,缩短了非周期任务、周期软实时任务的平均响应时间。
附图说明
图1为本发明实施例所提供的自适应动态调整的线程调度系统组成框图;
图2为本发明实施例所提供的自适应动态调整的线程调度方法流程图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
请参考图1,图1示出了本发明所提供的一种自适应动态调整的线程调度系统的组成框图,其中,该系统主要针对处理器中执行的软件,采用该系统可以对软件中的线程进行调度。如图1所示,该系统包括预处理模块、优先级计算模块、调度模块、状态采集模块以及调度状态存储模块。
其中各模块的功能如下:
预处理模块,配置用于将处于就绪状态的线程分成周期线程和非周期线程。
本发明实施例中,线程作为程序运行的基本任务单元,可分为周期线程和非周期线程两类,周期线程又分为硬截止期与软截止期线程,分别记为周期硬实时任务和周期软实时任务。
本发明实施例中给出了所得到的周期线程的表达式和非周期线程的表达式。
其中对于周期线程,其分为周期硬实时线程和周期软实时线程。
对于周期硬实时线程,可将其表达为由其已知的属性参数组成的向量的表达形式:
tzh为周期硬实时线程的周期;
dzh为周期硬实时线程的相对截止期限;
dzh为周期硬实时线程的绝对截止期限;
pzh为周期硬实时线程的自适应动态优先级;
ezh为周期硬实时线程的执行时间;
对于周期软实时线程,可将其表达为由其已知的属性参数组成的向量的表达形式:
tzs为周期软实时线程的周期;
dzs为周期软实时线程的相对截止期限;
dzs为周期软实时线程的绝对截止期限;
pzs为周期软实时线程的自适应动态优先级;
ezs为周期软实时线程的执行时间;
对于非周期线程,可将其表达为由其已知的属性参数组成的向量的表达形式:
df为非周期线程的相对截止期限;
df为非周期线程的绝对截止期限;
pf为非周期线程的自适应动态优先级;
ef为周期软实时线程的执行时间;
vf为非周期线程的任务价值;
对于非周期线程,相比于周期线程减少了线程的周期,增加了非周期线程的任务价值。如果当前到达的非周期线程的执行时间小于当前软件中所有的周期线程的空闲时间,并且从当前时刻起到非周期任务的执行时间结束为止不会有新的线程到来,则将该非周期线程的任务价值置1,否则置0。
优先级计算模块,配置用于针对周期线程和非周期线程采用预先设定的优先级公式分别计算优先级以及优先级的权重参数。
针对周期线程,预先设定优先级公式为:
周期线程的优先级为在线程的初始优先级的基础上,增加由线程的周期、截止期以及剩余空闲时间依权重计算的周期线程优先级调整值.
周期线程的优先级的权重参数即为线程的周期、截止期以及剩余空闲时间的权重.
针对非周期线程,预先设定的优先级公式为:
当任务价值为1时,非周期线程的优先级设置为比当前处于运行状态的线程高一级,让到达的非周期线程优先执行;非周期线程的优先级的权重参数为0。
当任务价值为0时,非周期线程的优先级为在线程的初始优先级的基础上,增加由截止期以及剩余空闲时间依权重计算的非周期线程优先级调整值;
非周期线程的优先级的权重参数为截止期以及剩余空闲时间的权重。
调度模块,配置用于依据优先级选择处于就绪状态的线程切换进入运行状态.
状态采集模块,配置用于采集获取进入运行状态的线程的优先级的权重参数.
调度状态存储模块,配置用于存储采集获取的进入运行状态的线程的优先级的权重参数。
本发明提出的自适应动态调整的线程调度技术方案,在现有优先级任务调度算法的基础上增加了优先级实时计算,并根据线程当前运行状态和本身固有属性参数动态调整线程优先级,因此在进行线程调度时,在地面测试设备多种优先级线程同时进入就绪状态的情况下,通过优先级计算模块获知各处于就绪状态的线程的等待时长及剩余生存周期,自适应地调整线程优先级,避免低优先级线程长期等待无法执行,提高线程执行命中率,从而避免地面测试设备在进行任务调度时,高优先级任务持续抢占以及短周期任务易被错失的问题,有效改善地面测试设备多线程切换的效率。
本发明实施例中,在周期线程中,由于线程的周期以及截止期对周期硬实时线程和周期软实时线程的影响力不同,具体表现为:周期硬实时线程必须满足其截止期,一旦任务错过其截止期则会带来不可估量的后果。而对于周期软实时线程,最小化平均响应时间是优化的目标,即使某次到来的软实时任务超过截止期也具有一定意义。所以进行周期任务优先级的计算时,任务的周期参数和截止期参数选择其中一个参与进行。对于周期硬实时任务,应选取任务的截止期进行优先级计算,并设置消除线程的周期对优先级的影响;对于周期软实时任务,应选取线程的周期作为优先级计算的参数,并消除截止期对优先级的影响。
因此周期线程为周期硬实时线程时,线程的周期、截止期以及剩余空闲时间的权重分别为:
其中t为当前时间;其中
周期线程为周期软实时线程时,线程的周期、截止期以及剩余空闲时间的权重分别为:
其中
针对非周期线程,预先设定的优先级公式,其中当任务价值为0时,非周期线程的截止期以及剩余空闲时间的权重分别为:
其中t为当前时间,
本发明实施例中,非周期线程的截止期为ef/(u/sum);u为处理器利用率;sum为处理器中执行的软件中总线程数;
非周期线程的剩余空闲时间为
本发明提出的技术方案,针对线程调度过程中对拥有低优先级的非周期任务、周期软实时任务平均响应时间过长的问题,提出了基于周期、截止期和剩余空闲时间等多参数的自适应优先级线程调度方法,各参数权重随时间动态改变,因此减小了任务切换次数,缩短了非周期任务、周期软实时任务的平均响应时间。
请参考图2,图2示出了本发明实施例所提供的自适应动态调整的线程调度方法流程图,该方法用于对处理器中执行的软件中的线程进行调度,该方法包括如下步骤:
s101、获取处于就绪状态的线程,判断处于就绪状态的线程是否为周期线程;
若是,则跳转至s102;否则跳转至s103;
s102、设置预先设定的优先级公式为:
周期线程的优先级为在线程的初始优先级的基础上,增加由线程的周期、截止期以及剩余空闲时间依权重计算的周期线程优先级调整值;
周期线程的优先级的权重参数即为线程的周期、截止期以及剩余空闲时间的权重;
跳转至s104;
s103、设置预先设定的优先级公式为:
当任务价值为1时,非周期线程的优先级设置为比当前处于运行状态的线程高一级;非周期线程的优先级的权重参数为0;
当任务价值为0时,非周期线程的优先级为在线程的初始优先级的基础上,增加由截止期以及剩余空闲时间依权重计算的非周期线程优先级调整值;
非周期线程的优先级的权重参数为截止期以及剩余空闲时间的权重;
跳转至s104;
s104、依据优先级选择处于就绪状态的线程切换进入运行状态;
s105、采集获取进入运行状态的线程的优先级的权重参数并存储。
本发明实施例中,周期线程为周期硬实时线程时,线程的周期、截止期以及剩余空闲时间的权重分别为:
其中t为当前时间;其中
周期线程为周期软实时线程时,线程的周期、截止期以及剩余空闲时间的权重分别为:
其中
本发明实施例中,针对非周期线程,预先设定的优先级公式,其中当任务价值为0时,非周期线程的截止期以及剩余空闲时间的权重分别为:
其中t为当前时间,
非周期线程的截止期为ef/(u/sum);u为处理器利用率;sum为处理器中执行的软件中总线程数;
非周期线程的剩余空闲时间为
综上,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。