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

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

Info

Publication number
CN1262926C
CN1262926C CN 200310118551 CN200310118551A CN1262926C CN 1262926 C CN1262926 C CN 1262926C CN 200310118551 CN200310118551 CN 200310118551 CN 200310118551 A CN200310118551 A CN 200310118551A CN 1262926 C CN1262926 C CN 1262926C
Authority
CN
China
Prior art keywords
controlled
physics process
shared drive
house dog
method based
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.)
Expired - Fee Related
Application number
CN 200310118551
Other languages
English (en)
Other versions
CN1547125A (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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN 200310118551 priority Critical patent/CN1262926C/zh
Publication of CN1547125A publication Critical patent/CN1547125A/zh
Application granted granted Critical
Publication of CN1262926C publication Critical patent/CN1262926C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种基于共享内存的看门狗实现方法,包括被控物理进程每第一时间间隔向共享内存中写入第一字节标记;看门狗程序每第二时间间隔扫描一次该被控物理进程在共享内存块中对应的字节内容,如果对应字节内容与该被控物理进程写入的第一字节标记相同,则表明该被控物理进程处于运行状态,看门狗程序向该字节中写入第二字节标记;如果该被控物理进程的对应字节内容为第二字节标记,则说明该被控物理进程已经僵死或者退出,看门狗会将僵死的进程杀死,同时重新启动该被控物理进程。本发明有效地解决了代码跨平台移植问题,即可以平滑地实现在各种操作系统平台之间的移植,扩大了软件看门狗的应用范围,降低了其开发和维护成本。

Description

一种基于共享内存的看门狗实现方法
技术领域
本发明涉及软件看门狗监控目标资源状态的方法,尤其涉及一种基于共享内存的看门狗实现方法。
背景技术
传统的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)。

Claims (7)

1.一种基于共享内存的看门狗实现方法,包括如下步骤:
(1)被控物理进程每第一时间间隔向共享内存中写入第一字节标记;
(2)看门狗程序每第二时间间隔扫描一次该被控物理进程在共享内存块中对应的字节内容,根据字节内容进行相应操作;
其中,所述第二时间间隔大于所述第一时间间隔;所述相应操作包括:如果对应字节内容与该被控物理进程写入的第一字节标记相同,则表明该被控物理进程处于运行状态,看门狗程序向该字节中写入第二字节标记;如果该被控物理进程的对应字节内容为第二字节标记,则说明该被控物理进程已经僵死或者退出,看门狗会将僵死的进程杀死,同时重新启动该被控物理进程。
2.如权利要求1所述的基于共享内存的看门狗实现方法,其特征在于,所述第一字节标记内容与所述第二字节标记内容不相同。
3.如权利要求1所述的基于共享内存的看门狗实现方法,其特征在于,该方法还包括看门狗初始化步骤,获取被控物理进程的当前状态,如果被控物理进程处于运行或者僵死状态,则让物理进程退出或将它杀死,然后启动被控物理进程;如果被控物理进程处于非运行状态,则直接启动它。
4.如权利要求1所述的基于共享内存的看门狗实现方法,其特征在于,所述共享内存中存放一控制块结构,包括:被控物理进程名称、物理进程控制块是否使用标记、被控物理进程的唯一标记、被控资源是否启动标记和心跳标记,被控物理进程初始启动时,对各个标记进行操作。
5.如权利要求4所述的基于共享内存的看门狗实现方法,其特征在于,被控物理进程初始启动时,对各个标记进行操作包括:物理进程控制块是否使用标记置1,被控资源是否启动标记置1。
6.如权利要求4所述的基于共享内存的看门狗实现方法,其特征在于,被控物理进程正常运行时,心跳标记置1。
7.如权利要求1所述的基于共享内存的看门狗实现方法,其特征在于,该共享内存最终的删除由操作系统回收处理,即被控物理进程和看门狗均放弃对共享内存的控制权,操作系统会将该共享内存资源释放并回收其控制权。
CN 200310118551 2003-12-12 2003-12-12 一种基于共享内存的看门狗实现方法 Expired - Fee Related CN1262926C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200310118551 CN1262926C (zh) 2003-12-12 2003-12-12 一种基于共享内存的看门狗实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200310118551 CN1262926C (zh) 2003-12-12 2003-12-12 一种基于共享内存的看门狗实现方法

Publications (2)

Publication Number Publication Date
CN1547125A CN1547125A (zh) 2004-11-17
CN1262926C true CN1262926C (zh) 2006-07-05

Family

ID=34338049

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200310118551 Expired - Fee Related CN1262926C (zh) 2003-12-12 2003-12-12 一种基于共享内存的看门狗实现方法

Country Status (1)

Country Link
CN (1) CN1262926C (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102387040B (zh) * 2011-11-01 2015-04-22 深圳市航天泰瑞捷电子有限公司 一种前置机保持高速稳定运行的方法及系统
CN103425562B (zh) * 2012-05-18 2016-08-31 北京北方微电子基地设备工艺研究中心有限责任公司 软件断联监控系统及方法
CN102968352B (zh) * 2012-12-14 2015-07-22 杨晓松 进程监控及多级恢复系统和方法
CN103036778B (zh) * 2012-12-18 2018-05-01 上海斐讯数据通信技术有限公司 一种家庭网关设备中防止设备僵死的装置和方法
CN103744727A (zh) * 2014-01-16 2014-04-23 Tcl集团股份有限公司 一种启动服务的方法、装置和智能设备
CN106326055B (zh) * 2016-08-29 2019-11-12 四川九洲空管科技有限责任公司 一种机载防撞系统的硬件死机检测及复位方法
CN107783844A (zh) * 2017-10-13 2018-03-09 锐捷网络股份有限公司 一种计算机程序运行异常检测方法、装置和介质
CN109189562B (zh) * 2018-08-09 2021-08-20 麒麟合盛网络技术股份有限公司 控制进程运行的方法和装置

Also Published As

Publication number Publication date
CN1547125A (zh) 2004-11-17

Similar Documents

Publication Publication Date Title
CN1266590C (zh) 面向构件基于系统内核的进程池/线程池管理方法
CN1262926C (zh) 一种基于共享内存的看门狗实现方法
US8245239B2 (en) Deterministic runtime execution environment and method
US20090125572A1 (en) Method for managing retention of data on worm disk media based on event notification
US9690562B2 (en) Detecting computing processes requiring reinitialization after a software package update
US20070011415A1 (en) Apparatus and method for deterministic garbage collection of a heap memory
US20060143608A1 (en) Thread monitoring using shared memory
CN1770157A (zh) 效率得到提高的读取-复制更新系统和方法
CN1829964A (zh) 用于处理消息队列的方法、设备和计算机程序
CN1815451A (zh) 日志信息管理方法及系统
WO2010136426A1 (en) Power management in a virtual machine farm at the local virtual machine platform level by a platform hypervisor extended with farm management server functions
CN1684040A (zh) 能够使用过去处理空间的信息处理器
US20080109827A1 (en) Method and Apparatus for Allowing Restarted Programs to Use Old Process Identifications and Thread Identifications
CN1740974A (zh) 一种线程调度管理方法和系统
CN1521663A (zh) 针对实时告警管理的数据库表建模及事件处理方法
CN1350228A (zh) Windows nt进程自动保护系统
US7080374B2 (en) System and method for using native code interpretation to move threads to a safe state in a run-time environment
CN104731634B (zh) 一种实时在线的分布式计算框架的实现方法
US6732359B1 (en) Application process monitor
CN1324481C (zh) 一种用于网络处理器的数据老化方法
CN112817933A (zh) 一种弹性数据库连接池的管理方法及装置
US6418454B1 (en) Method and mechanism for duration-based management of temporary LOBs
US20230229545A1 (en) Intelligent log analysis and retention for microservices applications
US8813103B1 (en) Methods and systems for handling component-object-model communications
CN87106625A (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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20060705

Termination date: 20131212