实时操作系统中的任务调度方法及系统技术方案

技术编号:2830816 阅读:210 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种实时操作系统中的任务调度方法,包括:为N个优先级中的每个优先级设置优先级链表,将每个优先级链表的首地址存放于对应该优先级的数组元素中;基于先进先出的原则将每个优先级的任务通过对应该优先级的优先级链表进行连接;从N个优先级中确定存在就绪状态任务的最高优先级;通过所述最高优先级对应的数组元素中存放的所述首地址,调用所述最高优先级对应的优先级链表中的第一个任务;其中,N为大于1的整数。此外,本发明专利技术还公开了一种实时操作系统中的任务调度系统。本发明专利技术所公开的技术方案,能够提高系统的实时性。

【技术实现步骤摘要】

本专利技术涉及实时操作系统,尤其涉及一种实时操作系统中的任务调度方 法及系统。
技术介绍
实时操作系统是一种能够在指定或者确定时间内完成系统功能,并且对 外部和内部事件在同步或者异步时间内能做出及时响应的系统。在实时操作系统中,操作的正确性不仅依赖于逻辑设计的正确程度,而且与这些操作运 行的时间有关,也就是说,实时系统对逻辑和时序的要求非常严格,如果逻 辑和时序控制出现偏差,则将会产生严重后果。为了提供对于实时性的支持,实时操作系统必须对CPU和其他资源进行有效的调度和管理,即实时调度。实时操作系统中各任务(该任务可以是 线程)的状态主要有就绪状态、运行状态、等待状态、中断状态和休眠状态。 其中,由于休眠状态比较少有,因此不再详述,图l示出了其它各状态之间 的转换关系,如图l所示,就绪状态会向运行状态转换、运行状态中会出现 中断状态,中断状态结束后会返回运行状态,运行状态结束后进行等待状态, 等待状态再向就绪状态进行转换。具体进行任务调度时,可基于抢占点进行任务的调度,即在抢占点上进行任务的切换调度。其中,抢占点主要有(l)按照规定的时间间隔设置抢占 点,即一般情况下根据操作系统的定时器(Tick)的时钟节拍,也即操作系 统的心脏进行设置,每隔一定的时间(一般为几毫秒)中断一次,则操作系 统内核会将当前运行的任务延时整数个时钟节拍,此时即出现任务调度的抢 占点;(2)某个任务主动放弃CPU (通常为任务运行完所要处理的事情时,主动放弃CPU,进入延时队列)时,出现任务调度的抢占点;(3)某个任务 因需要资源而资源没有得到时被迫挂起,出现任务调度的抢占点;(4)操作系 统支持时间片运转时,时间片用完时出现任务调度的抢占点;(5)发生中断, 进行中断程序后出现任务调度的抢占点。实时性是实时操作系统内核最重要的特性之一。因此,在实时操作系统 中, 一个好的调度方法对实时系统是非常重要的。通常情况下,实时操作系统内核支持多个优先级任务,并且每个优先级 下有多个任务。不同优先级任务支持抢占式调度,现有技术中的调度方法是 按照优先级由高到低的顺序逐次检索进入就绪状态的任务,将检索到的任务 进行调度。但该调度方法中,当优先级的级别较多,且只有较低优先级的任 务进入就绪状态时,进行调度时的检索工作量较大,降低了实时性。
技术实现思路
有鉴于此,本专利技术中一方面提供一种嵌入式实时系统中的任务调度方 法,另 一方面提供一种嵌入式实时系统中的任务调度系统,以便提高实时性。 本专利技术所提供的嵌入式实时系统中的任务调度方法,包括 为N个优先级中的每个优先级设置优先级链表,将每个优先级链表的首地 址存放于对应该优先级的数组元素中;进行连接;从N个优先级中确定存在就绪状态任务的最高优先级; 通过所述最高优先级对应的数组元素中存放的所述首地址,调用所述最高 优先级对应的优先级链表中的第 一个任务; 其中,N为大于1的整数。其中,从N个优先级中确定存在就绪状态任务的最高优先级之前,进一步 包括按照优先级的高低顺序将N个优先级划分为n个级别互不相同的组,每个组中至多包括m个优先级,且高优先级对应高级别的组;其中,N《mxn;为每个组设置包括m个比特的组员信息,所述每个组员信息中的各比特与 该组中的各优先级相对应,用于指示对应优先级是否存在就绪状态任务;设置包括n个比特的组信息,所述组信息中的每个比特与各个组相对应, 用于指示对应组中是否包含有就绪状态任务的优先级;根据任务的优先级及当前状态设置所述组信息和组员信息; 所述从N个优先级中确定存在就绪状态任务的最高优先级包括根据所述 组信息的取值,确定包含有就绪状态任务的优先级的最高级别组;根据所述最 高级别组对应的组员信息的取值,确定N个优先级中存在就绪状态任务的最高 优先级。较佳地,所述组信息和组员信息分别用整数个字节表示,且表示所述组信 息的字节中低位比特对应高级别组,表示所述组员信息的字节中低位比特对应 高优先级;所述根据任务的优先级及当前状态设置所述组信息和组员信息为在任务 的当前状态为就绪状态时,将组员信息中所述任务的优先级对应的比特置位, 在组员信息中存在置位的比特时,将组信息中所述组员信息的组对应的比特置 位;该方法进一步包括设置通过字节的取值查找字节中被置位的最低位比特 的序号的查找表函数;所述根据组信息的取值,确定包含有就绪状态任务的优先级的最高级别组 为以所述组信息的取值为索引,调用所述查找表函数,得到包含有就绪状态 任务的优先级的最高级别组对应的比特序号,根据所述比特序号确定所述最高 级别组;所述根据所述最高级别组对应的组员信息的取值,确定N个优先级中存在 就绪状态任务的最高优先级为以所述最高级别组对应的組员信息的取值为索 引,调用所述查找表函数,得到该最高级别组中存在就绪状态任务的最高优先 级对应的比特序号,根据得到的所述最高级别组中的所述最高优先级对应的比特序号及所述最高级别组对应的比特序号,确定N个优先级中存在就绪状态任 务的最高优先级。较佳地,n个组的组员信息通过一个数组表示。其中,所述优先级链表为单向链表或双向链表。專交佳地,所述m为8。 较佳地,所述N^64。本专利技术所提供的嵌入式实时系统中的任务调度系统,包括 优先级链表模块,用于为N个优先级中的每个优先级设置优先级链表,并连接;其中,N为大于1的整数;数组模块,用于设置对应优先级的数组,将每个优先级链表的首地址存放 于对应该优先级的数组元素中;优先级确定模块,用于从N个优先级中确定存在就绪状态任务的最高优先级;调度模块,用于通过所述最高优先级对应的数组元素中存放的所述首地址, 调用所述最高优先级对应的优先级链表中的第一个任务。 较佳地,该系统进一步包括分组模块,用于按照优先级的高低顺序将N个优先级划分为n个级别互不 相同的组,每个组中至多包括m个优先级,且高优先级对应高级别的组;其中, N < m x n;组员信息模块,用于为每个组设置包括m个比特的组员信息,所述每个组 员信息中的各比特与该组中的各优先级相对应,用于指示对应优先级是否存在 就绪状态任务;组信息模块,用于设置包括n个比特的组信息,所述组信息中的每个比特 与各个组相对应,用于指示对应组中是否包含有就绪状态任务的优先级;信息设置模块,用于根据任务的优先级及当前状态设置所述组信息和组员 信息;所述优先级确定模块包括最高级别组确定模块,用于根据所述设置后的组信息的取值,确定包含有就绪状态任务的优先级的最高级别组;最高优先级确定模块,用于根据所述最高级别组对应的所述设置后的组员 信息的取值,确定N个优先级中存在就绪状态任务的最高优先级。较佳地,所述组信息和组员信息分别用整数个字节表示,且表示所述组信 息的字节中低位比特对应高级别组,表示所述组员信息的字节中低位比特对应 高优先级;所述信息设置模块在任务的当前状态为就绪状态时,将组员信息中所述任 务的优先级对应的比特置位,在组员信息中存在置位的比特时,将组信息中所 述组员信息的组对应的比特置位;所述优先级确定模块进一步包括查找表函数模块,用于设置通过字节的 取值查找字节中被置位的最低位比特的序号的查找表函数;所述最高级别组确定模块以所述组信息的取值为索引,调用所述查找表函 数,得到包含有就绪状本文档来自技高网
...

【技术保护点】
一种实时操作系统中的任务调度方法,其特征在于,该方法包括:为N个优先级中的每个优先级设置优先级链表,将每个优先级链表的首地址存放于对应该优先级的数组元素中;基于先进先出的原则将每个优先级的任务通过对应该优先级的优先先级链表进行连接;从N个优先级中确定存在就绪状态任务的最高优先级;通过所述最高优先级对应的数组元素中存放的所述首地址,调用所述最高优先级对应的优先级链表中的第一个任务;其中,N为大于1的整数。

【技术特征摘要】
1、一种实时操作系统中的任务调度方法,其特征在于,该方法包括为N个优先级中的每个优先级设置优先级链表,将每个优先级链表的首地址存放于对应该优先级的数组元素中;基于先进先出的原则将每个优先级的任务通过对应该优先级的优先级链表进行连接;从N个优先级中确定存在就绪状态任务的最高优先级;通过所述最高优先级对应的数组元素中存放的所述首地址,调用所述最高优先级对应的优先级链表中的第一个任务;其中,N为大于1的整数。2、 如权利要求1所述的方法,其特征在于,从N个优先级中确定存在就 绪状态任务的最高优先级之前,进一步包括按照优先级的高低顺序将N个优先级划分为n个级别互不相同的组,每个 组中至多包括m个优先级,且高优先级对应高级别的组;其中,N<mxn;为每个组设置包括m个比特的组员信息,所述每个组员信息中的各比特与 该组中的各优先级相对应,用于指示对应优先级是否存在就绪状态任务;设置包括n个比特的组信息,所述组信息中的每个比特与各个组相对应, 用于指示对应组中是否包含有就绪状态任务的优先级;根据任务的优先级及当前状态设置所述组信息和组员信息;所述从N个优先级中确定存在就绪状态任务的最高优先级包括根据所述 组信息的取值,确定包含有就绪状态任务的优先级的最高级别组;根据所述最 高级别组对应的组员信息的取值,确定N个优先级中存在就绪状态任务的最高 优先级。3、 如权利要求2所述的方法,其特征在于,所述组信息和组员信息分别用 整数个字节表示,且表示所述组信息的字节中低位比特对应高级别组,表示所 述组员信息的字节中低位比特对应高优先级; 所述根据任务的优先级及当前状态设置所述组信息和组员信息为在任务 的当前状态为就绪状态时,将组员信息中所述任务的优先级对应的比特置位, 在组员信息中存在置位的比特时,将组信息中所述组员信息的组对应的比特置位;该方法进一步包括设置通过字节的取值查找字节中被置位的最低位比特 的序号的查找表函数;所述根据组信息的取值,确定包含有就绪状态任务的优先级的最高级别组为以所述组信息的取值为索引,调用所述查找表函数,得到包含有就绪状态 任务的优先级的最高级别组对应的比特序号,根据所述比特序号确定所述最高 级别组;所述根据所述最高级别组对应的组员信息的取值,确定N个优先级中存在 就绪状态任务的最高优先级为以所述最高级别组对应的组员信息的取值为索 引,调用所述查找表函数,得到该最高级别组中存在就绪状态任务的最高优先 级对应的比特序号,根据得到的所述最高级别组中的所述最高优先级对应的比 特序号及所述最高级别组对应的比特序号,确定N个优先级中存在就绪状态任 务的最高优先级。4、 如权利要求3所述的方法,其特征在于,n个组的组员信息通过一个数 组表示。5、 如权利要求1至4中任一项所述的方法,其特征在于,所述优先级链表 为单向链表或双向链表。6...

【专利技术属性】
技术研发人员:艾国游明琦
申请(专利权)人:北京中星微电子有限公司
类型:发明
国别省市:11[中国|北京]

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

1