CN101105758A - 状态机维护方法及装置 - Google Patents

状态机维护方法及装置 Download PDF

Info

Publication number
CN101105758A
CN101105758A CNA2007101180321A CN200710118032A CN101105758A CN 101105758 A CN101105758 A CN 101105758A CN A2007101180321 A CNA2007101180321 A CN A2007101180321A CN 200710118032 A CN200710118032 A CN 200710118032A CN 101105758 A CN101105758 A CN 101105758A
Authority
CN
China
Prior art keywords
timer
counter
loopback
loopback timer
scheduled
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2007101180321A
Other languages
English (en)
Other versions
CN100489786C (zh
Inventor
肖新风
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Information Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CNB2007101180321A priority Critical patent/CN100489786C/zh
Publication of CN101105758A publication Critical patent/CN101105758A/zh
Application granted granted Critical
Publication of CN100489786C publication Critical patent/CN100489786C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Exchange Systems With Centralized Control (AREA)

Abstract

本发明提供了一种状态机维护方法及装置。该方法包括:设置环回定时器和非环回定时器;非环回定时器被调度时检测状态机,并创建非环回定时器;环回定时器被调度时检测非环回定时器是否存在,如果不存在,则创建非环回定时器;否则,等待下次调度。使用本发明所提供的技术方案,能够提高状态机维护的可靠性。

Description

状态机维护方法及装置
技术领域
本发明涉及系统维护技术,尤其涉及一种状态机维护方法及装置。
背景技术
在大多数软件系统中,为了维护系统性能,一般都会提供软件定时器功能。通常,软件定时器分为环回(LOOP)定时器和非环回(NOLOOP)定时器两种。其中,环回定时器按照指定时间间隔周期执行;非环回定时器只执行一次,在超时后即被系统删除。无论是环回定时器还是非环回定时器,其实现原理都需要系统的一个Tick任务在时间点到达之后向定时器任务里面写消息事件,定时器任务得到调度后读消息事件,并调用定时器相应的回调函数。比如,在定时器的回调函数里触发状态机检测操作,定时器任务每被调度一次就执行一次状态机检测。
但是,受系统运行状态的影响,如果采用环回定时器对状态机进行维护,则可能会出现定时间隔不符合用户要求的情况。比如,假设定时器粒度为1秒(s),即Tick任务每秒都向定时器任务里面写一个消息事件,那么,在理想情况下,如果定时器任务能够及时得到调度,则每一秒都会读到一个消息事件,检测一次状态机并做相应处理。但是,由于定时器任务的优先级较低,而Tick任务的优先级较高,因此,当系统负载很高时,高优先级的Tick任务都能得到调度,每秒向定时器任务里写一个消息事件,而低优先级的定时器任务由于高负载的原因可能很长时间如8秒都得不到调度。在这种情况下,当定时器任务在第9秒得到调度时,就会一下处理8个消息事件,每个消息事件之间的时间间隔非常短。对于对定时器最小时间间隔要求较为严格的状态机来说,由于其必须在触发检测事件后通过等待事件的响应来确定状态机是否发生变化,因此,如果消息事件的时间间隔太短,那么将会由于没有足够的响应时间而造成状态机的错误迁移,导致状态机混乱。
如果使用非环回定时器来维护状态机,则必须在处理完非环回定时器任务里的消息事件后,重新创建非环回定时器,以实现对状态机的持续维护。也就是说,在非环回定时器的回调函数里不仅要检测状态机,还需要创建非环回定时器。在这种情况下,如果非环回定时器任务里面的消息事件丢失,那么,将会导致新的非环回定时器永远无法再建立,状态机的维护也将停止。
总而言之,现有的状态机维护方法可靠性较低,容易造成状态机的错误迁移或状态机维护的停止。
发明内容
有鉴于此,本发明的主要目的在于提供一种状态机维护方法及装置,提高状态机维护的可靠性。
为达到上述目的,本发明提供的状态机维护方法如下:
设置环回定时器和非环回定时器;
非环回定时器被调度时检测状态机,并创建非环回定时器;
环回定时器被调度时检测非环回定时器是否存在,如果不存在,则创建非环回定时器;否则,等待下次调度。
该方法进一步包括:
设置第一计数器和第二计数器,其中,第一计数器用来统计非环回定时器被调度的次数,非环回定时器每被调度一次,第一计数器的值加一;第二计数器用来统计连续发生环回定时器被调度而非环回定时器未被调度的次数。
所述环回定时器被调度时检测非环回定时器是否存在包括:
在环回定时器被调度时,判断第一计数器的值是否发生了变化,如果发生了变化,则确定非环回定时器存在,并将第二计数器的值清零。
所述环回定时器被调度时检测非环回定时器是否存在还包括:
为第二计数器设置阈值,如果判断出第一计数器的值没有发生变化,则将第二计数器的值加一,并判断加一后的第二计数器的值是否达到预先设置的阈值,如果达到,则确定非环回定时器不存在。
所述环回定时器被调度时检测非环回定时器是否存在还包括:
如果判断出第二计数器的值没有达到预先设置的阈值,则确定非环回定时器存在。
本发明提供的状态机维护装置包括:环回定时器、非环回定时器和定时器创建模块,其中,
非环回定时器,用于在被调度时检测状态机,并在检测完毕后通知定时器创建模块创建非环回定时器;
环回定时器,用于在被调度时检测非环回定时器是否存在,如果不存在,则通知定时器创建模块创建非环回定时器;否则,等待下次调度;
定时器创建模块,用于在收到通知后创建非环回定时器。
该装置进一步包括:第一计数器和第二计数器,其中,
第一计数器,用于统计非环回定时器被调度的次数,非环回定时器每被调度一次,第一计数器的值加一;
第二计数器,用于统计连续发生环回定时器被调度而非环回定时器未被调度的次数。
所述环回定时器用于在被调度时判断第一计数器的值是否发生了变化,如果发生了变化,则确定非环回定时器存在,并将第二计数器的值清零。
所述环回定时器还用于为第二计数器设置阈值,并在判断出第一计数器的值没有发生变化时,将第二计数器的值加一,判断加一后的第二计数器的值是否达到预先设置的阈值,如果达到,则确定非环回定时器不存在。
所述环回定时器还用于在判断出第二计数器的值没有达到预先设置的阈值时,确定非环回定时器存在。
由此可见,本发明充分利用了环回定时器循环执行、即使消息事件丢失定时器也不会停止的特性,以及非环回定时器定时间隔较为稳定、不会连续出现多个消息事件的特性,实现了状态机的可靠维护。通过使用非环回定时器来执行状态机的维护操作,使得即使在系统负载较高、定时器任务不能得到及时调度的情况下,也不会出现定时器任务被调度时在短时间内需要处理多个消息事件的情形,避免了状态机的错误迁移;并且,通过使用环回定时器检测非环回定时器是否存在,可以避免由于非环回定时器任务里的消息事件丢失而造成状态机维护操作停止的情况发生,提高了状态机维护的可靠性。
附图说明
图1为本发明实施例中的非环回定时器检测流程图。
图2为本发明实施例中理想情况下,环回定时器与非环回定时器的工作过程示意图。
图3为本发明实施例中非环回定时器任务里的消息事件丢失的情况下,环回定时器与非环回定时器的工作过程示意图。
图4为本发明实施例中的状态机维护装置结构示意图。
图5为本发明实施例中的另一状态机维护装置结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,下面参照附图并举实施例,对本发明作进一步详细说明。
由背景技术描述可见,在现有技术中,如果采用环回定时器进行状态机维护,则在系统负载很高定时器任务得不到及时调度的情况下,会由于消息事件时间间隔太短而造成状态机的错误迁移;如果采用非环回定时器进行状态机维护,则会由于消息事件的丢失而导致状态机维护的停止。
为了解决上述问题,提高状态机维护的可靠性,本发明提供了一种将环回定时器和非环回定时器结合起来使用的状态机维护方法。在本发明中,非环回定时器用来执行状态机维护操作;环回定时器用来监控非环回定时器,其不执行具体的状态机维护操作。由于非环回定时器在被调度后即被删除,因此为了实现状态机的持续维护,在非环回定时器的回调函数里不仅要执行状态机维护操作,并且还需要重新创建非环回定时器。也就是说,非环回定时器每被调度一次就检测一次状态机,并重新创建非环回定时器。
另外,为了防止由于非定时器任务里的消息事件丢失而造成状态机维护的停止,本发明还需要设置环回定时器来监控非环回定时器。环回定时器在被调度时检测非环回定时器是否存在,如果存在,则等待下次调度;如果不存在,则重新创建非环回定时器,以实现状态机的持续维护。
其中,关于环回定时器检测非环回定时器是否存在的过程具体可通过设置计数器来实现。比如,分别设置第一计数器和第二计数器,其中,第一计数器用来统计非环回定时器被调度的次数,其值记作value1;第二计数器用来统计环回定时器被调度的次数,其值记作value 2。非环回定时器每被调度一次,第一计数器的值value 1就加一;环回定时器每被调度一次,第二计数器的值value 2就加一。在初始状态下,第一计数器的值和第二计数器的值均为0。另外,针对第二计数器,还需要设置一个阈值m,阈值m的具体数值可根据实际需求预先设定,比如结合系统负载及定时器任务的优先级来确定。
下面对使用第一计数器和第二计数器进行非环回定时器检测的过程进行详细说明。参见图1所示,该过程主要包括以下步骤:
步骤101:环回定时器被调度时,判断第一计数器的值value 1是否发生了变化,如果是,则执行步骤102;否则,执行步骤103。
其中,判断第一计数器的值value 1是否发生了变化,可以通过比较记录的第一计数器的值与当前第一计数器的值是否相同实现,如果相同,则确定第一计数器的值没有发生变化;如果不同,则确定第一计数器的值发生了变化。
步骤102:记录第一计数器的当前值,并将第二计数器的值value 2清零,然后跳出本流程。
也就是说,只要第一计数器的值发生了变化,即非环回定时器得到了调度,那么就将第二计数器的值清零,重新开始计数。实际上,第二计数器统计的是连续发生环回定时器被调度而非环回定时器未被调度的次数。
步骤103:将第二计数器的值value 2加一,并判断加一后的值是否小于预先设定的阈值m,如果小于,则跳出本流程,等待环回定时器的下次调度;否则,执行步骤104。
步骤104:重新创建非环回定时器。
也就是说,如果第二计数器的值达到了阈值m,即环回定时器被调度了m次,而非环回定时器都没有被调度一次,表现为在环回定时器多次被调度的期间,第一计数器的值value 1一直没有发生变化,那么,则认为非环回定时器的消息事件丢失,非环回定时器不存在了。此时,环回定时器需要重新创建非环回定时器,以保证状态机维护工作能够继续执行。
为了更加清楚起见,下面以环回定时器和非环回定时器的定时精度均为1s为例,对本发明中环回定时器和非环回定时器的协同工作过程进行详细说明。
图2所示为理想情况下环回定时器与非环回定时器的工作过程示意图。其中,实心圆圈表示环回定时器的执行点,即检测非环回定时器是否存在的时间点;空心圆圈表示非环回定时器的执行点,即执行状态机维护操作的时间点;方框表示建立非环回定时器的时间点。由图2可见,在理想情况下,即非环回定时器任务里的消息事件没有丢失并且非环回定时器能够及时得到调度的情况下,非环回定时器每秒都会执行一次状态机维护操作,并在执行完毕后重新创建非环回定时器。
图3所示为非环回定时器任务里的消息事件丢失情况下,环回定时器与非环回定时器的工作过程示意图。其中,阈值m被设置为4。由图3可见,当第二计数器的值value 2达到了阈值4时,即环回定时器发现自身被连续调度了4次,而非环回定时器由于消息事件丢失却一次都没有被调度时,则认为非环回定时器不存在了,环回定时器需要重新创建非环回定时器,以防止状态机维护操作停止的情况发生。
如果在第二计数器的值value 2尚未达到阈值4时,如value 2=3时,第一计数器的值又发生了变化,那么,则需要将第二计数器的值清零,重新开始计数。
由以上描述可见,本发明充分利用了环回定时器循环执行、即使消息事件丢失定时器也不会停止的特性,以及非环回定时器定时间隔较为稳定、不会连续出现多个消息事件的特性,实现了状态机的可靠维护。采用本发明所提供的技术方案,通过使用非环回定时器来执行状态机的维护操作,使得即使在系统负载较高、定时器任务不能得到及时调度的情况下,也不会出现定时器任务被调度时在短时间内需要处理多个消息事件的情形,避免了状态机的错误迁移;并且,通过使用环回定时器检测非环回定时器是否存在,可以避免由于非环回定时器任务里的消息事件丢失而造成状态机维护操作停止的情况发生,提高了状态机维护的可靠性。
相应地,本发明还提供了一种状态机维护装置,其结构参见图4所示,主要包括:环回定时器、非环回定时器和定时器创建模块,其中,
非环回定时器,用于在被调度时检测状态机,并在检测完毕后通知定时器创建模块创建非环回定时器;
环回定时器,用于在被调度时检测非环回定时器是否存在,如果不存在,则通知定时器创建模块创建非环回定时器;否则,等待下次调度;
定时器创建模块,用于在收到通知后创建非环回定时器。
参见图5所示,该装置还可包括:第一计数器和第二计数器,其中,
第一计数器,用于统计非环回定时器被调度的次数,非环回定时器每被调度一次,第一计数器的值加一;
第二计数器,用于统计连续发生环回定时器被调度而非环回定时器未被调度的次数。
所述环回定时器用于在被调度时判断第一计数器的值是否发生了变化,如果发生了变化,则确定非环回定时器存在,并将第二计数器的值清零。
所述环回定时器还用于为第二计数器设置阈值,并在判断出第一计数器的值没有发生变化时,将第二计数器的值加一,判断加一后的第二计数器的值是否达到预先设置的阈值,如果达到,则确定非环回定时器不存在。
所述环回定时器还用于在判断出第二计数器的值没有达到预先设置的阈值时,确定非环回定时器存在。
以上所述对本发明的目的、技术方案和有益效果进行了进一步的详细说明,所应理解的是,以上所述并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种状态机维护方法,其特征在于,设置环回定时器和非环回定时器,该方法包括:
非环回定时器被调度时检测状态机,并创建非环回定时器;
环回定时器被调度时检测非环回定时器是否存在,如果不存在,则创建非环回定时器;否则,等待下次调度。
2.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
设置第一计数器和第二计数器,其中,第一计数器用来统计非环回定时器被调度的次数,非环回定时器每被调度一次,第一计数器的值加一;第二计数器用来统计连续发生环回定时器被调度而非环回定时器未被调度的次数。
3.根据权利要求2所述的方法,其特征在于,所述环回定时器被调度时检测非环回定时器是否存在包括:
在环回定时器被调度时,判断第一计数器的值是否发生了变化,如果发生了变化,则确定非环回定时器存在,并将第二计数器的值清零。
4.根据权利要求3所述的方法,其特征在于,所述环回定时器被调度时检测非环回定时器是否存在还包括:
为第二计数器设置阈值,如果判断出第一计数器的值没有发生变化,则将第二计数器的值加一,并判断加一后的第二计数器的值是否达到预先设置的阈值,如果达到,则确定非环回定时器不存在。
5.根据权利要求4所述的方法,其特征在于,所述环回定时器被调度时检测非环回定时器是否存在还包括:
如果判断出第二计数器的值没有达到预先设置的阈值,则确定非环回定时器存在。
6.一种状态机维护装置,其特征在于,包括:环回定时器、非环回定时器和定时器创建模块,其中,
非环回定时器,用于在被调度时检测状态机,并在检测完毕后通知定时器创建模块创建非环回定时器;
环回定时器,用于在被调度时检测非环回定时器是否存在,如果不存在,则通知定时器创建模块创建非环回定时器;否则,等待下次调度;
定时器创建模块,用于在收到通知后创建非环回定时器。
7.根据权利要求6所述的装置,其特征在于,该装置进一步包括:第一计数器和第二计数器,其中,
第一计数器,用于统计非环回定时器被调度的次数,非环回定时器每被调度一次,第一计数器的值加一;
第二计数器,用于统计连续发生环回定时器被调度而非环回定时器未被调度的次数。
8.根据权利要求7所述的装置,其特征在于,所述环回定时器用于在被调度时判断第一计数器的值是否发生了变化,如果发生了变化,则确定非环回定时器存在,并将第二计数器的值清零。
9.根据权利要求8所述的装置,其特征在于,所述环回定时器还用于为第二计数器设置阈值,并在判断出第一计数器的值没有发生变化时,将第二计数器的值加一,判断加一后的第二计数器的值是否达到预先设置的阈值,如果达到,则确定非环回定时器不存在。
10.根据权利要求9所述的装置,其特征在于,所述环回定时器还用于在判断出第二计数器的值没有达到预先设置的阈值时,确定非环回定时器存在。
CNB2007101180321A 2007-06-27 2007-06-27 状态机维护方法及装置 Active CN100489786C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007101180321A CN100489786C (zh) 2007-06-27 2007-06-27 状态机维护方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007101180321A CN100489786C (zh) 2007-06-27 2007-06-27 状态机维护方法及装置

Publications (2)

Publication Number Publication Date
CN101105758A true CN101105758A (zh) 2008-01-16
CN100489786C CN100489786C (zh) 2009-05-20

Family

ID=38999664

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007101180321A Active CN100489786C (zh) 2007-06-27 2007-06-27 状态机维护方法及装置

Country Status (1)

Country Link
CN (1) CN100489786C (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104142869A (zh) * 2013-05-06 2014-11-12 上海海拉电子有限公司 一种用于车身控制系统的监控方法及看门狗模块
CN110456681A (zh) * 2019-07-01 2019-11-15 天津大学 基于事件触发的中立稳定饱和系统的输出反馈控制器

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104142869A (zh) * 2013-05-06 2014-11-12 上海海拉电子有限公司 一种用于车身控制系统的监控方法及看门狗模块
CN104142869B (zh) * 2013-05-06 2017-11-14 上海海拉电子有限公司 一种用于车身控制系统的监控方法及看门狗模块
CN110456681A (zh) * 2019-07-01 2019-11-15 天津大学 基于事件触发的中立稳定饱和系统的输出反馈控制器
CN110456681B (zh) * 2019-07-01 2020-11-06 天津大学 基于事件触发的中立稳定饱和系统的输出反馈控制器

Also Published As

Publication number Publication date
CN100489786C (zh) 2009-05-20

Similar Documents

Publication Publication Date Title
CN100359481C (zh) 多任务系统的异常监控装置及其方法
CN102984029B (zh) 应用于分布式系统的心跳检测装置和方法、网络设备
CN102761439B (zh) Pon接入系统中基于看门狗的异常检测记录装置及方法
EP2624140A1 (en) Method and system for detecting anomaly of network processor
CN109582536B (zh) 应用程序无响应的上报方法、装置和计算机设备
CN106528318B (zh) 线程死循环检测方法和装置
CN110266544B (zh) 一种云平台微服务化服务失败的原因定位的装置及方法
CN103744727A (zh) 一种启动服务的方法、装置和智能设备
CN102983990A (zh) 虚拟机的管理方法和装置
CN106021358A (zh) 一种异常信息记录方法及系统
CN104461675A (zh) 用于执行检查点的方法和系统
CN110659147B (zh) 一种基于模块自检行为的自修复方法和系统
CN115185777A (zh) 一种异常检测方法、装置、可读存储介质以及电子设备
CN101158913A (zh) 一种检测任务死循环的方法及系统
CN100489786C (zh) 状态机维护方法及装置
CN110209497B (zh) 一种主机资源动态扩缩容的方法及系统
CN106775620B (zh) 一种定时方法及装置
CN105634502A (zh) 基于状态机的按键扫描的实现方法
CN106357757A (zh) 一种监控系统中的被监控装置及监控方法
CN202713533U (zh) 电视机的诊断和维护系统与电视机
CN105224426A (zh) 物理主机故障检测方法、装置及虚机管理方法、系统
CN112035322A (zh) Jvm监控方法及装置
CN110457133A (zh) 一种操作系统资源异常的处理方法及系统
US7607051B2 (en) Device and method for program correction by kernel-level hardware monitoring and correlating hardware trouble to a user program correction
CN100557576C (zh) 操作系统故障检测的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: NEW H3C TECHNOLOGIES Co.,Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: HANGZHOU H3C TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230616

Address after: 310052 11th Floor, 466 Changhe Road, Binjiang District, Hangzhou City, Zhejiang Province

Patentee after: H3C INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 310052 Changhe Road, Binjiang District, Hangzhou, Zhejiang Province, No. 466

Patentee before: NEW H3C TECHNOLOGIES Co.,Ltd.