一种基于消息监控的软件看门狗实现方法与流程

文档序号:12271099阅读:1295来源:国知局
一种基于消息监控的软件看门狗实现方法与流程

本发明涉及一种嵌入式系统,尤其涉及一种嵌入式系统中的用软件实现看门狗来监控系统实时状态及系统内工作进程运行状态的监控方法。



背景技术:

对于运行嵌入式操作系统的软件系统中,为了保证软件系统的正常运行及系统的安全、稳定性,除了硬件电路中实现看门狗的同时,软件看门狗显得极为重要,目前Linux内核中已经有初步的软件看门狗实现方法,但是针对用户层进程的监控并没有作出详细的说明,

用户层进程监控的实现方法大多数采用定时器的方式主动向监控进程发送特定的心跳消息,告诉主监控进程自身的状态,这种方法存在不足之处在于无法监控整个系统运行状态,同时进程的监控也会存在误判(比如用户进程特别繁忙来不及发送心跳消息给监控进程),这样会导致系统出现挂起状态而又无法通过软重启得到恢复,另一方面进程状态的误判也会导致不可预见的系统故障。



技术实现要素:

针对上述技术问题,本发明提供一种基于消息监控的软件看门狗实现方法,结合系统工作状态及用户层进程状态两块内容,提供一种同时监控系统状态及进程状态的软件看门狗实现方法,使得软件系统更加稳定兼容、更加可靠。

为了实现上述发明目的,本发明采用以下技术方案:

一种基于消息监控的软件看门狗系统的实现方法,包括应用进程的软件看门狗和系统看门狗两部分,所述该两部分的核心为消息监控,即通过消息交互的方法实现。

本发明的更进一步的技术方案是,所述系统看门狗实现过程的主要步骤如下:

所述系统看门狗随系统启动并以驱动模块的方式加载,创建一个可供监控进程读写的接口,用于接收监控进程的消息;

所述驱动模块中设有定时器,等待监控进程发送的消息,如果定时器超时后没有收到监控进程的消息,则看门狗将反向发送消息给监控进程;

如果此时仍然得不到监控进程的响应,则说明系统出现死锁或者主进程挂起的问题,此时看门狗将作出系统软重启的操作;

本发明更进一步的技术方案是,所述应用进程的软件看门狗,用于主监控的守护进程的实现,在系统中守护进程的作用在于进程监控及消息分发,系统中的所有进程都必须注册一个看门狗消息,同守护进程建立消息连接通道,守护进程将记录各进程的状态信息。

本发明更进一步的技术方案是,系统启动后首先将会启动守护进程,所述守护进程将建立三个线程,第一线程用于跟系统看门狗通信;第二线程用于监控应用进程,以及消息分发过程中的监控,并由守护进程进行主导;第二线程为异常处理线程,用于对异常消息的进程进行监控。

本发明更进一步的技术方案是,所述软件看门狗工作流程如下:

应用进程发送消息至守护进程时,守护进程将记录该消息的源和目的并同时将消息分发回去;

如果消息分发成功,则说明源,目的这两个进程都运行正常,将两个进程都加入到正常工作表中;

如果消息分发失败,说明目的进程存在问题,守护进程将该进程加入到异常处理表中,异常处理任务将会定时对该进程的看门狗发送消息;

如果消息发送成功,则说明该进程运行正常,若发送失败,将失败的消息加入到待发送的队列中,等待调度发送。

本发明更进一步的技术方案是,异常处理表中的进程都是消息未发送成功或者未收到消息转发的进程,守护进程将采用定时的机制对这些进程进行监控,同时不断将非异常进程加入到此表中,对所有的进程进行监控,防止遗失其他进程状态。

与现有技术相比,本发明具有以下有益效果:

本发明提供的一种基于消息监控的软件看门狗系统的实现方法,每个软件系统都会有一个核心进程,目前实现的看门狗往往都是只针对各进程的监控,而对核心进程的监控则忽略,对于软件系统应用层来说,通过消息分发过程中记录进程状态可以做到快速对故障进程进行跟踪,提高效率;对于驱动层来说,可以明确系统核心进程的工作状态,通过一来一回的消息交互过程,可以知道系统工作状态,整个软件系统的应用层进程、核心进程都可做到监控;提高了效率,比单纯的定时对所有进程发送消息检测更有针对性。

附图说明

图1为本发明系统看门狗实现方法的流程示意图;

图2为本发明应用进程看门狗实现方法的流程示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

实施例1

图1示出了本发明一种基于消息监控的软件看门狗系统的实现方法的系统看门狗系统的实现方法,包括以下步骤:

驱动模块中会有一个定时器,等待监控进程发送的消息,如果定时器超时后没有收到监控进程的消息,则看门狗处理将反向发送消息给监控进程;

如果此时仍然得不到监控进程的响应,则说明系统出现死锁或者主进程挂起的问题,此时看门狗将作出系统软重启的操作。

图2为示出了本发明一种基于消息监控的软件看门狗系统的实现方法的系统看门狗系统的实现方法,

对于应用层的软件看门狗,在于主监控进程(以下称为守护进程)的实现,在系统中守护进程的作用在于进程监控及消息分发,系统中的所有进程都必须注册一个看门狗消息,同守护进程建立消息连接通道,守护进程将记录各进程的状态信息;

系统启动后首先将会启动守护进程,守护进程将建立三个线程,第一线程用于跟驱动模块看门狗通信,第二线程用于监控应用进程;在应用层进程监控方法上使用于消息分发过程中的监控,由守护进程进行主导,第三线程异常处理线程,用于对异常消息的进程进行监控,而不是对所有进程都进行定时的监控,提高效率;

消息分发过程中,应用进程发送消息至守护进程时,守护进程将记录该消息的源和目的(这里不处理广播消息),同时将消息分发过去;

如果消息分发成功,则说明源,目的这两个进程都运行正常,将两个进程都加入到正常工作表中;

如果消息分发失败,说明目的进程存在问题,守护进程将该进程加入到异常处理表中,异常处理任务将会定时对该进程进行看门狗消息发送;此时守护进程主动发送看门狗消息至该目的进程,如果发送成功,则说明该进程运行正常,失败的消息加入到待发送的队列中,等待调度发送;

异常处理表中的进程都是消息未发送成功或者未收到消息转发的进程,守护进程将采用定时的机制对这些进程进行监控,同时不断将非异常进程加入到此表中,对所有的进程进行监控,防止遗失其他进程状态;

本发明提供的一种基于消息监控的软件看门狗系统的实现方法,每个软件系统都会有一个核心进程,目前实现的看门狗往往都是只针对各进程的监控,而对核心进程的监控则忽略,对于软件系统应用层来说,通过消息分发过程中记录进程状态可以做到快速对故障进程进行跟踪,提高效率;对于驱动层来说,可以明确系统核心进程的工作状态,通过一来一回的消息交互过程,可以知道系统工作状态,整个软件系统的应用层进程、核心进程都可做到监控;提高了效率,比单纯的定时对所有进程发送消息检测更有针对性。

以上对本发明的具体实施例进行了详细描述,但其只是作为范例,本发明并不限制于以上描述的具体实施例。对于本领域技术人员而言,任何对本发明进行的等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作的均等变换和修改,都应涵盖在本发明的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1