一种嵌入式实时系统进程均衡调度方法转让专利

申请号 : CN200810004742.6

文献号 : CN101246437B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王立春许志军

申请人 : 中兴通讯股份有限公司

摘要 :

本发明公开了一种嵌入式实时系统进程均衡调度方法,既能保证各进程消息级的处理实体的完整性,也能保证对进程之间关联消息及时处理。所述方法包括:进程调度实体为各进程设置调度阈值,用于控制每次处理的消息数量和/或处理时间;在处理进程内部消息的过程中,如果处理的消息数和/或处理时间到达或超过调度阈值,则进程调度实体调度另一进程进行处理。采用本发明所述调度方法,保证相同优先级的进程在调度和处理消息的及时、安全,避免进程非实时调度导致的消息滞后,协议状态机变迁。

权利要求 :

1.一种嵌入式实时系统进程均衡调度方法,其特征在于,

进程调度实体为各进程设置调度阈值,用于控制每次处理的消息数量和/或处理时间;所述调度阈值记录了允许连续处理的消息数目和/或处理消息的时间,在某进程中,允许连续处理的一组消息或者允许连续处理的一段时间称为一个调度单元;

在处理进程内部消息的过程中,将需要优先处理的进程设置为高优先级,优先处理处于高优先级的进程,在处理该进程内部消息时,处理完一个调度单元后,将该进程的高优先级恢复为低优先级,调度其他高优先级的进程进行处理或者在所有高优先级进程处理完成后处理其他低优先级的进程。

2.如权利要求1所述的方法,其特征在于,判断处理的消息是否达到或超过调度阈值是指进行以下判断中的任意一种:判断当前处理的消息数量是否达到或超过消息数调度阈值;

判断当前处理消息的时间是否达到或超过时间调度阈值;

判断是否满足以下两个条件中的任意一个:当前处理消息数达到或超过消息数调度阈值,当前处理消息的时间达到或超过时间调度阈值。

3.如权利要求1所述的方法,其特征在于,

为各进程中的消息设置优先级,处理进程内部的消息时,优先处理优先级高的消息。

4.如权利要求1所述的方法,其特征在于,

提供进程内部消息超长处理告警、缓冲队列超长告警及缓冲队列恢复告警,当单个消息处理时间超过预定时间时触发进程内部消息超长处理告警;当进程内未处理的消息个数超过一定门限时触发缓冲队列超长告警;当进程内未处理的消息个数恢复到门限以下时触发缓冲队列恢复告警。

5.一种嵌入式实时系统进程均衡调度方法,其特征在于,

进程调度实体为各进程设置调度阈值,用于控制每次处理的消息数量和/或处理时间;所述调度阈值记录了允许连续处理的消息数目和/或处理消息的时间,在某进程中,允许连续处理的一组消息或者允许连续处理的一段时间称为一个调度单元;

在处理进程内部消息的过程中,将需要优先处理的进程设置为运行优先级,将消息量大于一定门限阈值的进程设置为超阈值优先级,并为该进程设置连续超阈值处理标签以表示消息量是否超过门限阈值,所述运行优先级的级别高于超阈值优先级,所述超阈值优先级的级别高于普通优先级;

优先处理处于运行优先级的进程,在处理该进程内部的消息时,处理完一个调度单元后,将该进程的运行优先级降至超阈值优先级或者普通优先级,调度其他超阈值优先级的进程进行处理,或者在所有超阈值优先级进程处理完成后处理其他普通优先级的进程。

6.如权利要求5所述的方法,其特征在于,所述方法进一步包括以下步骤:(a)在进程处理过程中,在某进程获取到CPU资源后,所述进程调度实体将该进程的优先级设置为运行优先级;

(b)读取进程中的一个消息进行处理;

(c)进入策略调度:在调度下一消息前先判断该进程处理的消息数和/或时间是否超过调度阈值以判断是否需要继续处理,未超过调度阈值时返回步骤(b),继续处理下一消息;如果超过调度阈值,则将该进程的运行优先级降至超阈值优先级或者普通优先级,返回步骤(a),处理其他进程。

7.如权利要求5或6所述的方法,其特征在于,判断处理的消息是否达到或超过调度阈值是指进行以下判断中的任意一种:判断当前处理的消息数量是否达到或超过消息数调度阈值;

判断当前处理消息的时间是否达到或超过时间调度阈值;

判断是否满足以下两个条件中的任意一个:当前处理消息数达到或超过消息数调度阈值,当前处理消息的时间达到或超过时间调度阈值。

8.如权利要求5或6所述的方法,其特征在于,

所述将该进程的运行优先级降至超阈值优先级或者普通优先级是指:

当某进程处于运行优先级且该进程已处理的消息数和/或时间超过调度阈值时,如果该进程中未处理的消息数大于连续超阈值处理标签的门限阈值但没有连续超阈值处理标签,则设置该标签,并将该进程优先级降至超阈值优先级,如果该进程中未处理的消息数大于连续超阈值处理标签的门限阈值并已经设置了连续超阈值处理标签,则将该进程优先级降至普通优先级。

9.如权利要求8所述的方法,其特征在于,在处理完一个消息后,执行以下策略调度步骤:(e)判断本次进程调度运行中连续处理的消息数和/或处理时间是否超过规定的调度阈值,如果没有超过,继续处理下一个消息,结束策略调度;否则执行下一步;

(f)判断运行的进程是否设置了连续超阈值处理标签,如果是,则清除连续超阈值处理标签,将当前进程的优先级降至普通优先级;否则,执行步骤(g);

(g)判断当前进程未处理的消息是否超过连续超阈值处理标签的门限阈值,如果是,则设置连续超阈值处理标签,并将该进程优先级降至超阈值优先级;否则,当前进程的优先级降至普通优先级,策略调度结束。

10.如权利要求5或6所述的方法,其特征在于,

为各进程中的消息设置优先级,处理进程内部的消息时,优先处理优先级高的消息。

11.如权利要求5或6所述的方法,其特征在于,

提供进程内部消息超长处理告警、缓冲队列超长告警及缓冲队列恢复告警,当单个消息处理时间超过预定时间时触发进程内部消息超长处理告警;当进程内未处理的消息个数超过一定门限时触发缓冲队列超长告警;当进程内未处理的消息个数恢复到门限以下时触发缓冲队列恢复告警。

说明书 :

技术领域

本发明涉及嵌入式实时系统,尤其涉及一种嵌入式实时系统进程均衡调度方法。

背景技术

嵌入式实时系统是指在确定的时间内执行其功能,并对外部的异步事件做出相应处理的计算机系统,实时系统一般应用于通信、工业控制等领域中。实时操作系统(RTOS,real-time operating system)是一个实时系统最关键的组成部分,它通常与特定的中央处理器(CPU)、外设等共同组成一个实时系统。
目前广泛应用的实时操作系统都是多进程的操作系统,实时多进程操作系统允许多个实时应用作为一系列的独立进程来运行。从系统的角度看,进程是竞争资源的最小运行单位,进程可以使用或等待CPU、I/O设备及内存空间等系统资源,并独立于其他进程,与它们一起并发运行,嵌入式操作系统中进程最常见的是基于优先级的可抢占式的调度策略,相同优先级可以外带时间片轮转机制。
实际上,在一些大型的软件体系中,为了设计的简洁,主体软件功能模块被设计成相同优先级的进程实体,保证各进程消息级的处理实体的完整性。各相关进程是有某些逻辑关系的,尤其是相同优先级的进程不能随意抢占和放权,而且消息的处理是不能被打断,现有调度的弊端是不能保证对进程之间关联消息及时处理。

发明内容

本发明提供了一种嵌入式实时系统进程均衡调度方法,既能保证各进程消息级的处理实体的完整性,也能保证对进程之间关联消息及时处理。
本发明提供一种消息级的基于优先级抢占的二级调度方法,不同优先级之间沿袭通用操作系统抢占机制,相同优先级进程之间采取均衡轮循机制。
所述均衡轮循机制是指:进程内采取消息级的二级调度,基于进程内消息优先级缓冲队列,消息缓冲队列的优先级别个数依据系统的静态配置。
为了解决上述技术问题,本发明提供了一种嵌入式实时系统进程均衡调度方法,包括:
进程调度实体为各进程设置调度阈值,用于控制每次处理的消息数量和/或处理时间;所述调度阈值记录了允许连续处理的消息数目和/或处理消息的时间,在某进程中,允许连续处理的一组消息或者允许连续处理的一段时间称为一个调度单元;
在处理进程内部消息的过程中,将需要优先处理的进程设置为高优先级,优先处理处于高优先级的进程,在处理该进程内部消息时,处理完一个调度单元后,将该进程的高优先级恢复为低优先级,调度其他高优先级的进程进行处理或者在所有高优先级进程处理完成后处理其他低优先级的进程。
进一步地,判断处理的消息是否达到或超过调度阈值是指进行以下判断中的任意一种:
判断当前处理的消息数量是否达到或超过消息数调度阈值;
判断当前处理消息的时间是否达到或超过时间调度阈值;
判断是否满足以下两个条件中的任意一个:当前处理消息数达到或超过消息数调度阈值,当前处理消息的时间达到或超过时间调度阈值。
进一步地,为各进程中的消息设置优先级,处理进程内部的消息时,优先处理优先级高的消息。
进一步地,提供进程内部消息超长处理告警、缓冲队列超长告警及缓冲队列恢复告警,当单个消息处理时间超过预定时间时触发进程内部消息超长处理告警;当进程内未处理的消息个数超过一定门限时触发缓冲队列超长告警;当进程内未处理的消息个数恢复到门限以下时触发缓冲队列恢复告警。
为了解决上述技术问题,本发明还提供了一种嵌入式实时系统进程均衡调度方法,包括:
进程调度实体为各进程设置调度阈值,用于控制每次处理的消息数量和/或处理时间;所述调度阈值记录了允许连续处理的消息数目和/或处理消息的时间,在某进程中,允许连续处理的一组消息或者允许连续处理的一段时间称为一个调度单元;
在处理进程内部消息的过程中,将需要优先处理的进程设置为运行优先级,将消息量大于一定门限阈值的进程设置为超阈值优先级,并为该进程设置连续超阈值处理标签以表示消息量是否超过门限阈值,所述运行优先级的级别高于超阈值优先级,所述超阈值优先级的级别高于普通优先级;
优先处理处于运行优先级的进程,在处理该进程内部的消息时,处理完一个调度单元后,将该进程的运行优先级降至超阈值优先级或者普通优先级,调度其他超阈值优先级的进程进行处理,或者在所有超阈值优先级进程处理完成后处理其他普通优先级的进程。
进一步地,所述方法进一步包括以下步骤:
(a)在进程处理过程中,在某进程获取到CPU资源后,所述进程调度实体将该进程的优先级设置为运行优先级;
(b)读取进程中的一个消息进行处理;
(c)进入策略调度:在调度下一消息前先判断该进程处理的消息数和/或时间是否超过调度阈值以判断是否需要继续处理,未超过调度阈值时返回步骤(b),继续处理下一消息;如果超过调度阈值,则将该进程的运行优先级降至超阈值优先级或者普通优先级,返回步骤(a),处理其他进程。
进一步地,判断处理的消息是否达到或超过调度阈值是指进行以下判断中的任意一种:
判断当前处理的消息数量是否达到或超过消息数调度阈值;
判断当前处理消息的时间是否达到或超过时间调度阈值;
判断是否满足以下两个条件中的任意一个:当前处理消息数达到或超过消息数调度阈值,当前处理消息的时间达到或超过时间调度阈值。
进一步地,所述将该进程的运行优先级降至超阈值优先级或者普通优先级是指:
当某进程处于运行优先级且该进程已处理的消息数和/或时间超过调度阈值时,如果该进程中未处理的消息数大于连续超阈值处理标签的门限阈值但没有连续超阈值处理标签,则设置该标签,并将该进程优先级降至超阈值优先级,如果该进程中未处理的消息数大于连续超阈值处理标签的门限阈值并已经设置了连续超阈值处理标签,则将该进程优先级降至普通优先级。
进一步地,在处理完一个消息后,执行以下策略调度步骤:
(e)判断本次进程调度运行中连续处理的消息数和/或处理时间是否超过规定的调度阈值,如果没有超过,继续处理下一个消息,结束策略调度;否则执行下一步;
(f)判断运行的进程是否设置了连续超阈值处理标签,如果是,则清除连续超阈值处理标签,将当前进程的优先级降至普通优先级;否则,执行步骤(g);
(g)判断当前进程未处理的消息是否超过连续超阈值处理标签的门限阈值,如果是,则设置连续超阈值处理标签,并将该进程优先级降至超阈值优先级;否则,当前进程的优先级降至普通优先级,策略调度结束。
进一步地,为各进程中的消息设置优先级,处理进程内部的消息时,优先处理优先级高的消息。
进一步地,提供进程内部消息超长处理告警、缓冲队列超长告警及缓冲队列恢复告警,当单个消息处理时间超过预定时间时触发进程内部消息超长处理告警;当进程内未处理的消息个数超过一定门限时触发缓冲队列超长告警;当进程内未处理的消息个数恢复到门限以下时触发缓冲队列恢复告警。
采用本发明所述调度方法,保证相同优先级的进程在调度和处理消息的及时、安全,避免进程非实时调度导致的消息滞后,协议状态机变迁;同时配有进程实时监控的异常告警及恢复机制。

附图说明

图1本实施例进程调度流程图;
图2是本实施例的策略调度流程图;
图3是本实施例的消息调度流程图。

具体实施方式

本发明的设计构思是为各个进程设置调度阈值,控制每次处理的消息数量和/或处理时间,防止某一进程负载过重。在处理进程内部消息的过程中,如果处理的消息数和/或处理时间到达或超过调度阈值,则调度另一进程进行处理。可以为所有进程设置相同的调度阈值,或者根据各进程的负载情况为各个进程分别设置不同的调度阈值。
所述调度阈值记录了允许连续处理的消息数量和/或处理消息的时间;在某个进程中,允许连续处理的一组消息或者允许连续处理的一段时间称为一个调度单元。
判断是否达到或超过调度阈值是指进行以下判断中的任意一种:
判断当前处理的消息数量是否达到或超过消息数调度阈值;
判断当前处理消息的时间是否达到或超过时间调度阈值;
判断是否满足以下两个条件中的任意一个:当前处理消息数达到或超过消息数调度阈值,当前处理消息的时间达到或超过时间调度阈值。
设置调度阈值的好处在于,使得某进程连续处理若干消息后必须调度出去,使其他就绪队列中的进程顺序调度和执行,防止消息缓冲时间过长影响业务的状态流程。尤其适用于业务繁重的嵌入式系统,针对消息较多的进程,调度效果明显。
在此基础上可以增加一个高优先级,将需要优先处理的进程设置为高优先级,并设置调度阈值,优先处理处于高优先级的进程,在处理该进程中的消息时,在处理完一个调度单元后,将该进程的高优先级恢复为低优先级,处理其他高优先级的进程或者在高优先级进程处理完成后处理其他低优先级的进程。
另外,在另一实施例中,在现有技术进程的普通(或称静态)优先级的基础上,还可以增加两种优先级别:超阈值优先级和运行优先级。所述运行优先级的级别高于超阈值优先级,所述超阈值优先级的级别高于静态优先级。将需要优先处理的进程设置为运行优先级,某时刻只有一个进程处于运行优先级状态;将消息量大于一定门限阈值的进程设置为超阈值优先级,设置为超阈值优先级的进程会先于静态优先级被调度。
此时,相应地还需增加一个表示是否超过门限阈值的配置参数即连续超阈值处理标签:
所述连续超阈值处理标签,用于表示某进程内未处理的消息数量是否超过一定的门限阈值(例如,超过时设置为连续状态,未超过时设置为空置状态)。
当处于静态优先级的某进程被设置了连续超阈值处理标签,则该进程的优先级会被升级为超阈值优先级;当处于运行优先级的某进程在处理完一个或几个调度单元后,仍然发现有该连续超阈值处理标签,则表示该进程内消息过多,仍需优先调度,则将该进程优先级设置为超阈值优先级;通过该标签为超负载的进程提供了又一次优先调度的权利。
此外,作为进一步的优化,各进程中的消息也可设置有多种优先级。
各应用进程由统一的进程调度实体进行配置和调度。
在设置了运行优先级和超阈值优先级的实施例中,在进行进程处理之前,首先设置调度控制信息,包括以下内容之一:各进程的连续超阈值处理标签、调度阈值、各进程内部消息的优先级别。
在进行进程处理时,不同优先级进程之间基于优先级的可抢占机制,相同优先级进程之间基于消息级的均衡分时调度机制(一级调度),进程的优先级进行实时转换,提供彼此之间的消息级均衡调度。进程内部按各消息优先级缓冲队列进行调度(二次调度),进程内按优先级高低顺序遍历各消息缓冲队列,处理队列的方式包括按照队列的先进先出方式读取缓冲队列中的消息。
具体地说,在处理进程时,系统优先处理运行优先级的进程,其次处理超阈值优先级的进程,最后处理静态优先级的进程。
当运行优先级的进程处理完成后,根据进程中未处理消息的数量是否大于连续超阈值处理标签的门限阈值,以及是否存在连续超阈值处理标签,决定将该进程的优先级设置为超阈值优先级还是静态优先级。同时,将优先级为超阈值优先级的进程升级为运行优先级,进行处理。
如果某进程正处于运行优先级,在调度下一消息前先判断该进程已处理的消息数和/或时间是否超过调度阈值以判断是否需要继续处理,未超过调度阈值时继续处理下一消息,如果超过调度阈值,再判断该进程中未处理的消息是否大于连续超阈值处理标签的门限阈值和是否置了连续超阈值处理标签,如果大于连续超阈值处理标签的门限阈值但没有连续超阈值处理标签,则设置该标签,并设置该进程为超阈值优先级,如果大于连续超阈值处理标签的门限阈值并已经设置了连续超阈值处理标签,则使该进程放权,设置该进程为静态优先级。
在本实施例中,通过超阈值优先级和连续超阈值处理标签为进程提供了一次优先处理的机会。
另外,系统中还可建立实时后台监控,提供进程内部消息超长处理告警(当单个消息处理时间超过预定时间时报警),缓冲队列超长告警(进程内未处理消息个数超过一定门限时告警)及缓冲队列恢复告警(进程内未处理消息个数恢复到门限以下时的告警),监控进程调度异常及恢复。上述告警门限可以采用与连续超阈值处理标签门限阈值相同的消息数量值,也可根据需要采用其他的消息数量值,例如比连续超阈值处理标签门限阈值更大的消息数量值。例如,若某进程中的缓冲消息数量超过最大告警阈值,则触发报警,同时,进程调度实体提升该进程的优先级别至超阈值优先级,使其有优先被调度的机会。
图1为本实施例进程调度流程图,包括以下步骤:
步骤S11、进程调度实体没有消息时一般阻塞在进程互斥资源(信号量)上,本信号量在初始时设置空置,有消息发送时,归还互斥资源,进程解阻塞,进入进程处理阶段;
步骤S12、在进程获取到CPU资源后,首先把该进程的优先级设置为运行优先级;
步骤S13、读取进程中的消息队列,进程内部可能有多个不同优先级的消息队列,按优先级依次读取,取到即返回消息句柄,进入S14消息处理步骤;若轮循没有消息,返回空,返回进行互斥资源等待(步骤S11);
步骤S14、处理一个消息;
步骤S15、进入策略调度。
本流程的主要功能是处理消息,当策略调度完成后如果还有需要处理的消息,则返回步骤S12继续处理。
图2是本实施例的策略调度流程图,此策略调度流程除了在消息调度后执行,也可以在每次处理处理完某一个或几个消息或一个调度单元之后进行判断,包括以下步骤:
步骤S21、判断本次进程调度运行中连续处理的消息数和/或处理时间是否超过规定的调度阈值,如果没有超过,结束策略调度,返回步骤S14,继续处理下一个消息,否则进入S22;
步骤S22、判断运行的进程是否设置了连续超阈值处理标签,如果是,说明当前进程已经被优先处理了一次,则应给其他优先级的进程以均衡调度的机会,进入S23;如果不是,进入S25;
步骤S23、清除连续超阈值处理标签;
步骤S24、设置当前进程的优先级为初始优先级即静态优先级,让出CPU,供超阈值优先级或其他同优先级进程调度运行,策略调度结束;
步骤S25、判断当前进程的未处理消息是否超过连续超阈值处理标签的门限阈值,如果是,则均衡调度体系给予本进程优先调度的权利,进入S26;否则,说明当前进程的消息缓冲处于比较安全的状态,直接进入S24,恢复优先级放权;
步骤S26、设置连续超阈值处理标签,设置超阈值优先级,策略调度结束。
步骤S25和S26为进程提供了又一次设置连续超阈值处理标签的机会。
如果系统处理完一个进程的一个调度单元后,没有其他同优先级进程或高优先级进行的消息需要处理,则系统仍然会调度到本进程,处理下一个调度单元。
图2是本实施例的消息调度流程图,包括以下步骤:
在进程内部,在发送消息系统调用接口中,如果消息发送成功后,进入S21步骤:
步骤S21、判断目标进程中未处理的消息是否超过连续超阈值处理标签的门限阈值:如果没有超过,目标进程进入一般的就绪队列等待调度;如果是,进入S22步骤;
步骤S22、为该进程设置连续超阈值处理标签,并设置该进程优先级为超阈值优先级,以便其能被优先调度处理。
本调度模型保证相同优先级的进程在调度和处理消息的及时、安全,避免进程非实时调度导致的消息滞后,协议状态机变迁;同时配有进程实时监控的异常告警及恢复机制。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。