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

文档序号:6457890阅读:110来源:国知局
专利名称:一种嵌入式实时系统进程均衡调度方法
技术领域
本发明涉及嵌入式实时系统,尤其涉及一种嵌入式实时系统进程均衡调 度方法。
背景技术
嵌入式实时系统是指在确定的时间内执行其功能,并对外部的异步事件 做出相应处理的计算机系统,实时系统一般应用于通信、工业控制等领域中。实时操作系统(RTOS, real-time operating system)是一个实时系统最关键的 组成部分,它通常与特定的中央处理器(CPU)、外设等共同组成一个实时系统。目前广泛应用的实时操作系统都是多进程的操作系统,实时多进程操作 系统允许多个实时应用作为一系列的独立进程来运行。从系统的角度看,进 程是竟争资源的最小运行单位,进程可以使用或等待CPU、 1/0设备及内存 空间等系统资源,并独立于其他进程,与它们一起并发运行,嵌入式操作系 统中进程最常见的是基于优先级的可抢占式的调度策略,相同优先级可以外 带时间片轮转机制。实际上,在一些大型的软件体系中,为了设计的简洁,主体软件功能模 块被设计成相同优先级的进程实体,保证各进程消息级的处理实体的完整 性。各相关进程是有某些逻辑关系的,尤其是相同优先级的进程不能随意抢 占和放权,而且消息的处理是不能被打断,现有调度的弊端是不能保证对进 程之间关联消息及时处理。发明内容本发明提供了 一种嵌入式实时系统进程均衡调度方法,既能保证各进程消息级的处理实体的完整性,也能保证对进程之间关联消息及时处理。本发明提供一种消息级的基于优先级抢占的二级调度方法,不同优先级 之间沿袭通用操作系统抢占机制,相同优先级进程之间采取均衡轮循机制。所述均衡轮循机制是指进程内采取消息级的二级调度,基于进程内消 息优先级緩冲队列,消息緩沖队列的优先级别个数依据系统的静态配置。为了解决上述技术问题,本发明提供了一种嵌入式实时系统进程均衡调 度方法,包4舌进程调度实体为各进程设置调度阈值,用于控制每次处理的消息数量和 /或处理时间;在处理进程内部消息的过程中,如果处理的消息凄史和/或处理 时间到达或超过调度阈值,则进程调度实体调度另一进程进行处理。进一步地,所述调度阈值记录了允许连续处理的消息数目和/或处理消 息的时间,在某进程中,允许连续处理的一组消息或者允许连续处理的一賴: 时间称为一个调度单元;在处理进程内部消息的过程中,将需要优先处理的 进程设置为高优先级,优先处理处于高优先级的进程,在处理该进程内部消 息时,处理完一个调度单元后,将该进程的高优先级恢复为低优先级,调度 其他高优先级的进程进行处理或者在所有高优先级进程处理完成后处理其 他低优先级的进程。进一步地,所述调度阈值记录了允许连续处理的消息数目和/或处理消 息的时间,在某进程中,允许连续处理的一组消息或者允许连续处理的一段 时间称为 一个调度单元;在处理进程内部消息的过程中,将需要优先处理的进程设置为运^f亍优先 级,将消息量大于一定门限阈值的进程设置为超阈值优先级,并为该进程设 置连续超阈值处理标签以表示消息量是否超过门限阈值,所述运行优先级的 级别高于超阈值优先级,所述超阈值优先级的级别高于普通优先级;优先处理处于运行优先级的进程,在处理该进程内部的消息时,处理完 一个调度单元后,将该进程的运行优先级降至超阈值优先级或者普通优先 级,调度其他超阈值优先级的进程进行处理,或者在所有超阈值优先级进程处理完成后处理其他普通优先级的进程。进一步地,所述方法进一步包括以下步骤(a) 在进程处理过程中,在某进程获取到CPU资源后,所述进程调度 实体将该进程的优先级设置为运行优先级;(b) 读取进程中的一个消息进行处理;(c) 进入策略调度在调度下一消息前先判断该进程处理的消息数和/ 或时间是否超过调度阈值以判断是否需要继续处理,未超过调度阈值时返回 步骤(b),继续处理下一消息;如果超过调度阈值,则将该进程的运行优 先级降至超阈值优先级或者普通优先级,返回步骤(a),处理其他进程。进一步地,判断处理的消息是否达到或超过调度阈值是指进行以下判断 中的任意一种判断当前处理的消息数量是否达到或超过消息数调度阈值;判断当前处理消息的时间是否达到或超过时间调度阈值;判断是否满足以下两个条件中的任意一个当前处理消息数达到或超过 消息数调度阈值,当前处理消息的时间达到或超过时间调度阈值。进一步地,所述将该进程的运行优先级降至超阈值优先级或者普通优先 级是指当某进程处于运行优先级且该进程已处理的消息数和/或时间超过调度 阈值时,如果该进程中未处理的消息数大于连续超阈值处理标签的门限阈值 但没有连续超阈值处理标签,则设置该标签,并将该进程优先级降至超阈值 优先级,如果该进程中未处理的消息数大于连续超阈值处理标签的门限阈值 并已经设置了连续超阈值处理标签,则将该进程优先级降至普通优先级。进一步地,在处理完一个消息后,执行以下策略调度步骤(e) 判断本次进程调度运行中连续处理的消息数和/或处理时间是否超 过规定的调度阈值,如果没有超过,继续处理下一个消息,结束策略调度; 否则执行下一步;(f) 判断运行的进程是否设置了连续超阈值处理标签,如果是,则清除连续超阈值处理标签,将当前进程的优先级降至普通优先级;否则,执行 步骤(g);(g)判断当前进程未处理的消息是否超过连续超阈值处理标签的门限 阈值,如果是,则设置连续超阈值处理标签,并将该进程优先级降至超阔值 优先级;否则,当前进程的优先级降至普通优先级,策略调度结束。进一步地,为各进程中的消息设置优先级,处理进程内部的消息时,优 先处理优先级高的消息。进一步地,提供进程内部消息超长处理告警、緩沖队列超长告警及緩沖 队列恢复告警,当单个消息处理时间超过预定时间时触发进程内部消息超长 处理告警;当进程内未处理的消息个数超过一定门限时触发緩冲队列超长告 警;当进程内未处理的消息个数恢复到门限以下时触发緩沖队列恢复告警。采用本发明所述调度方法,保证相同优先级的进程在调度和处理消息的 及时、安全,避免进程非实时调度导致的消息滞后,协议状态机变迁;同时 配有进程实时监控的异常告警及恢复机制。


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