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

技术编号:2868071 阅读:1472 留言:0更新日期:2012-04-11 18:40
一种基于共享内存的看门狗实现方法,包括如下步骤:    (1)被控物理进程每第一时间间隔向共享内存中写入第一字节标记;    (2)看门狗程序每第二时间间隔扫描一次该被控物理进程在共享内存块中对应的字节内容,根据字节内容进行相应操作;    其中,所述第二时间间隔大于所述第一时间间隔。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及软件看门狗监控目标资源状态的方法,尤其涉及。
技术介绍
传统的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表示被控资源(如物理进程)名称;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,最后将PPCB的pid值置为被控资源的唯一标识(如物理进程的PID)。图4介绍了被控资源正常运行时对共享内存PPCB结构的操作情况。被控资源每2秒(t1)会将PPCB的心跳标记beatFlag置1(tag_本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:孙兵刘建华田茂良
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1