首页> 中国专利> 一种及时消息及时处理的方法及装置

一种及时消息及时处理的方法及装置

摘要

本发明公开了一种及时消息及时处理的方法,创建基于消息级别的消息队列,该方法包括:将待处理的消息划分为及时消息和非及时消息,并分别将及时消息和非及时消息对应地插入到消息处理任务的消息队列中;判断消息处理任务中是否含有待处理的及时消息,当含有待处理的及时消息时,则提高该消息处理任务的优先级;该消息处理任务再按照提高后的优先级对待处理的及时消息进行处理。相应地,本发明提供一种及时消息及时处理的装置,包括:消息队列创建模块、调度任务模块和消息处理任务模块。因此,通过本发明能够有效达到及时消息及时处理的目的。

著录项

  • 公开/公告号CN101582786A

    专利类型发明专利

  • 公开/公告日2009-11-18

    原文格式PDF

  • 申请/专利权人 中兴通讯股份有限公司;

    申请/专利号CN200910087065.3

  • 发明设计人 陈锦威;

    申请日2009-06-17

  • 分类号H04L12/18(20060101);H04L29/08(20060101);

  • 代理机构北京派特恩知识产权代理事务所(普通合伙);

  • 代理人蒋雅洁;王黎延

  • 地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部

  • 入库时间 2023-12-17 23:01:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-07-10

    未缴年费专利权终止 IPC(主分类):H04L12/18 授权公告日:20120613 终止日期:20170617 申请日:20090617

    专利权的终止

  • 2012-06-13

    授权

    授权

  • 2010-01-13

    实质审查的生效

    实质审查的生效

  • 2009-11-18

    公开

    公开

说明书

技术领域

本发明涉及信息处理技术,特别是涉及一种及时消息及时处理的方法及装置。

背景技术

消息队列(Message Queues)是在消息的传输过程中保存消息的容器,消息队列的主要目的是提供路由并保证消息的传递,例如:发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。消息队列是一种最简单的把并行访问变成串行访问的办法,能够实现消息的异步响应,进而减少了许多在并行访问中要考虑的资源共享问题。而且,在功能扩充上也相对容易,即只需增加相应的消息队列及消息处理任务。因此,消息的异步响应提高了系统性能,并对消息处理任务赋予优先级,消息处理任务优先级高则处理消息速度快。因此,提高消息处理任务优先级就可以提高其对应的消息队列中消息的处理速度。

然而,通过提高消息处理任务优先级并不能区分对待其对应的消息队列中不同的消息。在抢占式多任务的系统中,尤其是在嵌入式系统中,有的业务是受时间限制的,这些业务对应的消息需要及时处理,如果处理不及时的话,会影响业务乃至系统性能。于是,通常称这类需要及时处理的消息为及时消息,例如:在嵌入式系统中,通过MSG_Q_FIFO创建先进先出(FIFO)的消息队列,而光纤在通信过程中发生断裂,那么上报光纤断裂的告警消息要及时处理,才能尽快倒换到备用光纤。而有的消息却没有时间限制或者对处理的时间要求不高,这样我们就要优先处理及时消息。因此,如果简单地按照先进先出的方式来处理所有的消息,倘若及时消息分配到待处理消息比较多的消息处理任务中或优先级比较低的消息处理任务中,那么就可能导致及时消息堵死在待处理消息比较多的消息处理任务中或低优先级的消息处理任务中,进而导致及时消息超时或者处理不及时,最终导致业务受到影响。

可见,这种由于只考虑任务优先级而忽略了消息优先级,所导致的及时消息不能得到及时处理的问题急需解决,但目前尚未提出有效的解决方案。

发明内容

有鉴于此,本发明的主要目的在于提供一种及时消息及时处理的方法及装置,有效达到及时消息及时处理的目的。

为达到上述目的,本发明公开了一种及时消息及时处理的方法,创建基于消息级别的消息队列,该方法包括:将待处理的消息划分为及时消息和非及时消息,并分别将及时消息和非及时消息按照消息级别对应地插入到消息处理任务的消息队列中;判断消息处理任务中是否含有待处理的及时消息,当含有待处理的及时消息时,则提高该消息处理任务的优先级;该消息处理任务再按照提高后的优先级对待处理的及时消息进行处理。

其中,所述分别将及时消息和非及时消息按照消息级别对应地插入到消息处理任务的消息队列中包括:对应非及时消息和及时消息,分别设置非及时消息和及时消息的消息级别参数,并依据所设置的消息级别参数将非及时消息对应地插入到消息队列的尾部,将及时消息对应地插入到消息队列的首部。

上述方法中,所述判断消息处理任务中是否含有待处理的及时消息包括:当判断得到该消息处理任务中不含有待处理的及时消息,则进一步判断该消息处理任务的优先级是否被提高,如果该消息处理任务的优先级被提高,该消息处理任务的优先级则降至其默认优先级,再按照默认优先级对待处理的非及时消息进行处理;如果该消息处理任务的优先级未被提高,则该消息处理任务直接按照原优先级对待处理的非及时消息进行处理。

其中,所述划分及时消息和非及时消息步骤之后,该方法还包括:建立消息映射表,将待处理的及时消息命令码、非及时消息命令码与各自对应的消息级别记录到消息映射表中;所述判断消息处理任务中是否含有待处理的及时消息包括:根据待处理消息的命令码在消息映射表中对应的消息级别,判断消息处理任务中是否含有待处理的及时消息。

其中,所述提高该消息处理任务的优先级包括:为每个消息处理任务设定默认优先级和翻转优先级,并将消息处理任务的初始优先级设置为默认优先级;

当消息处理任务含有待处理的及时消息时,将该消息处理任务的优先级由默认优先级提高到翻转优先级;其中,所述翻转优先级高于默认优先级。

为实现上述方法,本发明提供一种及时消息及时处理的装置,包括:消息队列创建模块、调度任务模块和消息处理任务模块;其中,消息队列创建模块,用于创建基于消息级别的消息队列;调度任务模块,用于将待处理的消息划分为及时消息和非及时消息,并分别将及时消息和非及时消息对应地插入到消息处理任务的消息队列中,以及用于提高及时消息及时处理的消息处理任务的优先级;消息处理任务模块,用于按照消息处理任务的优先级对所述调度任务模块插入的及时消息进行处理。

上述装置中,所述调度任务模块包括:消息分级单元、第一判断单元和任务调度单元;其中,消息分级单元,用于将待处理的消息划分为及时消息和非及时消息,并分别将及时消息和非及时消息对应地插入到消息队列中;第一判断单元,用于判断消息处理任务中是否含有待处理的及时消息,并在消息处理任务含有待处理的及时消息时,则通知任务调度单元;在消息处理任务只含有待处理的非及时消息时,则通知消息处理任务模块;任务调度单元,用于根据所述第一判断单元的通知,来提高及时消息及时处理的消息处理任务的优先级。

其中,所述消息分级单元具体用于:设置非及时消息和及时消息的消息级别参数,依据所设置的消息级别参数将非及时消息对应地插入到消息队列的尾部,将及时消息对应地插入到消息队列的首部;所述任务调度单元具体用于:为每个消息处理任务设定默认优先级和翻转优先级,并将消息处理任务的初始优先级设置为默认优先级;当消息处理任务含有待处理的及时消息时,将该消息处理任务的优先级由默认优先级提高到翻转优先级;其中,所述翻转优先级高于默认优先级。所述调度任务模块还包括:消息映射单元,用于建立消息映射表,并将待处理的及时消息命令码、非及时消息命令码与各自对应的消息级别记录到消息映射表中;所述第一判断单元,具体用于根据待处理消息的命令码在所述消息映射表中对应的消息级别,判断消息处理任务中是否含有待处理的及时消息。

上述装置中,所述消息处理任务模块包括:第二判断单元,用于根据所述调度任务模块的通知,得知消息处理任务处理非及时消息时,判断该消息处理任务的优先级是否被提高,并在该息处理任务的优先级被提高时,通知优先级调整单元;优先级调整单元,用于根据所述第二判断单元的通知,来维持处理非及时消息的消息处理任务的优先级处于默认优先级;消息处理单元,用于处理所述调度任务模块插入的及时消息和非及时消息。

由以上技术方案可以看出,本发明创建基于消息级别的消息队列,将待处理的消息划分为及时消息和非及时消息,并通过将及时消息插入该消息队列的首部以及提高含有待处理及时消息的消息处理任务的优先级,来提高对及时消息的处理速度。如此,本发明能够实现区分处理及时消息与非及时消息,提高了系统处理消息的智能性及处理及时消息的能力,达到及时处理及时消息的目的。

因此,本发明提供的这种及时消息的处理机制,解决了现有技术中及时消息难以得到及时处理的问题。

附图说明

图1为本发明及时消息及时处理的方法实现流程示意图;

图2为本发明及时消息及时处理的装置结构示意图。

具体实施方式

本发明的基本思想在于:创建基于消息级别的消息队列,将待处理的消息划分为及时消息和非及时消息,并通过将及时消息插入该消息队列的首部以及提高含有待处理及时消息的消息处理任务的优先级,来提高对及时消息的处理速度。

需要说明的是,所述消息处理任务的优先级包括:默认优先级和翻转优先级,其中,翻转优先级高于默认优先级。所述消息处理任务的优先级在默认情况下设为默认优先级,但有待处理的及时消息时,消息处理任务的优先级会从默认优先级提高到翻转优先级。

一般地,抢占式多任务系统中的实时应用由一系列互相独立又协同工作的任务组成,因此在抢占式多任务系统,尤其是嵌入式系统中,消息队列是主要的通信机制。例如:VxWorks系统的各任务之间通信主要的机制是消息队列。消息队列允许一定数量不同长度的消息进行排列。任何任务或中断服务程序(ISR)都能够发送消息给消息队列。任何任务可以从消息队列接受消息,多个消息处理任务可以从同一消息队列发送和接受消息。其中,所述嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。

具体地,消息队列具有很多函数,例如:创建并初始化消息队列函数,终止并释放消息队列函数,发送一个消息到消息队列的函数以及从消息队列接受一个消息的函数等。消息队列在创建时会设置一些参数,例如:参数MAX_MSGS指定了消息队列中可允许的最多排列消息数,参数MAX_MSG_LEN指定了每个消息允许的最大字节数。而参数MSG_Q_PRIORITY指定了消息队列中各消息的优先级。其中,所述消息的优先级根据消息级别而定,例如:及时消息的优先级高于非及时消息的优先级,因此该及时消息会位于消息队列首部。

为使本发明上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施例对本发明作进一步详细的说明。下面以嵌入式系统进行及时消息的处理为例,来说明一下本发明及时消息及时处理的方法。参照图1,示出了本发明及时消息及时处理的方法实现流程,主要包括如下步骤:

步骤101,创建基于消息级别的消息队列;

本实施例中的消息队列不同于一般的先进先出消息队列,这里,创建的是基于消息级别的消息队列,在嵌入式系统初始化时,通过调用消息队列的创建函数来创建消息队列。即:根据消息级别,将消息插入到该消息队列的尾部,或插入到该消息队列的首部,以此来区分对待不同级别的消息,如及时消息和非及时消息等。例如:在VxWorks操作系统中,使用MSG_Q_PRIORITY创建得到的是基于消息级别的消息队列。其中,所述消息级别一般指将消息划分为:及时消息和非及时消息。

步骤102,调度任务接收消息并将接收到的消息划分为及时消息和非及时消息,并分别将及时消息和非及时消息按照消息级别对应地插入到消息处理任务的消息队列中;

其中,根据消息的重要性、及时性等,调度任务将接收到的消息,如告警消息和底层的性能消息等,划分为及时(Urgent)消息和非及时(Normal)消息,及时消息的消息级别高于非及时消息的消息级别。如此,以便在向消息处理任务分发消息时,将及时消息和非及时消息按照消息级别对应地插入到消息处理任务的消息队列中,也就是说,将消息级别高的排在消息队列的首部,将消息级别低的排在消息队列的尾部,即:如果是非及时消息就将其对应地插入到消息队列的尾部,如果是及时消息就将其对应地插入到消息队列的首部。例如:在基于优先级的消息队列中,调度任务在向消息处理任务分发消息时,通过设置非及时消息的消息级别参数为MSG_PRI_NORMAL,来将非及时消息插入到该消息处理任务的消息队列尾部;通过设置及时消息的消息级别参数为MSG_PRI_URGENT,来将及时消息插入到该消息处理任务的消息队列首部。消息处理任务可以从消息队列接受消息,多个消息处理任务可以从同一消息队列发送和接受消息;另外,每个消息处理任务也可以有一个自身的消息队列。

另外,本实施例中,还会建立消息映射表,以便于在调度任务过程中判断消息处理任务中的消息是及时消息还是非及时消息。该消息映射表中记录的消息命令码与消息级别之间的映射关系,即:在划分及时消息和非及时消息时,将划分消息级别后的待处理消息的命令码与对应的消息级别记录到消息映射表中。

步骤103,调度任务判断消息处理任务中是否含有待处理的及时消息,如果含有待处理的及时消息,则执行步骤104;如果不含有待处理的及时消息,则执行步骤105;

在本步骤中,调度任务根据代表消息级别的命令码,并通过该命令码在映射表中对应的是及时消息还是非及时消息,来判断消息处理任务中的消息是及时消息还是非及时消息。例如:接收到的某消息的命令码为A1,在映射表中规定1则代表及时消息,0代表非及时消息,而命令码A1对应的是1,于是,可知命令码为A1的某消息为及时消息。

步骤104,调度任务提高含有待处理及时消息的消息处理任务的优先级,然后执行步骤107;

本实施例中,等待消息的消息处理任务按照优先级规则排列,并为每个消息处理任务设置两个优先级,即:默认优先级和翻转优先级,其中,翻转优先级高于默认优先级。而且,将消息处理任务的初始优先级设置为默认优先级,当消息处理任务要处理及时消息时,调度任务会将有待处理及时消息的消息处理任务的优先级提高到比其他没有待处理及时消息的消息处理任务的优先级都高的级别。

具体来讲,在接收到及时消息时,嵌入式系统会通过调度任务来调度含有待处理及时消息的消息处理任务,以提高该消息处理任务的优先级。主要是根据基于消息的优先级天花板算法,嵌入式系统通过调度任务的方式将有待处理及时消息的消息处理任务的优先级提高到翻转优先级。因此,本实施例设定系统中调度任务的优先级最高,即高于其它消息处理任务的优先级,如此是为了避免嵌入式系统接收的消息,尤其是及时消息得不到及时地分发。这里,设定消息处理任务的优先级满足如下条件:

M1<M2<M3<...<Mx<N1<N2<N3<...<Nx<T

其中,Mx和Nx分别为消息处理任务x的默认优先级和含有待处理及时消息时的翻转优先级,T为调度任务的优先级。那么,消息处理任务在处理一般的消息、即非及时消息时,则处于默认优先级;而当有及时消息要处理时,消息处理任务的优先级会被调度任务调度到翻转优先级。其中,将调度任务的优先级设定为最高,便于调度任务能够优先、及时地将含有待处理及时消息的消息处理任务的优先级提高至该消息处理任务的翻转优先级。因此,调度任务能够根据消息级别将消息插入到消息队列,并且能够提高含有待处理及时消息的消息处理任务的优先级。

例如:告警消息处理任务和底层性能消息处理任务的默认优先级分别为100和80,翻转优先级分别为120和110。其中,规定默认优先级和翻转优先级的数字越大,代表对应的优先级越高。当底层性能消息处理任务含有待处理的及时消息时,将该底层性能消息处理任务的优先级提高到其翻转优先级、即110,此时该底层性能消息处理任务的翻转优先级高于告警消息处理任务的默认优先级100,则该底层性能消息处理任务中的及时消息会先于告警消息处理任务而得到及时处理。当然,如果该告警消息处理任务和底层性能消息处理任务中都含有及时消息,那么这两个消息处理任务都会提高到翻转优先级,此时告警消息处理任务的翻转优先级120高于该底层性能消息处理任务的翻转优先级110,此时,依然优先处理该告警消息处理任务中的及时消息。

步骤105,消息处理任务判断其默认优先级是否被改变,如果被改变,则执行步骤106;如果未被改变,则执行步骤107;

步骤106,消息处理任务的优先级从翻转优先级降回默认优先级,然后执行步骤107;

当处理完所有及时消息以后,消息处理任务要检查自己的优先级是否被改变,如果被改变,消息处理任务的优先级则会降回默认优先级。如果未被改变,则该消息处理任务的优先级即为默认优先级,不必调动。

步骤107,消息处理任务按照消息处理任务的优先级对待处理的消息进行处理。

步骤107中,如果是含有待处理及时消息的消息处理任务,则是按照提高后的优先级对待处理的及时消息进行处理;消息处理任务在对非及时消息进行处理时,如果该消息处理任务的优先级未被提高,则是按照原优先级对待处理的非及时消息进行处理;如果该消息处理任务的优先级被提高了,则先将自身的优先级则降至其默认优先级,再按照默认优先级对待处理的非及时消息进行处理。

对于上述的各实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。

为实现上述方法,本发明还提供一种及时消息及时处理的装置,如图2所示,包括:消息队列创建模块201、调度任务模块202和消息处理任务模块203;其中,

消息队列创建模块201,用于创建基于消息级别的消息队列;

调度任务模块202,用于将待处理的消息划分为及时消息和非及时消息,并分别将及时消息和非及时消息对应地插入到消息处理任务的消息队列中,以及用于提高含有待处理及时消息的消息处理任务的优先级;

消息处理任务模块203,用于按照消息处理任务的优先级对所述调度任务模块插入的及时消息进行处理。

上述装置中,所述调度任务模块202包括:消息分级单元、第一判断单元和任务调度单元;其中,

消息分级单元,用于将待处理的消息划分为及时消息和非及时消息,并分别将及时消息和非及时消息对应地插入到消息队列中;

第一判断单元,用于判断消息处理任务中是否含有待处理的及时消息,并在消息处理任务含有待处理的及时消息时,则通知任务调度单元;在消息处理任务只含有待处理的非及时消息时,则通知所述消息处理任务模块203;

任务调度单元,用于根据所述第一判断单元的通知,来提高及时消息及时处理的消息处理任务的优先级。

所述消息分级单元具体用于:设置非及时消息和及时消息的消息级别参数,依据所设置的消息级别参数将非及时消息对应地插入到消息队列的尾部,将及时消息对应地插入到消息队列的首部。

其中,所述调度任务模块202还包括:消息映射单元,用于建立消息映射表,并将待处理的及时消息命令码、非及时消息命令码与各自对应的消息级别记录到消息映射表中;而第一判断单元,具体用于根据待处理消息的命令码在所述消息映射表中对应的消息级别,判断消息处理任务中是否含有待处理的及时消息。

所述任务调度单元具体用于:为每个消息处理任务设定默认优先级和翻转优先级,并将消息处理任务的初始优先级设置为默认优先级;当消息处理任务含有待处理的及时消息时,将该消息处理任务的优先级由默认优先级提高到翻转优先级;其中,所述翻转优先级高于默认优先级。

上述装置中,所述消息处理任务模块203包括:

第二判断单元,用于根据所述调度任务模块202的通知,得知消息处理任务处理非及时消息时,判断该消息处理任务的优先级是否被提高,并在该息处理任务的优先级被提高时,通知优先级调整单元;

优先级调整单元,用于根据所述第二判断单元的通知,来维持处理非及时消息的消息处理任务的优先级处于默认优先级;

消息处理单元,用于处理所述调度任务模块202插入的及时消息和非及时消息。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述即可。以上所述,仅为本发明的较佳实施例而已,只是用来说明和解释本发明,并非用于限定本发明的保护范围。在本发明的精神和权利要求保护范围之内,对本发明所作的任何修改、等同替换,都落入本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号