实时操作系统中的任务延时处理方法及系统技术方案

技术编号:2830470 阅读:206 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种实时操作系统中的任务延时处理方法,包括:在延时队列为空时,将需要延时的当前任务加入延时队列中,否则将所述当前任务按照任务的绝对延时时间的升序加入到延时队列中,并计算出延时队列中相邻任务之间的相对延时时间;当时钟周期到来时,判断延时队列中第一个任务的延时时间是否为1个时钟周期,如果是,则将所述第一个任务及紧邻其后的相对延时时间为0的任务从延时队列中移出;否则,将所述第一个任务的延时时间减去1个时钟周期。此外,本发明专利技术还公开了一种实时操作系统中的任务延时处理系统。本发明专利技术所公开的技术方案,能够提高系统的响应时间,进而提高系统的实时性。

【技术实现步骤摘要】

本专利技术涉及实时操作系统,尤其涉及一种实时操作系统中的任务延时处 理方法及系统。
技术介绍
实时操作系统是 一 种能够在指定或者确定时间内完成系统功能,并且对 外部和内部事件在同步或者异步时间内能做出及时响应的系统。在实时操作系统中,操作的正确性不仅依赖于逻辑设计的正确程度,而且与这些操作运 行的时间有关,也就是说,实时系统对逻辑和时序的要求非常严格,如果逻 辑和时序控制出现偏差,则将会产生严重后果。为了提供对于实时性的支持,实时操作系统必须对CPU和其他资源进行有效的调度和管理,即实时调度。实时操作系统中各任务(该任务可以是 线程)的状态主要有就绪状态、运行状态、等待状态、中断状态和休眠状态。 其中,由于休眠状态比较少有,因此不再详述,图l示出了其它各状态之间 的转换关系,如图l所示,就绪状态会向运行状态转换、运行状态中会出现 中断状态,中断状态结束后会返回运行状态,运行状态结束后进行等待状态, 等待状态再向就绪状态进行转换。具体实现时,将处于就绪状态的任务放入就绪队列中,对就绪队列中的 任务可基于抢占点进行调度,即在抢占点上进行任务的切换调度。其中一种 抢占点可以是按照规定的时间间隔设置的抢占点,即一般情况下每隔一定的 时间中断一次,通常称为时钟节拍或时钟周期,该时钟节拍可看作是系统心脏的脉动,中断之间的时间间隔取决于不同的应用,一4殳在5ms到1 OOms 之间。当时钟周期到来时,操作系统内核会将当前运行的任务延时整数个时钟周期,此时进入调度的抢占点。由于实时性是实时操作系统内核最重要的特性之一。因此,如何在每个 抢占点进行快速调度对实时系统是非常重要的。通常情况下,当某个任务执行完所要处理的事情并主动放弃CPU时,或某个任务因需要资源而资源没有得到时被迫挂起时,会有一定的延时,此时任务进入等待状态,可被放入 延时队列中,当操作系统的时钟周期到来时,延时队列中所有任务的用时钟 周期表示的延时时间分别减去1个时钟周期,当延时队列中任务的延时时间为o时,将此任务放入就绪队列中。可见,延时队列中任务延时的处理占用的是时钟周期中断时的抢占点的资源,若该资源占用过多,则任务调度的响 应时间就会降低。现有技术中,延时队列是一个单向连表,如图l(a)所示,图l(a)所示的 延时队列连表中已存在需要延时IO个时钟周期的任务1、需要延时20个时 钟周期的任务5等任务,当有新的任务需要延时时,将此任务加入到连表的 尾部,如图l(b)所示,任务27即为刚刚加入到延时队列中的任务。当时钟 周期到来时,操作系统将在延时队列头中依次取出各任务,并将各任务的延 时时间减去1,结果如图](c)所示,每个任务的延时时间值均减少1,当延 时队列中存在延时时间为O的任务时,将该延时时间为O的任务移出延时队 列,放入就绪队列中,则延时队列连表如图l(d)所示,去掉了任务l。可见, 现有技术中,每发生一次时钟周期,都要从延时队列的头扫描到尾,加上时 钟周期发生的频率通常很频繁,如果延时队列比较长,则系统的负担就会很 大,则会影响任务调度的响应时间,降低了实时性。
技术实现思路
有鉴于此,本专利技术中一方面提供一种嵌入式实时系统中的任务延时处理 方法,另一方面提供一种嵌入式实时系统中的任务延时处理系统,以便提高实时性。本专利技术所提供的嵌入式实时系统中的任务延时处理方法,包括在延时队列为空时,将需要延时的当前任务加入延时队列中,否则将所述 当前任务按照任务的绝对延时时间的升序加入到延时队列中,并计算出延时队列中相邻任务之间的相对延时时间;当时钟周期到来时,判断延时队列中第一个任务的延时时间是否为1个时钟周期,如果是,则将所述第一个任务及紧邻其后的相对延时时间为0的任务 从延时队列中移出;否则,将所述第一个任务的延时时间减去1个时钟周期。 其中,所述将当前任务按照任务的绝对延时时间的升序加入到延时队列中,Al、从延时队列中提取第一个任务作为当前进行比较的任务; B1 、判断所提取的任务的绝对延时时间是否大于等于当前任务的绝对延时 时间,如果是,则执行步骤C1后结束;否则,执行步骤D1;Cl、将当前任务插入所述任务之前,并将所述任务的绝对延时时间减去当是延时队列的第 一个任务,则将当前任务的绝对延时时间减去当前任务之前紧 邻的任务的绝对延时时间的差值作为当前任务的相对延时时间;Dl、判断所提取的任务是否为延时队列中的最后一个任务,如果是,则将 所述当前任务加入所述任务之后,并将所述当前任务的绝对延时时间减去所述 任务的绝对延时时间的差值作为当前任务的相对延时时间;否则,从延时队列 中提取下一个任务作为当前进行比较的任务,并返回执行步骤B1。或者,所述将当前任务按照任务的绝对延时时间的升序加入到延时队列中, 并计算出延时队列中相邻任务之间的相对延时时间包括A2、从延时队列中提取最后一个任务作为当前进行比较的任务;B2、判断所提取的任务的绝对延时时间是否小于等于当前任务的绝对延时 时间,如果是,则执行步骤C2后结束;否则,执行步骤D2;C2、将当前任务加入所述任务之后,并将所述当前任务的绝对延时时间减 去所述任务的绝对延时时间后的差值作为当前任务的相对延时时间,若当前任 务不是延时队列的最后一个任务,则将当前任务之后紧邻的任务的绝对延时时 间减去当前任务的绝对延时时间的差值作为当前任务之后的所述任务的相对延时时间;D2、判断所提取的任务是否为延时队列中的第一个任务,如果是,则 将所述当前任务加入所述任务之前,并将所述任务的绝对延时时间减去当前 任务的绝对延时时间的差值作为所述任务的相对延时时间;否则,从延时队 列中提取前一个任务作为当前进行比较的任务,并返回执行步骤B2。 本专利技术所提供的嵌入式实时系统中的任务延时处理系统,包括延时队列加入模块,用于在延时队列为空时,将需要延时的当前任务加入 延时队列中,否则将所述当前任务按照任务的绝对延时时间的升序加入到延时 队列中,并计算出延时队列中相邻任务之间的相对延时时间;延时处理模块,用于在时钟周期到来时,判断延时队列中第一个任务的延 时时间是否为1个时钟周期,如果是,则将所述第一个任务及紧邻其后的相对 延时时间为0的任务从延时队列中移出;否则,将所述第一个任务的延时时间 减去1个时钟周期。其中,所述延时队列加入模块包括任务提取模块,用于从第一个任务开始依次从延时队列中提取当前进行比 较的任务;绝对延时时间比较模块,用于将所述任务提取模块所提取的任务的绝对延 时时间与当前任务的绝对延时时间进行比较,并将比较结果输出给当前任务加 入模块;当前任务加入模块,用于在所述比较结果为所提取的任务的绝对延时时间 大于等于当前任务的绝对延时时间时,将当前任务加入所述任务之前;在所述 比较结果为所提取的任务的绝对延时时间小于当前任务的绝对延时时间且所提 取的任务为延时队列中的最后一个任务时,将当前任务加入所述任务之后;在 所述比较结果为所提取的任务的绝对延时时间小于当前任务的绝对延时时间且 所提取的任务不是延时队列中的最后一个任务时,指示所述任务提取模块提取 当前比较的任务;相对时间计算模块,用于在当前任务加入延时队列后,若当前任务不是延 时队列的最后 一个任务,则将当前任务之后紧邻的任务的绝对延时时间减去当 前任务的本文档来自技高网
...

【技术保护点】
一种实时操作系统中的任务延时处理方法,其特征在于,该方法包括:在延时队列为空时,将需要延时的当前任务加入延时队列中,否则将所述当前任务按照任务的绝对延时时间的升序加入到延时队列中,并计算出延时队列中相邻任务之间的相对延时时间;当时钟周期到来时,判断延时队列中第一个任务的延时时间是否为1个时钟周期,如果是,则将所述第一个任务及紧邻其后的相对延时时间为0的任务从延时队列中移出;否则,将所述第一个任务的延时时间减去1个时钟周期。

【技术特征摘要】
1、一种实时操作系统中的任务延时处理方法,其特征在于,该方法包括在延时队列为空时,将需要延时的当前任务加入延时队列中,否则将所述当前任务按照任务的绝对延时时间的升序加入到延时队列中,并计算出延时队列中相邻任务之间的相对延时时间;当时钟周期到来时,判断延时队列中第一个任务的延时时间是否为1个时钟周期,如果是,则将所述第一个任务及紧邻其后的相对延时时间为0的任务从延时队列中移出;否则,将所述第一个任务的延时时间减去1个时钟周期。2、 如权利要求l所述的方法,其特征在于,所述将当前任务按照任务的绝 对延时时间的升序加入到延时队列中,并计算出延时队列中相邻任务之间的相 对延时时间包括Al、从延时队列中提取第一个任务作为当前进行比较的任务;B1 、判断所提取的任务的绝对延时时间是否大于等于当前任务的绝对延时 时间,如果是,则执行步骤C1后结束;否则,执行步骤D1;Cl、将当前任务插入所述任务之前,并将所述任务的绝对延时时间减去当 前任务的绝对延时时间后的差值作为所述任务的相对延时时间,若当前任务不 是延时队列的第 一个任务,则将当前任务的绝对延时时间减去当前任务之前紧 邻的任务的绝对延时时间的差值作为当前任务的相对延时时间;Dl、判断所提取的任务是否为延时队列中的最后一个任务,如果是,则将 所述当前任务加入所述任务之后,并将所述当前任务的绝对延时时间减去所述 任务的绝对延时时间的差值作为当前任务的相对延时时间;否则,从延时队列 中提取下一个任务作为当前进行比较的任务,并返回执行步骤Bl。3、 如权利要求l所述的方法,其特征在于,所述将当前任务按照任务的绝 对延时时间的升序加入到延时队列中,并计算出延时队列中相邻任务之间的相 对延时时间包括A2、从延时队列中提取最后一个任务作为当前进行比较的任务;B2、判断所提取的任务的绝对延时时间是否小于等于当前任务的绝对延时 时间,如果是,则执行步骤C2后结束;否则,执行步骤D2;C2、将当前任务加入所述任务之后,并将所述当前任务的绝对延时时间减 去所述任务的绝对延时时间后的差值作为当前任务的相对延时时间,若当前任 务不是延时队列的最后一个任务,则将当前任务之后紧邻的任务的绝对延时时 间减去当前任务的绝对延时时间的差值作为当前任务之后的所述任务的相对延 时时间;D2、判断所提取的任务是否为延时队列中的第一个任务,如果是,则将所 述当前任务加入所述任务之前,并将所述任务的绝对延时时间减去当前任务的前一个任务作为当前进行比较的任务,并返回执行步骤B2。4、 一种实时操作系统中的任务延时处理系统,其特征在于,该系统包括 延时队列加入模块,用于在延时队列为空时,将需要延时的当前任务加入延时队列中,否则将所述当前任务按照任...

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

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

1