一种基于共享内存的看门狗实现方法

文档序号:6420967阅读:258来源:国知局
专利名称:一种基于共享内存的看门狗实现方法
技术领域
本发明涉及软件看门狗监控目标资源状态的方法,尤其涉及一种基于共享内存的看门狗实现方法。
背景技术
传统的Windows平台软件看门狗一般都是通过窗口消息机制来实现看门狗与被控资源(被控资源通常情况下是以操作系统物理进程的方式存在)之间的交互,具体做法是看门狗向被控资源发送一条监控请求消息,被控资源收到该消息后立即返回一条监控应答消息,如果看门狗在T时间段(监控超时时限)内没有收到被控资源返回的监控应答消息,此时看门狗则认为被控资源出现异常。
传统的软件看门狗监控方法存在一定的局限性首先按照基于Windows窗口消息机制设计出来的看门狗软件在跨平台移植上就会具备较大的困难,因为UNIX、LINUX等平台不支持Windows的窗口消息机制;其次Windows窗口消息机制的具体实现为每个窗口由系统提供一个存放待处理消息的消息队列,看门狗向被控资源发送监控请求消息其实就是向被控资源的主窗口消息队列中加入并拷贝该条消息内容,被控资源主窗口从消息队列中取出监控请求消息进行处理,在被控资源负荷比较重的情况下(如处理的业务量很大),主窗口消息队列中会堆积很多待处理消息,看门狗监控请求消息夹杂在其中可能会长时间得不到处理,而引起看门狗对被监控资源的误判断(误认为被控资源处于非活动状态)。
尚未检索到能够解决上述缺陷的现有技术文献。

发明内容
本发明的目的是提供一种基于共享内存的看门狗实现方法,解决软件看门狗监控问题,即保证看门狗能够准确地获取出被控资源的状态,而不受被控资源本身的负荷情况带来误判的干扰。
共享内存技术可以在目前主流的操作系统平台(包括Windows、SunSolaris、IBM AIX、HP-UX、Linux)上实现。
本发明的目的是这样实现的本发明公开了一种基于共享内存的看门狗实现方法,包括如下步骤(1)被控物理进程每第一时间间隔向共享内存中写入第一字节标记;(2)看门狗程序每第二时间间隔扫描一次该被控物理进程在共享内存块中对应的字节内容,根据字节内容进行相应操作;其中,第二时间间隔值大于第一时间间隔值。
所述步骤(2)中的相应操作包括如果对应字节内容与该被控物理进程写入的第一字节标记相同,则表明该被控物理进程处于运行状态,看门狗程序向该字节中写入第二字节标记;如果该被控物理进程的对应字节内容为第二字节标记,则说明该被控物理进程已经僵死或者退出,看门狗会将僵死的进程杀死,同时重新启动该被控物理进程;其中,所述第一字节标记与所述第二字节标记内容不相同。
所述的基于共享内存的看门狗实现方法,还包括看门狗初始化步骤,获取被控物理进程的当前状态,如果被监控进程处于运行或者僵死状态,则让物理进程退出或将它杀死,然后启动被控物理进程;如果被控物理进程处于非运行状态,则直接启动它。
所述共享内存中存放一控制块结构,包括被控物理进程名称、物理进程控制块是否使用标记、被控物理进程的唯一标记、被控资源是否启动标记和心跳标记,被控物理进程初始启动时,对各个标记进行操作。
所述的基于共享内存的看门狗实现方法,被控物理进程初始启动时,对各个标识进行操作包括物理进程控制块是否使用标记置1,被控资源是否启动标记置1。
所述的基于共享内存的看门狗实现方法,被控物理进程正常运行时,心跳标记置1。
所述的基于共享内存的看门狗实现方法,被控物理进程进行共享内存的创建,被控物理进程与看门狗软件均对共享内存执行相应的读写操作。
所述的基于共享内存的看门狗实现方法,该共享内存最终的删除由操作系统回收处理,即被监控进程和看门狗均放弃对共享内存的控制权,操作系统会将该共享内存资源释放并回收其控制权。
本发明的有益效果在于软件看门狗采用操作系统成熟的共享内存机制来实现对被控资源的状态监测和控制,能够达到高效、准确的效果,这种监控机制不受被控资源本身负荷的影响,看门狗软件和被控资源对共享内存的存取操作都是可靠、高效和安全的,并且按照此监控机制编制出来的看门狗软件和被控资源软件可以非常平滑地进行跨平台移植,因为目前各主流操作系统均支持共享内存机制。


图1为本发明的物理进程控制块结构TPhyPCBStruc PPCB框图;图2为本发明的看门狗与被控资源对共享内存的操作示意图;图3为本发明的被控资源启动时操作共享内存流程图;图4为本发明的被控资源运行时操作共享内存流程图;图5为本发明的看门狗获取被控资源的状态流程图;图6为本发明的看门狗定时监控机制流程图。
具体实施例方式
本发明软件看门狗的实现方法如下一.软件看门狗对被控物理进程(被控资源)的监控方法1.被控物理进程每第一时间间隔t1向共享内存中写入第一字节标记tag_running;2.看门狗程序每第二时间间隔t2扫描一次被控物理进程在共享内存块中对应的字节内容,如果对应字节内容为tag_running,则表明该物理进程处于运行状态,看门狗程序向该字节中写第二字节标记tag_stopped;如果该物理进程的对应字节内容为tag_stopped,则说明该物理进程已经僵死或者退出,看门狗会将僵死的进程杀死,同时重新启动被控物理进程;3.为了确保检测机制的可靠性,时间t2值要求大于t1值,另外共享内存的置入标记tag_running与tag_stopped不相同,例如一个为1,另一个为0。
二.看门狗初始化首先获取被控物理进程的当前状态,如果被监控进程处于运行或者僵死状态,则让物理进程退出或将它杀死,然后启动被控物理进程;如果被控物理进程处于非运行状态,则直接启动它。该过程实现看门狗软件对被控资源的初始化启动过程。
三.共享内存管理共享内存的创建是由被控物理进程进行,被监控进程与看门狗软件均对共享内存执行相应的读写操作,共享内存最终的删除由操作系统回收处理,即被监控进程和看门狗均放弃对共享内存的控制权,操作系统会将该共享内存资源释放并回收其控制权。
下面结合附图,基本按照附图的顺序对技术方案的实施作进一步的详细描述图1介绍了物理进程控制块结构TPhyPCBStruc PPCB。该结构存放在共享内存中,被看门狗软件和被控资源同时操作,结构升级其中name[40]表示被控资源(如物理进程)名称;byUse是物理进程控制块是否使用标记,0表示未使用,1表示使用;pid表示被控资源的唯一标识(如物理进程的PID);Running表示被控资源是否启动,“ACTIVE”表示已经启动,其它值表示未启动,被控资源在启动时将该字段置为“ACTIVE”值;beatFlag是看门狗监控的心跳标记,被控资源每2秒(t1)将该标记置1(tag_running),看门狗则每10秒(t2)将该标记清0(tag_stopped)。
图2介绍了看门狗软件与被控资源对共享内存PPCB的beatFlag字段操作情况。被控资源每2秒(t1)将PPCB的beatFlag字段值置1(tag_running),看门狗软件则每10秒(t2)将该字段值清0(tag_stopped)。
图3介绍了被控资源初始启动时对共享内存PPCB结构的操作情况。首先将PPCB的byUse值置1,然后将PPCB的Running值置为“ACTIVE”,接着将被控资源名称置入PPCB的name[40],最后将PPCB的pid值置为被控资源的唯一标识(如物理进程的PID)。
图4介绍了被控资源正常运行时对共享内存PPCB结构的操作情况。被控资源每2秒(t1)会将PPCB的心跳标记beatFlag置1(tag_running)。
图5介绍了看门狗获取被控资源状态的流程。首先判断PPCB的Running字段值是为“ACTIVE”,如果不是则返回STOPPED状态,如果是再进行PPCB的pid是否存在判断,如果PPCB的pid不存在则返回STOPPED状态,如果PPCB的pid存在则进行下一步的PPCB.name[40]判断,如果该名称与被控资源名称不一致,则返回STOPPED状态,如果名称一致则再进行PPCB的心跳标记beatFlag判断,如果beatFlag值为1(tag_running),则返回RUNNING状态,否则返回DEAD状态。
图6介绍了看门狗定时监控机制的实现流程。看门狗每10秒(t2)做如下监控操作调用图5描述的流程来获取被控资源的状态,然后根据被控资源的状态(共有3种状态)分别做出处理,如果状态为STOPPED,看门狗就重新启动被控资源;如果状态为DEAD,先强行杀死被控资源,并记录异常日志,然后再重新启动被控资源;如果状态为RUNNING,看门狗则会将共享内存PPCB的心跳标记beatFlag清0(tag_stopped)。
权利要求
1.一种基于共享内存的看门狗实现方法,包括如下步骤(1)被控物理进程每第一时间间隔向共享内存中写入第一字节标记;(2)看门狗程序每第二时间间隔扫描一次该被控物理进程在共享内存块中对应的字节内容,根据字节内容进行相应操作;其中,所述第二时间间隔大于所述第一时间间隔。
2.如权利要求1所述的基于共享内存的看门狗实现方法,其特征在于,所述相应操作包括如果对应字节内容与该被控物理进程写入的第一字节标记相同,则表明该被控物理进程处于运行状态,看门狗程序向该字节中写入第二字节标记;如果该被控物理进程的对应字节内容为第二字节标记,则说明该被控物理进程已经僵死或者退出,看门狗会将僵死的进程杀死,同时重新启动该被控物理进程。
3.如权利要求2所述的基于共享内存的看门狗实现方法,其特征在于,所述第一字节标记内容与所述第二字节标记内容不相同。。
4.如权利要求1所述的基于共享内存的看门狗实现方法,其特征在于,该方法还包括看门狗初始化步骤,获取被控物理进程的当前状态,如果被监控进程处于运行或者僵死状态,则让物理进程退出或将它杀死,然后启动被控物理进程;如果被控物理进程处于非运行状态,则直接启动它。
5.如权利要求1所述的基于共享内存的看门狗实现方法,其特征在于,所述共享内存中存放一控制块结构,包括被控物理进程名称、物理进程控制块是否使用标记、被控物理进程的唯一标记、被控资源是否启动标记和心跳标记,被控物理进程初始启动时,对各个标记进行操作。
6.如权利要求5所述的基于共享内存的看门狗实现方法,其特征在于,被控物理进程初始启动时,对各个标识进行操作包括物理进程控制块是否使用标记置1,被控资源是否启动标记置1。
7.如权利要求5所述的基于共享内存的看门狗实现方法,其特征在于,被控物理进程正常运行时,心跳标记置1。
8.如权利要求1所述的基于共享内存的看门狗实现方法,其特征在于,被控物理进程进行共享内存的创建,被控物理进程与看门狗软件均对共享内存执行相应的读写操作。
9.如权利要求1或8所述的基于共享内存的看门狗实现方法,其特征在于,该共享内存最终的删除由操作系统回收处理,即被监控进程和看门狗均放弃对共享内存的控制权,操作系统会将该共享内存资源释放并回收其控制权。
全文摘要
本发明涉及一种基于共享内存的看门狗实现方法,包括被控物理进程每第一时间间隔向共享内存中写入第一字节标记;看门狗程序每第二时间间隔扫描一次该被控物理进程在共享内存块中对应的字节内容,如果对应字节内容与该被控物理进程写入的第一字节标记相同,则表明该被控物理进程处于运行状态,看门狗程序向该字节中写入第二字节标记;如果该被控物理进程的对应字节内容为第二字节标记,则说明该被控物理进程已经僵死或者退出,看门狗会将僵死的进程杀死,同时重新启动该被控物理进程。本发明有效地解决了代码跨平台移植问题,即可以平滑地实现在各种操作系统平台之间的移植,扩大了软件看门狗的应用范围,降低了其开发和维护成本。
文档编号G06F11/36GK1547125SQ20031011855
公开日2004年11月17日 申请日期2003年12月12日 优先权日2003年12月12日
发明者孙兵, 刘建华, 田茂良, 孙 兵 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1