[发明专利]状态机维护方法及装置有效
申请号: | 200710118032.1 | 申请日: | 2007-06-27 |
公开(公告)号: | CN101105758A | 公开(公告)日: | 2008-01-16 |
发明(设计)人: | 肖新风 | 申请(专利权)人: | 杭州华三通信技术有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 北京德琦知识产权代理有限公司 | 代理人: | 宋志强;麻海明 |
地址: | 310053浙江省杭州市高新技术产业*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 状态机 维护 方法 装置 | ||
技术领域
本发明涉及系统维护技术,尤其涉及一种状态机维护方法及装置。
背景技术
在大多数软件系统中,为了维护系统性能,一般都会提供软件定时器功能。通常,软件定时器分为环回(LOOP)定时器和非环回(NOLOOP)定时器两种。其中,环回定时器按照指定时间间隔周期执行;非环回定时器只执行一次,在超时后即被系统删除。无论是环回定时器还是非环回定时器,其实现原理都需要系统的一个Tick任务在时间点到达之后向定时器任务里面写消息事件,定时器任务得到调度后读消息事件,并调用定时器相应的回调函数。比如,在定时器的回调函数里触发状态机检测操作,定时器任务每被调度一次就执行一次状态机检测。
但是,受系统运行状态的影响,如果采用环回定时器对状态机进行维护,则可能会出现定时间隔不符合用户要求的情况。比如,假设定时器粒度为1秒(s),即Tick任务每秒都向定时器任务里面写一个消息事件,那么,在理想情况下,如果定时器任务能够及时得到调度,则每一秒都会读到一个消息事件,检测一次状态机并做相应处理。但是,由于定时器任务的优先级较低,而Tick任务的优先级较高,因此,当系统负载很高时,高优先级的Tick任务都能得到调度,每秒向定时器任务里写一个消息事件,而低优先级的定时器任务由于高负载的原因可能很长时间如8秒都得不到调度。在这种情况下,当定时器任务在第9秒得到调度时,就会一下处理8个消息事件,每个消息事件之间的时间间隔非常短。对于对定时器最小时间间隔要求较为严格的状态机来说,由于其必须在触发检测事件后通过等待事件的响应来确定状态机是否发生变化,因此,如果消息事件的时间间隔太短,那么将会由于没有足够的响应时间而造成状态机的错误迁移,导致状态机混乱。
如果使用非环回定时器来维护状态机,则必须在处理完非环回定时器任务里的消息事件后,重新创建非环回定时器,以实现对状态机的持续维护。也就是说,在非环回定时器的回调函数里不仅要检测状态机,还需要创建非环回定时器。在这种情况下,如果非环回定时器任务里面的消息事件丢失,那么,将会导致新的非环回定时器永远无法再建立,状态机的维护也将停止。
总而言之,现有的状态机维护方法可靠性较低,容易造成状态机的错误迁移或状态机维护的停止。
发明内容
有鉴于此,本发明的主要目的在于提供一种状态机维护方法及装置,提高状态机维护的可靠性。
为达到上述目的,本发明提供的状态机维护方法如下:
设置环回定时器和非环回定时器;
非环回定时器被调度时检测状态机,并创建非环回定时器;
环回定时器被调度时检测非环回定时器是否存在,如果不存在,则创建非环回定时器;否则,等待下次调度。
该方法进一步包括:
设置第一计数器和第二计数器,其中,第一计数器用来统计非环回定时器被调度的次数,非环回定时器每被调度一次,第一计数器的值加一;第二计数器用来统计连续发生环回定时器被调度而非环回定时器未被调度的次数。
所述环回定时器被调度时检测非环回定时器是否存在包括:
在环回定时器被调度时,判断第一计数器的值是否发生了变化,如果发生了变化,则确定非环回定时器存在,并将第二计数器的值清零。
所述环回定时器被调度时检测非环回定时器是否存在还包括:
为第二计数器设置阈值,如果判断出第一计数器的值没有发生变化,则将第二计数器的值加一,并判断加一后的第二计数器的值是否达到预先设置的阈值,如果达到,则确定非环回定时器不存在。
所述环回定时器被调度时检测非环回定时器是否存在还包括:
如果判断出第二计数器的值没有达到预先设置的阈值,则确定非环回定时器存在。
本发明提供的状态机维护装置包括:环回定时器、非环回定时器和定时器创建模块,其中,
非环回定时器,用于在被调度时检测状态机,并在检测完毕后通知定时器创建模块创建非环回定时器;
环回定时器,用于在被调度时检测非环回定时器是否存在,如果不存在,则通知定时器创建模块创建非环回定时器;否则,等待下次调度;
定时器创建模块,用于在收到通知后创建非环回定时器。
该装置进一步包括:第一计数器和第二计数器,其中,
第一计数器,用于统计非环回定时器被调度的次数,非环回定时器每被调度一次,第一计数器的值加一;
第二计数器,用于统计连续发生环回定时器被调度而非环回定时器未被调度的次数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州华三通信技术有限公司,未经杭州华三通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710118032.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种橄榄含片及其制备方法
- 下一篇:多业务光纤收发器光纤接入系统