[发明专利]非实时多任务调度内核实现方法无效
申请号: | 201110457574.8 | 申请日: | 2011-12-31 |
公开(公告)号: | CN102521045A | 公开(公告)日: | 2012-06-27 |
发明(设计)人: | 孙春贞;尹亮亮;周宇 | 申请(专利权)人: | 南京航空航天大学 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 南京经纬专利商标代理有限公司 32200 | 代理人: | 艾中兰 |
地址: | 210016 江苏省*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 实时 任务 调度 内核 实现 方法 | ||
技术领域
本发明涉及一种多任务调度内核实现方法,具体涉及一种非实时的多任务调度内核实现方法,属于计算机技术领域。
背景技术
采用多任务的设计方法,能够简化软件的设计流程,增加软件的模块化程度,提高可维护性。目前,公知的多任务调度内核大多基于实时操作系统,如Vxworks、ucos等,但是在某些应用场合,使用实时内核不利于提高软件的运行效率。例如,在飞行控制系统的仿真验证中,一个仿真用例所对应的物理时间一般为几十分钟甚至几个小时,而进行Monte-Carlo验证时,需要进行上百次仿真。如果采用实时内核,仿真软件的运行时间与其所对应物理相同,开发人员将在仿真上耗费大量的时间,影响开发进度。而事实上,计算机本身具有提高效率的能力,只是大部分时间CPU都处于空闲状态。
发明内容
为了克服实时内核在运行效率上的局限性,本发明提供了一种非实时的多任务调度内核实现方法。该方法能充分利用CPU资源,提高软件运行效率,适合在追求运行效率,不要求实时性,而又希望采用多任务方式来进行软件设计的场合使用。
本发明解决其技术问题所采用的技术方案是:
一种非实时多任务调度内核实现方法,其特征在于通过三个内核数据结构WaitTask、WaitTaskTimer、ActivtTask分别用来存储等待任务、等待任务对应的等待时间以及就绪任务,并通过伪时钟节拍来实现任务在等待、就绪和运行状态之间的切换,从而实现多任务的调度。
其中,实现多任务调度的具体方法是:系统每运行一个伪时钟节拍,WaitTaskTimer中每个任务的等待时间减1,若某个任务的等待时间为0,则将其从WaitTask等待队列中转入ActivtTask就绪队列中,准备运行。就绪队列ActivtTask中的任务运行结束后,再次回到等待队列WaitTask中,同时在WaitTaskTimer中存储该等待任务对应的延时时间,通过以上步骤实现任务在等待、就绪和运行状态之间的循环切换,从而实现多任务的调度。
需要指出的是,内核中的时间都是以伪时钟节拍为基本单位,伪时钟节拍代表一个调度周期,只具有逻辑时间涵义,而不具有物理时间涵义,其所对应的真实时间为将就绪队列中所有任务遍历一遍的时间,与软件的复杂度和计算机的运行速度有关,但是远小于其逻辑时间,这也是非实时内核得以提高软件运行效率的基础。
该方法取得的有益收效是:本发明的非实时多任务调度内核实现方法采用伪时钟节拍来实现任务的调度,充分利用了CPU的运行时间,提高了软件运行效率。适合在追求运行效率,不要求实时性,而又希望采用多任务方式来进行软件设计的场合使用。
附图说明
图1是多任务调度内核数据结构。
图2是多任务调度内核状态图。
图3是等待状态到就绪状态函数流程图
具体实施方式
所谓一个任务,就是一个线程,一个简单程序。对于一个任务具有睡眠、就绪、运行、等待等状态。数据结构WaitTask 、WaitTaskTimer、ActiveTask,用来存储、标志任务和任务状态。图1为三个内核数据结构的示意图。
WaitTask:是一个用来存储等待任务函数指针的数组。通过函数指针能够访问其所对应的任务函数。
WaitTaskTimer:是用来存储对应WaitTask中任务延迟时间的数组,如一个任务的函数指针为fun_ptr,延迟时间为delay_t,存储在WaitTask中的索引idx,则可对数组WaitTask和WaitTaskTimer进行如下操作:
WaitTask[idx]=fun_ptr;
WaitTaskTimer[idx]=delay_t
ActiveTask:是定义的一个栈,用来存储处于就绪状态任务的函数指针,定义head和tail是两个指向ActiveTask数组的指针,其中tail指向栈的底部,head指向栈的顶部。对于ActiveTask的操作如下:
就绪的任务入栈:ActiveTask[head]= fun_ptr
head=head+1;
就绪的任务出栈:fun_ptr= ActiveTask[tail]
tail=tail+1;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110457574.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种合金钻头夹具
- 下一篇:一种带LED焊盘的柔性线路板