[发明专利]一种空间飞行器周期性混成随机任务调度方法有效

专利信息
申请号: 201610814726.8 申请日: 2016-09-09
公开(公告)号: CN106445659B 公开(公告)日: 2019-07-12
发明(设计)人: 乔磊;龚健;杨孟飞;杨桦;彭飞;徐建;谭彦亮;吴一帆;刘忠汉 申请(专利权)人: 北京控制工程研究所
主分类号: G06F9/48 分类号: G06F9/48
代理公司: 中国航天科技专利中心 11009 代理人: 陈鹏
地址: 100080 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要: 一种空间飞行器周期性混成随机任务调度方法,基于优先级抢占、同优先级任务调度策略,在不更改空间飞行器操作系统内核任务调度策略的基础上,实现了周期任务固定时间点启动、周期内任务随机启动以及完全随机任务启动的调度方法。本发明方法在当固定时间点任务不占用CPU时,控制随机任务随时执行,直到任务在固定时间点启动运行,同时支持任务的实时加入和退出,与现有技术相比,能够有效的提高空间飞行器计算机的CPU利用率,使得操作系统不仅能保持原有任务调动策略,还具有良好的复用性、适应性和灵活性,具有很好的适用价值。
搜索关键词: 一种 空间 飞行器 周期性 混成 随机 任务 调度 方法
【主权项】:
1.一种空间飞行器周期性混成随机任务调度方法,其特征在于包括如下步骤:(1)将所有用户任务控制块指针定义为一维数组{Task[1],Task[2],…,Task[N]},其中,N为用户任务控制块数目,每个任务控制块均对应一个任务,Taski为第i个用户任务,i=1,2,3…N;(2)获取SpaceOS操作系统中的任务创建接口函数OSTaskSpawn(),然后使用任务创建接口函数OSTaskSpawn()创建N个任务控制块,假定第i个任务控制块对应的用户任务的功能函数为Taski(),然后对函数Taski()进行封装,得到封装后能够被SpaceOS操作系统直接调用的函数TaskEni();(3)创建第i个用户任务对应的数据结构为Task[i]=OSTaskSpawn(TaskEni,param1…paramM),其中,param1、param2、…、paramM为操作系统任务创建接口函数OSTaskSpawn()中的参数,M为整数;(4)将Task1到TaskX设为固定时间点调度任务,优先级设为A,将TaskX+1到TaskY设为固定周期内随机调度任务,优先级设为B,将TaskY+1到TaskN设为完全随机调度任务,优先级设为C,A<B<C,X、Y均为小于N的正整数且X小于Y,优先级数值越小优先级越高;(5)获取优先级最高的固定时间点调度任务Task1到TaskX,在一维位图unsigned int Index中设置用户任务Task1到TaskX的任务调度时刻,其中,Index为8*P bit位且每bit位取值为0或1,当Index中第j bit位为1时,表明第j个时间片起始时刻有用户任务的任务调度时刻来临,时间片为SpaceOS操作系统内核计时的最小时间段,每个时间片起始时刻均设有中断,j为整数,P为正整数,用户任务Task1到TaskX中的任一用户任务均对应多个时间片且用户任务Task1到TaskX中的用户任务对应的时间片数目可能不相等;所述的任务调度时刻为对应用户任务包括的第一个时间片的起始时刻;(6)监测一维位图unsigned int Index中的第k个用户任务的bit位并判断,当时间片中断发生时,时间片个数tick递增1,然后计算(0x1<<tick)&Index是否为0,若为0,则此时间片没有用户任务需要调度,继续监测一维位图unsigned int Index中第k个用户任务的bit位且递增时间片个数tick直至第k个用户任务的bit位遍历完成,若为1,则判断第k个用户任务的状态,当为运行态时,调用任务重启动接口函数OSTaskRestart()清空上次第k个用户任务执行产生的数据,并重新启动第k个用户任务,当为挂起态时,则调用任务恢复接口函数OSTaskResume()启动第k个用户任务,在执行第k个用户任务过程中,继续监测一维位图unsigned int Index中第k个用户任务的bit位且递增时间片个数tick直至第k个用户任务的bit位遍历完成,如果第k个用户任务过程在第k个用户任务对应的时间片内执行完成,则将第k个用户任务修改为挂起态,转入步骤(9),否则将第k个用户任务修改为运行态,其中,k=1,2,3…X,每个用户任务状态的初始值为挂起态,用户任务执行产生数据的初始值为空;(7)重复步骤(6)直至一维位图unsigned int Index被遍历,实现将所有用户任务设置为挂起态或者运行态;(8)将时间片个数tick归零,重复步骤(6)‑(7)直至完成固定时间点调度任务Task1到TaskX不再执行,其中,时间片个数tick每归零一次,控制周期计数状态量FixCircleStartCnt递增1,控制周期计数状态量FixCircleStartCnt初始值为0;(9)顺序判断固定周期内随机调度任务Taskq的状态,如果为挂起态,则顺序执行固定周期内随机调度任务Taskq并存储执行产生的数据,直至步骤(6)中第k个用户任务对应的时间片用尽后转入步骤(7);当固定周期内随机调度任务Taskq在一次步骤(6)中第k个用户任务对应的时间片执行完成时,将固定周期内随机调度任务Taskq设置为挂起态,然后顺序判断执行下一个固定周期内随机调度任务,若所有的固定周期内随机调度任务Taskq执行完成,则转入步骤(10);当固定周期内随机调度任务Taskq在一次步骤(6)中第k个用户任务对应的时间片未执行完成时,将固定周期内随机调度任务Taskq设置为运行态;监测步骤(8)中的控制周期计数状态量FixCircleStartCnt,当控制周期计数状态量FixCircleStartCnt为15时,将步骤(8)中的控制周期计数状态量FixCircleStartCnt归零,调用任务重启动接口函数为OSTaskRestart()清空状态为运行态的固定周期内随机调度任务执行产生的数据,并将其状态修改为挂起态,调用任务恢复接口函数为OSTaskResume()重新顺序判断并执行固定周期内随机调度任务Taskq;其中,固定周期内随机调度任务Taskq的初始状态为挂起态,q=X+1,X+2,X+3,…,TaskY;(10)调度执行完全随机调度任务TaskY+1到TaskN。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京控制工程研究所,未经北京控制工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201610814726.8/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top