一种基于多级动态优先级的自主任务调度方法及系统技术方案

技术编号:36804721 阅读:11 留言:0更新日期:2023-03-09 00:07
本发明专利技术涉及一种基于多级动态优先级的自主任务调度方法及系统,应用于数传分系统下位机数传控制单元,在“中断驱动+自主任务调度+主循环处理”软件架构下根据下位机各子任务重要程度和实时性要求,创建子任务优先级映射表,将任务的优先级划分为1级,2级

【技术实现步骤摘要】
一种基于多级动态优先级的自主任务调度方法及系统


[0001]本专利技术涉及一种基于多级动态优先级的自主任务调度方法及系统,属于数传载荷控制
,适用于中断驱动机制下数传下位机软件接受并解析总线数据后根据监测关键指标动态调整优先级进行实时性响应,可以广泛应用于载荷控制领域。

技术介绍

[0002]为实现遥感卫星从试验应用向业务服务的转变,发展陆地海多样观测手段和多种观测模式,构建快速实时观测和高分辨率观测能力。传统的“中断驱动+主循环遍历”单一运行模式无法满足可靠性和实时性的要求,不利于软件定义和功能重构,更是无法支撑未来软件产品化系列化。

技术实现思路

[0003]本专利技术要解决的技术问题是:克服现有技术的不足,提出一种基于多级动态优先级的自主任务调度方法,旨通过刷新重构子任务优先级映射表,利用单链表队列和优先级位示图巧妙地实现动态优先级调整,提高效率节省空间。另外,该自主任务调度方法具有可移植性和扩展性较好的特点,突破以往定制化的瓶颈,可作为架构构件使用。
[0004]本专利技术所采用的技术方案是:
[0005]一种基于多级动态优先级的自主任务调度方法,包括如下步骤:
[0006]步骤1、周期性监测关键指标;
[0007]步骤2:创建优先级最大值Max_Number的干预子任务;
[0008]步骤3:执行“入队”操作;
[0009]步骤4:执行“出队”操作;
[0010]步骤5:根据指标阀值异常级别,提升优先级映射表中的监测任务的优先级;
[0011]步骤6、再次判断指标阀值是否健康,如果是,则降低优先级映射表中的监测任务的优先级,恢复至正常模式;否则汇总干预过程记录,予以上报;
[0012]步骤7、判断周期性监测是否结束,如果是,则结束,否则返回步骤1。
[0013]进一步的,所述步骤1周期性监测关键指标,具体包括:
[0014]S11、判断周期性监测是否启用,如果是,则执行监测关键指标,进入下一步骤S12;
[0015]S12、判断指标阀值是否健康,如果是,则进入步骤7;否则需要进行自主健康管理,进入自主干预模式,执行步骤2。
[0016]进一步的,所述执行“入队”操作,具体包括:
[0017]S31、硬件中断触发后,数传控制单元在中断服务程序中接受并解析总线数据,按照总线协议格式判断任务ID是否有效,若任务ID无效,则在中断服务程序继续等待,若任务ID有效则进行下一步处理;
[0018]S32、若步骤2所述干预子任务的优先级高于当前最高优先级Current_HighestPriority,则更新当前最高优先级Current_HighestPriority为该子任务的优先
级,否则保持当前最高优先级Current_HighestPriority值不变;
[0019]S33、根据当前子任务的优先级与优先级队列数组的映射关系,获取该子任务所在队列的优先级;判断当前子任务所在的优先级队列中运行的子任务是否为空,如果为空则更新优先级位示图,将该优先级位示图中下标为该队列优先级的元素变为有效状态;否则不更新优先级位示图;
[0020]S34、优先级队列数组下标为0的首元素表示该数组所有的子任务个数,数组其他下标表示的是该队列的优先级,从1开始一直到最大Max_Number;根据子任务的优先级查找当前优先级所在的队列并将子任务插入队尾,实现“入队”操作;
[0021]S35、该优先级队列数组首元素即所有的子任务个数进行同步更新,所有的子任务个数加1。
[0022]进一步的,优先级位示图是指:优先级位示图指的是一个二维数组,下标对应的是子任务的优先级,内容指的是当前状态下该优先级是否有子任务,1为有,0为无。
[0023]进一步的,所述执行“出队”操作,具体为:
[0024]S41、判断队列数组首元素即所有的子任务个数是否大于等于1,如果是,则结合变量当前最高优先级Current_HighestPriority遍历位示图,选择优先级最高的非空的子任务队列;否则,跳出“出队”,进入步骤S12;
[0025]S42、获取队首子任务ID,删除该节点任务,头指针指向“出队”任务的下一个后继元素;
[0026]S43、判断该优先级的子任务队列是否为空,如果是,则更新当前优先级位示图;同时更新队列首元素即所有的子任务个数;
[0027]S44、最后根据任务ID执行节点任务。
[0028]进一步的,根据子任务的实时性和重要程度获取当前子任务的优先级,创建子任务优先级映射表,将任务的优先级划分为1级,2级

最大级Max_Number;建立一个队列数组,数组的下标是任务优先级,数组的元素是单链表优先级队列;同一优先级的任务存储在同一个链表的队列中;链表的节点存储有效的任务ID。
[0029]进一步的,本专利技术还提出一种基于多级动态优先级的自主任务调度系统,包括:
[0030]关键指标监测模块:周期性监测关键指标;
[0031]子任务创建模块::创建优先级最大值Max_Number的干预子任务;
[0032]入队出队执行模块:执行“入队”操作;执行“出队”操作;
[0033]优先级提升模块:根据指标阀值异常级别,提升优先级映射表中的监测任务的优先级;再次判断指标阀值是否健康,如果是,则降低优先级映射表中的监测任务的优先级,恢复至正常模式;否则汇总干预过程记录,予以上报;判断周期性监测是否结束,如果是,则结束,否则通过关键指标监测模块再次监测关键指标。
[0034]本专利技术与现有技术相比的优点在于:
[0035](1)本专利技术提出了基于多级动态优先级的自主任务调度方法,与传统“中断驱动+主循环遍历”相比,通过刷新重构参数化可配置优先级映射表实现优先级动态调整,并且具有良好的可移植性和扩展性,可作为架构构件使用。
[0036](2)本专利技术提出了基于配置项级别在轨自主健康管理,与传统的卫星集中式管控相比,本文通过周期性监测关键指标健康管理情况,针对异常问题自主执行干预任务,避免
故障进一步扩大,影响有效载荷安全性,提升了在轨故障隔离检测的精细化水平。
[0037](3)本专利技术基于多级动态优先级的自主任务调度方法中具体实现过程中涉及的优先级队列数组,数组的下标是任务优先级,数组的元素是单链表优先级队列。顺序表具有的高效随机访问与单链表具有头删和尾插的低复杂度二者巧妙结合,大幅度提升了查询的效率降低了存储空间。
附图说明
[0038]图1为基于动态优先级的自主任务调度流程图;
[0039]图2为入队新增任务流程图;
[0040]图3为出队执行任务流程图。
具体实施方式
[0041]为了更好的理解上述技术方案,下面通过附图以及具体实施对本申请技术方案做详细的说明。
[0042]为了提高快速实时观测和高分辨率观测能力,传统的“中本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于多级动态优先级的自主任务调度方法,其特征在于,包括如下步骤:步骤1、周期性监测关键指标;步骤2:创建优先级最大值Max_Number的干预子任务;步骤3:执行“入队”操作;步骤4:执行“出队”操作;步骤5:根据指标阀值异常级别,提升优先级映射表中的监测任务的优先级;步骤6、再次判断指标阀值是否健康,如果是,则降低优先级映射表中的监测任务的优先级,恢复至正常模式;否则汇总干预过程记录,予以上报;步骤7、判断周期性监测是否结束,如果是,则结束,否则返回步骤1。2.根据权利要求1所述的一种基于多级动态优先级的自主任务调度方法,其特征在于:所述步骤1周期性监测关键指标,具体包括:S11、判断周期性监测是否启用,如果是,则执行监测关键指标,进入下一步骤S12;S12、判断指标阀值是否健康,如果是,则进入步骤7;否则需要进行自主健康管理,进入自主干预模式,执行步骤2。3.根据权利要求1所述的一种基于多级动态优先级的自主任务调度方法,其特征在于:所述执行“入队”操作,具体包括:S31、硬件中断触发后,数传控制单元在中断服务程序中接受并解析总线数据,按照总线协议格式判断任务ID是否有效,若任务ID无效,则在中断服务程序继续等待,若任务ID有效则进行下一步处理;S32、若步骤2所述干预子任务的优先级高于当前最高优先级Current_HighestPriority,则更新当前最高优先级Current_HighestPriority为该子任务的优先级,否则保持当前最高优先级Current_HighestPriority值不变;S33、根据当前子任务的优先级与优先级队列数组的映射关系,获取该子任务所在队列的优先级;判断当前子任务所在的优先级队列中运行的子任务是否为空,如果为空则更新优先级位示图,将该优先级位示图中下标为该队列优先级的元素变为有效状态;否则不更新优先级位示图;S34、优先级队列数组下标为0的首元素表示该数组所有的子任务个数,数组其他下标表示的是该队列的优先级,从1开始一直到最大Max_Number;根据子任务的优先级查找当前优先级所在的队列并将子任务插入队尾,实现“入队”操作;S35、该优先级队列数组首元素即所有的子任务个数进行同步更新,所有的子任务个数加1。4.根据权利要求3所述的一种基于多级动态优先级的自主任务调度方法,其特征在于:优先级位示图是指:优先级位示图指的是一个二维数组,下标对应的是子任务的优先级,内容指的是当前状态下该优先级是否有子任务,1为有,0为无。5.根据权利要求2所述的一种基于多级动态优先级的自主任务调度方法,其特征在于:所述执行“出队”操作,具体为:S41、判断队列数组首元素即所有的子任务个数是否大于等于1,如果是,则结合变量当前最高优先级Current_HighestPriority遍历位示图,选择优先级最高的非空的子任务队列;否则,跳出“出队”,进入步骤S12;
S42、获取队首子任务ID,删除该节点任务,头指针指向“出队”任务的下一个后继元素;S43、判断该优先级的子任务队列是否为空,如果是,则更新当前优先级位示图;同时更新队列首元素即所有的子任务个数;S44、最后根据任务ID执行节点任务。6.根据权利要求1所述的一种基于多级动态优先级的自主任务调度方法,其特征在于:根据子任务的实时性和重要程度获取当前子任务的优先级,创建子任务优先级映射表,将任务的优先级划分...

【专利技术属性】
技术研发人员:武杏杏邹博安贺宇远武瑞雪周渊
申请(专利权)人:西安空间无线电技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1