基于多任务操作系统的事件处理方法、装置及存储介质与流程

文档序号:18100814发布日期:2019-07-06 11:20阅读:175来源:国知局
基于多任务操作系统的事件处理方法、装置及存储介质与流程

本发明涉及物联网技术领域,尤其是一种基于多任务操作系统的事件处理方法、装置及存储介质。



背景技术:

物联网是被业界普遍关注的一个广域网络市场,物联网的核心是各种智能设备。要让这些智能设备联网,就必须采用物联网操作系统,因此所有这些物联网设备都是物联网操作系统的目标用户。同时大部分物联网设备,要求具备体积小,功耗低,集成度高等特点,这就决定了运行在其上的操作系统,必须能在极其有限的资源上运行,而多任务操作系统,如contiki操作系统就具备该特点,当前并广泛的应用于多种类型的物联网设备中。

目前,多任务操作系统中通过使用一个静态数组来放置所有线程发送来的事件,该静态数组的位数是固定值,每一位可以对应存储一个事件,因此所能容纳的最大事件的数量是个固定值,然后在每个时钟周期到来后,从容纳事件的静态数组中取出相应的事件分别处理,完成对每个事件的响应。

而每个线程的事件发生时刻不是固定的,如果在同一时间点由多个线程产生多个事件,超出了数组所容纳的最大长度,则产生的事件就要被丢弃,造成事件丢失,极端情况下如果该事件为极其重要的事件,则会因为丢失不能被正常处理导致应用线程运行失败,或者控制失灵。



技术实现要素:

为解决现有存在的技术问题,本发明实施例提供一种可以避免事件丢失的基于多任务操作系统的事件处理方法、装置及存储介质。

为达到上述目的,本发明的技术方案是这样实现的:

本发明实施例提供了一种基于多任务操作系统的事件处理方法,所述方法包括:当设置的时钟周期到来时,根据事件数组中各类别待处理事件的当前优先级确定当前响应事件;根据所述当前响应事件执行对应的程序,对所述当前响应事件进行处理。

其中,所述当设置的时钟周期到来时,根据事件数组中各类别待处理事件的优先级确定当前响应事件之前,还包括:检测事件动态的发生情况;当发生事件动态时,根据所述事件动态的类型以及对应事件的类别属性确定所述事件数组中对应类别的待处理事件,并更新所述类别的待处理事件的当前优先级。

其中,所述当发生事件动态时,根据所述事件动态的类型以及对应事件的类别属性确定所述事件数组中对应类别的待处理事件,并更新所述类别的待处理事件的当前优先级,包括:当事件发生时,根据所述事件的类别属性确定所述事件数组中对应类别的待处理事件,更新所述对应类别的待处理事件的计数属性值,其中所述计数属性值包括计数器;根据所述对应类别的待处理事件的计数属性值,更新所述对应类别的待处理事件的当前优先级。

其中,所述计数器包括事件计数器和事件融合计数器,所述更新所述对应类别的待处理事件的计数属性值包括:将所述事件计数器的值加1;当所述事件计数器的值超过设置的第一阈值时,将所述事件融合计数器的值加1,并将所述事件计数器的值清零;所述根据所述对应类别的待处理事件的计数属性值更新所述对应类别的待处理事件的当前优先级包括:当所述事件融合计数器的值超过设置的第二阈值时,更新所述对应类别的待处理事件的当前优先级。

其中,所述当发生事件动态时,根据所述事件动态的类型以及对应事件的类别属性确定所述事件数组中对应类别的待处理事件,并更新所述类别的待处理事件的当前优先级,包括:当设置的时钟周期到来时,确定事件数组中各类别待处理事件中对应的非当前响应事件,分别更新所述各类别非当前响应事件对应的等候属性值;根据所述各类别的非当前响应事件的等候属性值,更新所述各类别的非当前响应事件的当前优先级。

其中,所述当发生事件动态时,根据所述事件动态的类型以及对应事件的类别属性确定所述事件数组中对应类别的待处理事件,并更新所述类别的待处理事件的当前优先级,包括:当事件处理时,根据所述事件对应的类别属性确定所述事件数组中对应类别的待处理事件,更新所述对应类别的待处理事件的处理属性值;根据所述对应类别的待处理事件的处理属性值,更新所述对应类别的待处理事件的当前优先级。

其中,所述根据事件数组中各类别待处理事件的当前优先级确定当前响应事件,包括:根据事件数组中各类别待处理事件的当前优先级,将当前优先级最高的类别的待处理事件确定为当前响应事件;和/或,根据事件数组中各类别待处理事件的当前优先级,将当前优先级相对较高的多个类别的待处理事件进行排序,并将所述多个类别的待处理事件确定为当前响应事件。

其中,所述根据事件数组中各类别待处理事件的当前优先级确定当前响应事件,包括:获取事件数组中各类别待处理事件的当前优先级,当所述事件数组中所述各类别待处理事件中的至少两个类别事件的当前优先级相同时,获取所述至少两个类别事件的服务权重,根据所述服务权重确定当前响应事件。

本发明实施例提供了一种基于多任务操作系统的事件处理装置,所述装置包括:确定模块和处理模块;其中,所述确定模块,用于当设置的时钟周期到来时,根据事件数组中各类别待处理事件的当前优先级确定当前响应事件;所述处理模块,用于根据所述当前响应事件执行对应的程序,对所述当前响应事件进行处理。

本发明实施例提供了一种基于多任务操作系统的事件处理装置,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器;其中,所述处理器用于运行所述计算机程序时,实现本发明任一实施例所述的基于多任务操作系统的事件处理方法。

本发明实施例提供了一种计算机存储介质,所述计算机存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现本发明任一实施例所述的基于多任务操作系统的事件处理方法。

本发明实施例提供的基于多任务操作系统的事件处理方法、装置及存储介质,当设置的时钟周期到来时,根据事件数组中各类别待处理事件的当前优先级确定当前响应事件;根据所述当前响应事件执行对应的程序,对所述当前响应事件进行处理,其中事件数组中对待处理事件以类别进行区分存储,保证了在有限的静态数组中可以存放更多的事件,避免丢失同类事件,并通过对事件数组中各类别的待处理事件设置优先级,相同类别的待处理事件具有相同优先级,根据各类别的待处理事件的当前优先级确定当前响应事件,保证了紧急事件可以快速处理。

附图说明

图1为本发明一实施例提供的基于多任务操作系统的事件处理方法的流程示意图;

图2为本发明一实施例提供的基于多任务操作系统的事件处理装置的结构示意图;

图3为本发明另一实施例提供的基于多任务操作系统的事件处理方法的流程示意图;

图4为本发明一实施例中更新待处理事件的当前优先级的流程示意图;

图5为本发明另一实施例中更新待处理事件的当前优先级的流程示意图;

图6为本发明又一实施例中更新待处理事件的当前优先级的流程示意图;

图7为本发明另一实施例提供的基于多任务操作系统的事件处理装置的结构示意图。

具体实施方式

以下结合说明书附图及具体实施例对本发明技术方案做进一步的详细阐述。除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。

如图1所示,本发明一实施例提供了一种基于多任务操作系统的事件处理方法,该方法包括如下步骤:

步骤101:当设置的时钟周期到来时,根据事件数组中各类别待处理事件的当前优先级确定当前响应事件;

这里,多任务操作系统在每一个时钟周期到来时,从事件数组中确定相应的待处理事件为当前响应事件进行处理。具体地,多任务操作系统中设置有时钟周期,当设置的时钟周期到来时,多任务操作系统可以判断事件数组中各类别待处理事件中最高优先级的类别待处理事件,确定其为当前响应事件。

在实际应用中,时钟周期可根据所述多任务操作系统的处理能力或者运行环境等条件进行设置,如时钟周期可以设置为1ms。当时钟周期到来时,多任务操作系统确定事件数组中各类别中当前优先级中优先级最高的类别的待处理事件为当前响应事件;在下一个周期到来时,多任务操作系统重新判断事件数组各类别中当前优先级中优先级最高的类别的待处理事件为当前响应事件。

这里,事件数组中各类别是指根据所述待处理事件的类别属性,根据待处理事件的类别属性进行分类后相同类别的待处理事件存储于事件数组中的一个相同位置。事件数组是指多任务操作系统中用来放置所有线程发送过来的事件,所述事件数组中的位数是一个固定值。所述多任务操作系统根据对事件数组中待处理事件的类别属性对所述事件进行分类,属于同一类别的事件放置于事件数组中一个相同位置;通过对事件进行分类,将同一类别的事件放置于一个数组中,保证了一个时钟周期内,当多个线程产生的多个事件时,相同或同类事件只需占用事件数组中的一个位置,从而对多个事件进行存储时不会超出事件数组所容纳的最大数量,确保了相同或者同类事件不会丢失。可以理解的,相同类别的待处理事件可以是指类别属性完全相同的事件,即相同事件;也可以是指类别属性符合设置关联要求的相似事件,即同类事件。

这里,多任务操作系统在事件数组中对事件进行分类时,在时钟周期到来时,根据当前各类别待处理事件的最高优先级确定当前响应事件。

步骤102:根据所述当前响应事件执行对应的程序,对所述当前响应事件进行处理。

具体地,多任务操作系统根据预先设置的各类别事件和程序的对应关系进行查找,确定当前响应事件以及对应的执行程序,对当前响应事件进行处理。

这里,根据事件数组中各类别待处理事件的当前优先级确定当前响应事件时,说明在一个周期到来时,所述多任务操作系统已经确定当前周期内最高优先级响应事件,并按照对应的程序对其进行处理。

本发明上述实施方式中,当设置的时钟周期到来时,多任务操作系统根据事件数组中各类别待处理事件的当前优先级确定当前响应事件;根据所述当前响应事件执行对应的程序,对所述当前响应事件进行处理。如此,对事件数组中各类别待处理事件确定当前优先级次序,保证了紧急事件可以快速处理。与现有技术中在每个时钟周期到来时,从容纳事件的事件数组中取出按照时间先后顺序依次到来的各个事件分别处理,完成对每个事件的响应的方法相比,本发明上述实施方法中,对事件数组中的事件进行分类,对各分类事件预先设置优先级,当设置的时钟周期到来时,确保当前各类别待处理事件中当前优先级更高的事件可以优先处理;其次,相同类别的待处理事件仅占用事件数组中的一个位置,大大的提高了事件数组中待处理事件的容量,避免了事件丢失。

在另一具体实施方式中,所述当设置的时钟周期到来时,根据事件数组中各类别待处理事件的优先级确定当前响应事件之前,该方法还可包括:

检测事件动态的发生情况;

当发生事件动态时,根据所述事件动态的类型以及对应事件的类别属性确定所述事件数组中对应类别的待处理事件,并更新所述类别的待处理事件的当前优先级。

这里,事件动态是指事件状态发生变化,如事件发生、事件处理、事件未处理(事件延迟)等。具体的,多任务操作系统可以根据在上一时钟周期结束到下一时钟周期到来时,事件发生、事件处理或事件延迟等事件状态变化情况,对事件状态变化有更新的事件所对应在事件数组中的待处理事件的当前优先级进行对应的更新,以使得事件数组中各类别的待处理事件的当前优先级根据事件状态的变化而实时更新,确保每一时间周期到来时,各类别的待处理事件的当前优先级可以准确反映到该类别待处理事件的紧急程度。在一实施例中,多任务操作系统检测事件动态的发生情况包括:多任务操作系统在上一时钟周期结束到下一时钟周期到来时,根据接收到事件发生、事件处理或者事件延迟的情况进行检测,当发生事件动态时,根据事件动态的类型以及对应事件的类别属性确定事件数组中对应类别的待处理事件,并根据多任务操作系统预先设置的对应的优先级规则更新发生事件动态的类别的待处理事件的当前优先级。

这里,更新发生事件动态的类别的待处理事件的当前优先级可以是对待处理事件的当前优先级加n或者减n,n=1,2…;具体可以根据所述多任务操作系统预先设置的规则进行调整。

如此,通过对不同类别的待处理事件设置优先级,并根据同一类别的待处理事件的事件动态发生情况实时更新相对应的当前优先级,保证了紧急事件可以快速处理。

在一具体实施方式中,所述当发生事件动态时,根据所述事件动态的类型以及对应事件的类别属性确定所述事件数组中对应类别的待处理事件,并更新所述类别的待处理事件的当前优先级,包括:

当事件发生时,根据所述事件的类别属性确定所述事件数组中对应类别的待处理事件,更新所述对应类别的待处理事件的计数属性值,其中所述计数属性值包括计数器;

根据所述对应类别的待处理事件的计数属性值,更新所述对应类别的待处理事件的当前优先级。

这里,事件的属性中包含计数属性,计数属性值是指事件数组中同一类别的待处理事件的数量。这里,可以通过计数器来实现对计数属性值的计数。在一实施例中,当事件发生时,多任务操作系统根据所发生的事件的类别属性,确定事件数组中与该事件对应的相同类别的待处理事件,并对该对应的相同类别的待处理事件的计数器的值加1。

这里,所述多任务操作系统可以预先设置各类别待处理事件的计数属性值和事件当前优先级之间的对应关系。如,当所述待处理事件的计数属性值达到预设的阈值时,则对该对应的相同类别的的待处理事件的当前优先级进行更新,如当待处理事件的计数属性值达到预设的阈值时,则将该类别的待处理事件的当前优先级的值加1。

如此,当某一类别事件的数量过多而未被处理时,通过上述计数属性值的设定,在计数属性值达到预设的阈值时,所述类别对应的待处理事件的当前优先级将会增加,从而确保待处理事件的当前优先级能够准确反映事件的紧急程度,当待处理事件的当前优先级符合于每一时钟周期到来时确定当前响应事件的条件时,便能够得到及时处理,避免了同一类别的事件过多的堆积而不被处理。同时,在同一时刻相同类别的事件在事件数组中只占用一个空间的位置,保证了在有限的事件数组静态变量范围内可以存在多种类型的事件,避免丢失相同的事件。

在另一具体实施方式中,所述计数器包括事件计数器和事件融合计数器,所述更新所述对应类别的待处理事件的计数属性值包括:

将所述事件计数器的值加1;

当所述事件计数器的值超过设置的第一阈值时,将所述事件融合计数器的值加1,并将所述事件计数器的值清零;

所述根据所述对应类别的待处理事件的计数属性值更新所述对应类别的待处理事件的当前优先级包括:

当所述事件融合计数器的值超过设置的第二阈值时,更新所述对应类别的待处理事件的当前优先级。

如此,通过设置事件计数器和融合计数器,事件计数器随着每一次事件发生进行累积计数,融合计数器则随着事件计数器的计数达到设定值时进行累积计数,融合计数器可以作为事件计数器的进位,通过融合计数器可以增加对相同类别的事件进行计数的最大值,如通过事件计数器对相同类别的事件进行计数的最大值为9,而通过事件计数器和融合计数器对相同类别的事件进行计数的最大值为99。如此,对于系统中会频繁产生且重要性可能不高的事件,可以等待其事件的计数属性累加到一定程度后再进行处理,有效的避免了有些事件自身的重要性不高,但是会频繁产生,而整个系统在每个时钟周期到来时都要忙于处理此类事件,容易导致一些重要的事件的滞后处理。

在另一具体实施方式中,所述当发生事件动态时,根据所述事件动态的类型以及对应事件的类别属性确定所述事件数组中对应类别的待处理事件,并更新所述类别的待处理事件的当前优先级,包括:

当设置的时钟周期到来时,确定事件数组中各类别待处理事件中对应的非当前响应事件,分别更新所述各类别非当前响应事件对应的等候属性值;

根据所述各类别的非当前响应事件的等候属性值,更新所述各类别的非当前响应事件的当前优先级。

这里,事件的属性中包含等候属性,等候属性值是指反映事件数组中相同类别的待处理事件被延迟的状态的一个属性值。当设置的时钟周期到来时,将事件数组中各类别待处理事件中确定为当前响应事件之外的其它事件均确定为非当前响应事件,这些非当前响应事件在当前时钟周期内均由于当前优先级不符合当前响应事件的条件而延迟处理,本发明实施例中称之为事件延迟。可以理解的,一个事件延迟的发生与一个时钟周期对应,每一个时钟周期到来时,即可以对当前周期内未处理的各类别的待处理事件的等候属性值进行更新,确定所述各类别的非当前响应事件分别对应的等候属性值,对非当前响应事件对应类别的等候属性值分别进行更新。这里,可以通过计数器来实现对等候属性值的计数。

这里,所述多任务操作系统可以预先设置各类别非当前响应事件的等候属性值和事件当前优先级之间的对应关系。当所述非当前响应事件的等候属性值达到预设的阈值时,对该对应类别的非当前响应事件的当前优先级进行更新。这里,可以是对非当前响应事件对应类别的待处理事件的当前优先级的值加1。

如此,通过设置等候属性值,当某一类别的待处理事件在多个时钟周期到来时,一直未被处理的情况下,其等候属性值会持续增加,当等候属性值达到设定条件时,通过提高所述类别的待处理事件的当前优先级,从而确保待处理事件的当前优先级能够准确反映事件的紧急程度,当待处理事件的当前优先级符合于每一时钟周期到来时确定当前响应事件的条件时,便能够得到及时处理,确保了事件数组中各类别的待处理事件的紧急程度可以实时动态更新,并根据实际紧急程度都能得到多任务操作系统的及时处理。

在另一具体实施方式中,所述当发生事件动态时,根据所述事件动态的类型以及对应事件的类别属性确定所述事件数组中对应类别的待处理事件,并更新所述类别的待处理事件的当前优先级,包括:

当事件处理时,根据所述事件对应的类别属性确定所述事件数组中对应类别的待处理事件,更新所述对应类别的待处理事件的处理属性值;

根据所述对应类别的待处理事件的处理属性值,更新所述对应类别的待处理事件的当前优先级。

这里,事件的属性包含处理属性,处理属性值是指反映事件数组中相同类别的待处理事件是否在被处理的状态的一个属性值。当设置的时钟周期到来时,将事件数组中各类别待处理事件中的当前优先级符合条件时确定为当前响应事件,该响应事件在当前时钟周期内被处理,本发明实施例中称之为事件处理。可以理解的是,一个事件的处理与一个时钟周期对应,每一个时钟周期到来时,即可以对当前周期内被处理类别的待处理事件的处理属性值进行更新,当事件处理时,根据处理事件对应的类别属性确定其对应于事件数组中对应类别的待处理事件,对对应类别的待处理事件的处理属性值分别进行更新。这里,可以通过计数器来实现对处理属性值的计数。

这里,所述多任务操作系统可以预先设置处理属性值和事件的当前优先级之间的对应关系。当事件处理时,所述被处理事件对应的类别的处理属性值达到预设的阈值时,对该被处理事件对应类别的当前响应事件的当前优先级进行更新。这里,可以是对被处理事件对应的类别的待处理事件的当前优先级的值减1。

如此,通过设置处理属性值,在时钟周期到来时,当某一类别的待处理事件被处理后,其处理属性值会增加,当处理属性值达到设定条件时,通过降低所述类别的待处理事件的当前优先级,从而确保待处理事件的当前优先级能够准确反映事件的紧急程度,确保了事件数组中各类别的待处理事件的紧急程度可以实时动态更新,并根据实际紧急程度都能得到多任务操作系统的及时处理。

在另一具体实施方式中,所述根据事件数组中各类别待处理事件的当前优先级确定当前响应事件,包括:

根据事件数组中各类别待处理事件的当前优先级,将当前优先级最高的类别的待处理事件确定为当前响应事件;和/或,

根据事件数组中各类别待处理事件的当前优先级,将当前优先级相对较高的多个类别的待处理事件进行排序,并将所述多个类别的待处理事件确定为当前响应事件。

多任务操作系统确定当前响应事件的主要方式包括:第一,事件数组中当前优先级最高的同一类别的待处理事件;第二,事件数组中当前优先级排序在前的预设数量的多个类别的待处理事件。其中,上述两种方式可以根据实际情况进行设置,如多任务操作系统可以根据对应类别的待处理事件的情况来设置处理一类别待处理事件和/或处理设置的多个类别的待处理事件。上述两种方式还可以是由多任务操作系统根据时钟周期的长度以及所确定的当前响应事件的数量而确定,如时钟周期为1ms,而根据当前优先级最高的同一类别的待处理事件的数量不满足设置数量时,可以进一步确定根据当前优先级排序,依次确定当前优先级次高的同一类别的待处理事件的数量,直至确定为当前响应事件的待处理事件的数量满足设置数量。

在另一具体实施方式中,所述根据事件数组中各类别待处理事件的当前优先级确定当前响应事件,包括:

获取事件数组中各类别待处理事件的当前优先级,当所述事件数组中所述各类别待处理事件中的至少两个类别事件的当前优先级相同时,获取所述至少两个类别事件的服务权重,根据所述服务权重确定当前响应事件。

这里,事件的属性还包括服务权重,服务权重用于表征事件数组中各类别事件的第二优先级。当所述事件数组中所述各类别待处理事件中的至少两个类别事件的当前优先级相同时,根据预先设置的服务权重,即第二层优先级关系,当前优先级相同的各类别事件预先设置的第二层优先级关系确定当前响应事件。

如此,通过预先设置的服务权重,各类别待处理事件中至少两个类别事件的当前优先级相同时,确定当前响应事件。保证了多任务操作系统在任意时刻能够实现对所述多任务操作系统当前紧急程度更高类别的待处理事件进行及时处理。

请参阅图2,本发明实施例还提供了一种基于多任务操作系统的事件处理装置,包括:确定模块10和处理模块11;其中,

所述确定模块10,用于当设置的时钟周期到来时,根据事件数组中各类别待处理事件的当前优先级确定当前响应事件;

所述处理模块11,用于根据所述当前响应事件执行对应的程序,对所述当前响应事件进行处理。

本发明上述实施方式中,当设置的时钟周期到来时,所述确定模块10根据事件数组中各类别待处理事件的当前优先级确定当前响应事件;所述处理模块根据所述当前响应事件执行对应的程序,对所述当前响应事件进行处理。如此,对事件数组中各类别待处理事件确定优先级次序,保证了紧急事件可以快速处理。与现有技术中在每个时钟周期到来时,从容纳事件的事件数组中取出按照时间先后顺序依次到来的各个事件分别处理,完成对每个事件的响应的方法相比,本发明上述实施方法中,对事件数组中的事件进行分类,对各分类事件预先设置优先级,当设置的时钟周期到来时,确保当前各类别待处理事件中当前优先级更高的事件可以优先处理;其次,相同类别的待处理事件仅占用事件数组中的一个位置,大大的提高了事件数组中待处理事件的容量,避免了事件丢失。

在另一具体实施方式中,该装置还可包括:检测模块12和更新模块13;其中,

所述检测模块12,用于检测事件动态的发生情况;

所述更新模块13,用于当发生事件动态时,根据所述事件动态的类型以及对应事件的类别属性确定所述事件数组中对应类别的待处理事件,并更新所述类别的待处理事件的当前优先级。

如此,通过对不同类别的事件设置优先级,并根据同类事件的事件动态发生情况实时更新相对应的当前优先级,保证了紧急事件可以快速处理。

在另一具体实施方式中,所述更新模块13还用于:

当事件发生时,根据所述事件的类别属性确定所述事件数组中对应类别的待处理事件,更新所述对应类别的待处理事件的计数属性值,其中所述计数属性值包括计数器;

根据所述对应类别的待处理事件的计数属性值,更新所述对应类别的待处理事件的当前优先级。

如此,当某一类别事件的数量过多而未被处理时,通过上述计数属性值的设定,在计数属性值达到预设的阈值时,所述类别对应的待处理事件的当前优先级将会增加,从而确保待处理事件的当前优先级能够准确反映事件的紧急程度,当待处理事件的当前优先级符合于每一时钟周期到来时确定当前响应事件的条件时,便能够得到及时处理,避免了同一类别的事件过多的堆积而不被处理。同时,在同一时刻相同类别的事件在事件数组中只占用一个空间的位置,保证了在有限的事件数组静态变量范围内可以存在多种类型的事件,避免丢失相同的事件。

在一具体实施方式中,所述计数器包括事件计数器和事件融合计数器,所述更新所述对应类别的待处理事件的计数属性值包括:

将所述事件计数器的值加1;

当所述事件计数器的值超过设置的第一阈值时,将所述事件融合计数器的值加1,并将所述事件计数器的值清零;

所述根据所述对应类别的待处理事件的计数属性值,更新所述对应类别的待处理事件的当前优先级包括:

当所述事件融合计数器的值超过设置的第二阈值时,更新所述对应类别的待处理事件的当前优先级。

如此,对于系统中会频繁产生且重要性可能不高的事件,可以等待其事件的计数属性累加到一定程度后再进行处理,有效的避免了有些事件自身的重要性不高,但是会频繁产生,而整个系统在每个时钟周期到来时都要忙于处理此类事件,容易导致一些重要的事件的滞后处理。

在另一具体实施方式中,所述更新模块13还用于:

当设置的时钟周期到来时,确定事件数组中各类别待处理事件中对应的非当前响应事件,分别更新所述各类别非当前响应事件对应的等候属性值;

根据所述各类别的非当前响应事件的等候属性值,更新所述各类别的非当前响应事件的当前优先级。

如此,通过设置等候属性值,当某一类别的待处理事件在多个时钟周期到来时,一直未被处理的情况下,其等候属性值会持续增加,当等候属性值达到设定条件时,通过提高所述类别的待处理事件的当前优先级,从而确保待处理事件的当前优先级能够准确反映事件的紧急程度,当待处理事件的当前优先级符合于每一时钟周期到来时确定当前响应事件的条件时,便能够得到及时处理,确保了事件数组中各类别的待处理事件的紧急程度可以实时动态更新,并根据实际紧急程度都能得到多任务操作系统的及时处理。

在另一具体实施方式中,所述更新模块13还用于:

当事件处理时,根据所述事件对应的类别属性确定所述事件数组中对应类别的待处理事件,更新所述对应类别的待处理事件的处理属性值;

根据所述对应类别的待处理事件的处理属性值,更新所述对应类别的待处理事件的当前优先级。

如此,通过设置处理属性值,在时钟周期到来时,当某一类别的待处理事件被处理后,其处理属性值会增加,当处理属性值达到设定条件时,通过降低所述类别的待处理事件的当前优先级,从而确保待处理事件的当前优先级能够准确反映事件的紧急程度,确保了事件数组中各类别的待处理事件的紧急程度可以实时动态更新,并根据实际紧急程度都能得到多任务操作系统的及时处理。

在另一具体实施方式中,所述确定模块10还用于:

根据事件数组中各类别待处理事件的当前优先级,将当前优先级最高的类别的待处理事件确定为当前响应事件;和/或,

根据事件数组中各类别待处理事件的当前优先级,将当前优先级相对较高的多个类别的待处理事件进行排序,并将所述多个类别的待处理事件确定为当前响应事件。

在另一具体实施方式中,所述确定模块10还用于:

获取事件数组中各类别待处理事件的当前优先级,当所述事件数组中所述各类别待处理事件中的至少两个类别事件的当前优先级相同时,获取所述至少两个类别事件的服务权重,根据所述服务权重确定当前响应事件。

如此,通过预先设置的服务权重,各类别待处理事件中至少两个类别事件的当前优先级相同时,确定当前响应事件。保证了多任务操作系统在任意时刻能够实现对所述多任务操作系统当前紧急程度更高类别的待处理事件进行及时处理。

请参阅图3,下面通过一个具体示例对本实施例基于多任务操作系统的事件处理方法作进一步详细的说明,其中,多任务操作系统具体以contiki操作系统为例,contiki操作系统处理的任务表现为线程或者进程,而在处理中表现为对一系列的事件的处理,一个任务需要多个事件组成,完成一个任务。contiki操作系统中使用一个事件数组来放置所有线程发送来的事件,所述事件数组为静态数组,该事件数组的位数为固定值。其中,所述基于多任务操作系统的事件处理方法包括以下步骤:

步骤s21:初始化事件数组中各类别事件的优先级为初始优先级;

步骤s22:检测事件动态的发生情况;

步骤s23:当发生事件动态时,根据所述事件动态的类型以及对应事件的类别属性确定所述事件数组中对应类别的待处理事件,并更新所述类别的待处理事件的当前优先级;

步骤s24:当设置的时钟周期到来时,根据事件数组中各类别待处理事件的当前优先级确定当前响应事件;

这里,当所述事件数组中所述各类别待处理事件中的至少两个类别事件的当前优先级相同时,当前优先级相同的各类别事件根据预先设置的服务权重关系确定当前响应事件。服务权重值高的事件先得到处理,然后再处理服务权重值低的事件。

步骤s25:根据所述当前响应事件执行对应的程序,对所述当前响应事件进行处理。

如此,可以解决contiki操作系统中同一时间点产生多个事件的情况下,所引发的事件丢失问题,从而保证所有事件都可以得到处理,解决突发事件的拥塞问题;同时,对事件数组中各类别待处理事件确定当前优先级次序,保证了紧急事件可以快速处理;相同类别的待处理事件仅占用事件数组中的一个位置,大大的提高了事件数组中待处理事件的容量,避免了事件丢失;有效的避免了有些事件自身的重要性不高,但是会频繁产生,而整个系统在每个时钟周期到来时都要忙于处理此类事件,容易导致一些重要的事件的滞后处理。

其中,所述步骤s23中,更新待处理时间的当前优先级的方法主要包括以下三种情况。

第一种,请参阅图4,当所述发生动态为事件发生时,所述根据所述事件动态的类型以及对应事件的类别属性确定所述事件数组中对应类别的待处理事件,并更新所述类别的待处理事件的当前优先级,具体包括:

步骤s31:事件发生;多任务操作系统检测是否有事件发生。

步骤s32:判断与该事件对应的系统类别的待处理事件;当有事件发生时,多任务操作系统根据发生的事件的类别属性,确定事件数组中与该事件对应的待处理事件的类别。

步骤s33:事件计数器的值加1;多任务操作系统将事件数组中对应类别的待处理事件的属性中的事件计数属性进行更新,具体的,将事件计数器的值加1。

这里,当事件发生时,contiki操作系统根据所发生的事件的类别属性,确定事件数组中与该事件对应的相同类别的待处理事件,并对该对应的相同类别的待处理事件的计数器的值加1。

步骤s34:超过事件计数器设置的第一阈值;

步骤s35:事件融合计数器的值加1;这里,待处理事件的属性中的事件计数属性还包括事件融合计数器,当事件计数器的值超过第一阈值时,则向融合计数器进位。具体的,如果事件计数器的值超过了事件计数器预先设定的阈值后,事件融合计数器的值就加1,事件计数器的值清零,开始新一轮的计数;

步骤s36:超过事件融合计数器设置的第二阈值;

步骤s37:更新该类处理事件的当前优先级。

这里,当事件融合计数器的值超过了事件融合计数预先设定的阈值后,该事件对应类别的待处理事件的优先级就自动加1,事件融合计数器的值清零;开始新一轮的计数。

第二种,请参阅图5,当事件发生动态为事件未处理(事件延迟)时,所述根据所述事件动态的类型以及对应事件的类别属性确定所述事件数组中对应类别的待处理事件,并更新所述类别的待处理事件的当前优先级,具体包括:

步骤s41:时钟周期到来时;

这里,将事件数组中各类别待处理事件中确定为当前响应事件之外的其它事件均确定为非当前响应事件。

步骤s42:判断是否为非当前响应事件;

步骤s43:等候计数器的值加1;多任务操作系统将事件数组中对应类别的待处理事件的属性中的事件等候属性进行更新,具体的,将等候计数器的值加1。

这里,系统的每个时钟周期到来时,确定事件数组中各类别待处理事件中对应的非当前响应事件,分别对所述各类别非当前响应事件对应的事件等候计数器的值加1。

步骤s44:超过等候计数器预设的阈值;

步骤s45:更新该类别待处理事件的当前优先级。

这里,当事件等候计时器的值超过预先设定的阈值后,该事件对应类别的待处理事件的优先级就自动加1,然后事件等候计数器的值的值清零;开始新一轮计数。

第三种,请参阅图6,当所述发生动态为事件处理时,所述根据所述事件动态的类型以及对应事件的类别属性确定所述事件数组中对应类别的待处理事件,并更新所述类别的待处理事件的当前优先级,具体包括:

步骤s51:当事件处理时;

这里,将事件数组中各类别待处理事件中的当前优先级符合条件时确定为当前响应事件,该响应事件在当前时钟周期内被处理。

步骤s52:判断是否为当前响应事件;

步骤s53:处理计数器的值加1;多任务操作系统将事件数组中对应类别的待处理事件的属性中的事件处理属性进行更新,具体的,将处理计数器的值加1。

这里,当该事件处理时,根据所述事件对应的类别属性确定所述事件数组中对应类别的待处理事件,对所述类别的待处理事件对应的事件处理计数时器的值加1。

步骤s54:超过处理计数器预设的阈值;

步骤s55:更新该类别待处理事件的当前优先级。

这里,当事件处理计数器的值超过预先设定的阈值后,该事件对应类别的待处理事件的优先级就自动减1,直至事件处理计数器的值的值清零;开始新一轮计数。

在本发明实施例中,通过预先对contiki操作系统中待处理事件根据该待处理事件的类别属性进行分类,将相同类别的待处理事件存储于事件数组中的一个相同位置,对各类别的待处理事件预先设置初始优先级,并对各类别待处理事件的属性中设置事件计数器、事件融合计数器、事件等候计数器、事件处理计数器和服务权重等,根据事件发生、事件处理或事件未处理(事件延迟)的事件发生动态,对事件数组中各类别的待处理事件的优先级进行实时更新得到更新后的当前优先级,通过根据事件发生动态实时更新的当前优先级确定每一时钟周期到来时候的当前响应事件,保证了紧急事件可以快速处理;相同类别的待处理事件仅占用事件数组中的一个位置,大大的提高了事件数组中待处理事件的容量,避免了事件丢失。

本发明实施例提供的基于多任务操作系统的事件处理方法可以采用包含多任务操作系统的终端设备实施,就基于多任务操作系统的事件处理装置的硬件结构而言,请参阅图7,本发明一实施例提供的基于多任务操作系统的事件处理装置的一个可选的硬件结构示意图,该装置包括:至少一个处理器110和用于存储能够在处理器110上运行的计算机程序的存储器111;其中,图7中示意的处理器110并非用于指代处理器的个数为一个,而是仅用于指代处理器相对其他器件的位置关系,在实际应用中,处理器的个数可以为一个或多个;同样,图7中示意的存储器111也是同样的含义,即仅用于指代存储器相对其他器件的位置关系,在实际应用中,存储器的个数可以为一个或多个。

其中,所述处理器110用于运行所述计算机程序时,执行如下步骤:

当设置的时钟周期到来时,根据事件数组中各类别待处理事件的当前优先级确定当前响应事件;

根据所述当前响应事件执行对应的程序,对所述当前响应事件进行处理。

在一个可选的实施例中,所述处理器110还用于运行所述计算机程序时,执行如下步骤:

检测事件动态的发生情况;

当发生事件动态时,根据所述事件动态的类型以及对应事件的类别属性确定所述事件数组中对应类别的待处理事件,并更新所述类别的待处理事件的当前优先级。

在一个可选的实施例中,所述处理器110还用于运行所述计算机程序时,执行如下步骤:

当事件发生时,根据所述事件的类别属性确定所述事件数组中对应类别的待处理事件,更新所述对应类别的待处理事件的计数属性值,其中所述计数属性值包括计数器;

根据所述对应类别的待处理事件的计数属性值,更新所述对应类别的待处理事件的当前优先级。

在一个可选的实施例中,所述处理器110还用于运行所述计算机程序时,执行如下步骤:

将所述事件计数器的值加1;

当所述事件计数器的值超过设置的第一阈值时,将所述事件融合计数器的值加1,并将所述事件计数器的值清零;

所述根据所述对应类别的待处理事件的计数属性值更新所述对应类别的待处理事件的当前优先级包括:

当所述事件融合计数器的值超过设置的第二阈值时,更新所述对应类别的待处理事件的当前优先级。

在一个可选的实施例中,所述处理器110还用于运行所述计算机程序时,执行如下步骤:

当设置的时钟周期到来时,确定事件数组中各类别待处理事件中对应的非当前响应事件,分别更新所述各类别非当前响应事件对应的等候属性值;

根据所述各类别的非当前响应事件的等候属性值,更新所述各类别的非当前响应事件的当前优先级。

在一个可选的实施例中,所述处理器110还用于运行所述计算机程序时,执行如下步骤:

当事件处理时,根据所述事件对应的类别属性确定所述事件数组中对应类别的待处理事件,更新所述对应类别的待处理事件的处理属性值;

根据所述对应类别的待处理事件的处理属性值,更新所述对应类别的待处理事件的当前优先级。

在一个可选的实施例中,所述处理器110还用于运行所述计算机程序时,执行如下步骤:

根据事件数组中各类别待处理事件的当前优先级,将当前优先级最高的类别的待处理事件确定为当前响应事件;和/或,

根据事件数组中各类别待处理事件的当前优先级,将当前优先级相对较高的多个类别的待处理事件进行排序,并将所述多个类别的待处理事件确定为当前响应事件。

在一个可选的实施例中,所述处理器110还用于运行所述计算机程序时,执行如下步骤:

获取事件数组中各类别待处理事件的当前优先级,当所述事件数组中所述各类别待处理事件中的至少两个类别事件的当前优先级相同时,获取所述至少两个类别事件的服务权重,根据所述服务权重确定当前响应事件。

该连接优化装置还包括:至少一个网络接口112。该连接优化装置中的各个组件通过总线系统113耦合在一起。可理解,总线系统113用于实现这些组件之间的连接通信。总线系统113除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图7中将各种总线都标为总线系统113。

其中,存储器111可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,readonlymemory)、可编程只读存储器(prom,programmableread-onlymemory)、可擦除可编程只读存储器(eprom,erasableprogrammableread-onlymemory)、电可擦除可编程只读存储器(eeprom,electricallyerasableprogrammableread-onlymemory)、磁性随机存取存储器(fram,ferromagneticrandomaccessmemory)、快闪存储器(flashmemory)、磁表面存储器、光盘、或只读光盘(cd-rom,compactdiscread-onlymemory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(ram,randomaccessmemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram,staticrandomaccessmemory)、同步静态随机存取存储器(ssram,synchronousstaticrandomaccessmemory)、动态随机存取存储器(dram,dynamicrandomaccessmemory)、同步动态随机存取存储器(sdram,synchronousdynamicrandomaccessmemory)、双倍数据速率同步动态随机存取存储器(ddrsdram,doubledataratesynchronousdynamicrandomaccessmemory)、增强型同步动态随机存取存储器(esdram,enhancedsynchronousdynamicrandomaccessmemory)、同步连接动态随机存取存储器(sldram,synclinkdynamicrandomaccessmemory)、直接内存总线随机存取存储器(drram,directrambusrandomaccessmemory)。本发明实施例描述的存储器111旨在包括但不限于这些和任意其它适合类型的存储器。

本发明实施例中的存储器111用于存储各种类型的数据以支持基于多任务操作系统的事件处理装置的操作。这些数据的示例包括:用于在基于多任务操作系统的事件处理装置上操作的任何计算机程序,如操作系统和应用程序;联系人数据;电话簿数据;消息;图片;视频等。其中,操作系统包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序可以包含各种应用程序,例如媒体播放器(mediaplayer)、浏览器(browser)等,用于实现各种应用业务。这里,实现本发明实施例方法的程序可以包含在应用程序中。

本实施例还提供了一种计算机存储介质,例如包括存储有计算机程序的存储器111,上述计算机程序可由连接优化装置中的处理器110执行,以完成前述方法所述步骤。计算机存储介质可以是fram、rom、prom、eprom、eeprom、flashmemory、磁表面存储器、光盘、或cd-rom等存储器;也可以是包括上述存储器之一或任意组合的各种设备,如移动电话、计算机、平板设备、个人数字助理等。

一种计算机存储介质,所述计算机存储介质中存储有计算机程序,所述计算机程被处理器运行时,执行如下步骤:

当设置的时钟周期到来时,根据事件数组中各类别待处理事件的当前优先级确定当前响应事件;

根据所述当前响应事件执行对应的程序,对所述当前响应事件进行处理。

在一个可选的实施例中,所述计算机程序被处理器运行时,还执行如下步骤:

检测事件动态的发生情况;

当发生事件动态时,根据所述事件动态的类型以及对应事件的类别属性确定所述事件数组中对应类别的待处理事件,并更新所述类别的待处理事件的当前优先级。

在一个可选的实施例中,所述计算机程序被处理器运行时,还执行如下步骤:

当事件发生时,根据所述事件的类别属性确定所述事件数组中对应类别的待处理事件,更新所述对应类别的待处理事件的计数属性值,其中所述计数属性值包括计数器;

根据所述对应类别的待处理事件的计数属性值,更新所述对应类别的待处理事件的当前优先级。

在一个可选的实施例中,所述计算机程序被处理器运行时,还执行如下步骤:

将所述事件计数器的值加1;

当所述事件计数器的值超过设置的第一阈值时,将所述事件融合计数器的值加1,并将所述事件计数器的值清零;

所述根据所述对应类别的待处理事件的计数属性值更新所述对应类别的待处理事件的当前优先级包括:

当所述事件融合计数器的值超过设置的第二阈值时,更新所述对应类别的待处理事件的当前优先级。

在一个可选的实施例中,所述计算机程序被处理器运行时,还执行如下步骤:

当设置的时钟周期到来时,确定事件数组中各类别待处理事件中对应的非当前响应事件,分别更新所述各类别非当前响应事件对应的等候属性值;

根据所述各类别的非当前响应事件的等候属性值,更新所述各类别的非当前响应事件的当前优先级。

在一个可选的实施例中,所述计算机程序被处理器运行时,还执行如下步骤:

当事件处理时,根据所述事件对应的类别属性确定所述事件数组中对应类别的待处理事件,更新所述对应类别的待处理事件的处理属性值;

根据所述对应类别的待处理事件的处理属性值,更新所述对应类别的待处理事件的当前优先级。

在一个可选的实施例中,所述计算机程序被处理器运行时,还执行如下步骤:

根据事件数组中各类别待处理事件的当前优先级,将当前优先级最高的类别的待处理事件确定为当前响应事件;和/或,

根据事件数组中各类别待处理事件的当前优先级,将当前优先级相对较高的多个类别的待处理事件进行排序,并将所述多个类别的待处理事件确定为当前响应事件。

在一个可选的实施例中,所述计算机程序被处理器运行时,还执行如下步骤:

获取事件数组中各类别待处理事件的当前优先级,当所述事件数组中所述各类别待处理事件中的至少两个类别事件的当前优先级相同时,获取所述至少两个类别事件的服务权重,根据所述服务权重确定当前响应事件。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1