CN104360913A - 用于计算机操作系统的监控模块 - Google Patents
用于计算机操作系统的监控模块 Download PDFInfo
- Publication number
- CN104360913A CN104360913A CN201410614513.1A CN201410614513A CN104360913A CN 104360913 A CN104360913 A CN 104360913A CN 201410614513 A CN201410614513 A CN 201410614513A CN 104360913 A CN104360913 A CN 104360913A
- Authority
- CN
- China
- Prior art keywords
- house dog
- watchdog
- submodule
- task
- module
- 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.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种用软件模块来管理和模拟关键任务并使每个任务均拥有一只独立看门狗的用于计算机操作系统的监控模块。其由看门狗资源、看门狗外部调用接口和看门狗监视三个子模块构成,三个子模块之间通过各自提供的通讯接口相连,各子模块内部的程序运行同步互斥。其能解决用户使用看门狗机制时对硬件看门狗及其数量的依赖,从一定程度上减少了硬件看门狗带来的设计复杂度,降低了成本。由于各个关键任务使用的看门狗是相互独立的,不需要相互之间做交叉同步,因此大大降低了软件设计的复杂度,避免了人为原因导致的看门狗失效;同时由于看门狗的“狗叫”周期可以独自设定,因此从本质上增强了看门狗机制响应的实时性能。
Description
技术领域
本发明涉及一种计算机操作系统,特别涉及一种计算机操作系统中所用的监控模块。
背景技术
通常,在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(英文称watchdog)。
看门狗分硬件看门狗和软件看门狗。硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称“喂狗”),因此程序正常工作时,定时器总不能溢出(以下称定时器溢出为“狗叫”),也就不能产生复位信号。如果程序出现故障,不在定时周期内复位看门狗(即对定时器清零),就使得看门狗定时器溢出产生复位信号并重启系统。软件看门狗原理上一样,只是将硬件电路上的定时器用处理器的内部定时器代替,这样可以简化硬件电路设计。
在现有的计算机操作系统中,对于操作系统的监控(又称:看门)都采用软件看门狗直接操作硬件看门狗的方式,该方法虽然简单,但是其负面作用很大,如下述:
1)当系统中未设硬件看门狗时,使用看门狗的策略将无法实施,或者额外增加硬件导致成本增加;
2)一般的硬件看门狗只有一只,系统中多个关键任务共同使用该只硬件看门狗,会导致交叉使用,造成任务同步困难;
3)在多任务交叉使用一只看门狗的情况下,当个别关键任务运行不正常时,由于其他使用看门狗的任务仍处于正常状态并继续“喂狗”,因此,导致该看门狗不复位,使看门狗功能性失效,起不到监测的作用。
4)传统意义上的看门狗,当“狗叫”时产生的效果一般只有复位系统,对于那些有能力通过一定手段修复所属任务出现的问题的软件需求而言,爱莫能助;
5)传统意义上的硬件看门狗的周期一般是固定的,多个任务使用时其留有很大的时间余量(一般取最大的一个),导致其保护的任务失败时其响应不及时;
所述余量是指:如果多个软件模块共用一个硬件看门狗且该硬件看门狗监控时间不可更改,那么选择硬件看门狗的时间必然会以最长任务的那个监控时间进行选择,这样的话对于其余的小任务而言,其时间存在很大的余量,例如有运行时间为1S、2S、10S的三个任务需要监视,那么有且只有一个硬件看门狗,那么该看门狗的时间必然要大于等于10S,那么与1S或者2S对应的任务出现异常时,就需要等到8-9S(10-1或者10-2)后,才会有反应,而这个8-9S即为所述的余量。
6)传统意义上的看门狗,当看门狗“狗叫”时,只能简单的表示自己的任务超时,无法分析出该任务是因为自己的逻辑错误不能“喂狗”还是因为系统调度原因导致该任务无法及时“喂狗”。
发明内容
本发明要解决的技术问题是提供一种用软件模块来管理和模拟关键任务并使每个任务均拥有一只独立看门狗的用于计算机操作系统的监控模块。
为了解决上述技术问题,本发明采用的技术方案为:
本发明的用于计算机操作系统的监控模块,该监控模块由看门狗资源、看门狗外部调用接口和看门狗监视三个子模块构成,三个子模块之间通过各自提供的通讯接口相连,各子模块内部的程序运行同步互斥,其中,
看门狗资源,包括若干个具有不同溢出周期的软件看门狗,该子模块主要负责看门狗软件核心数据的维护,设置的所有软件看门狗按照每个看门狗的“狗叫”时限与当前时间的时间差值以由小到大方式依序排列,当某个看门狗的“狗叫”时限因操作行为发生变化时,设置的所有软件看门狗重新按照上述方式依序排列;
看门狗外部调用接口,通过其上的API接口与计算机操作系统相接,该子模块接受操作系统的任务调用并通过看门狗资源子模块调用软件看门狗中“狗叫”时限距当前时间最短且未处于休眠状态的看门狗进行指定操作;
看门狗监视,包含优先级高于其它任务优先级的对看门狗资源子模块中的所有看门狗进行监视的监视任务,该监视任务的休眠时间为看门狗资源子模块中排在最前的看门狗的时限与当前时间的差值,当该监视任务被唤醒后,该子模块对唤醒该监视任务的消息进行解析并通过调用所述看门狗外部调用接口子模块完成所述消息指定的任务,或者通过执行与未被复位的看门狗绑定的钩子函数对该看门狗复位。
所述的看门狗资源子模块的接口包括添加看门狗、移除看门狗、设置看门狗周期、复位看门狗、获取指定特征看门狗和获取等待时限接口。
所述看门狗外部调用接口子模块的接口包括创建看门狗、删除看门狗、喂看门狗和调整看门狗周期。
所述看门狗监视任务子模块的接口还包括获取等待时间、系统定时唤醒、传递监视任务消息、获取指定特征看门狗及复位看门狗接口。
在所述看门狗资源子模块中还设有修复关键任务的钩子函数。
针对看门狗资源子模块中的所有软件看门狗配置有一一对应的互斥锁。
与现有技术相比,本发明能够解决用户使用看门狗机制时对硬件看门狗及其数量的依赖,从一定程度上减少了硬件看门狗带来的设计复杂度,降低了成本。由于各个关键任务使用的看门狗是相互独立的,不需要相互之间做交叉同步,因此大大降低了软件设计的复杂度,避免了人为原因导致的看门狗失效;同时由于看门狗的“狗叫”周期可以独自设定,因此从本质上增强了看门狗机制响应的实时性能。该方案允许使用者设定自己的钩子函数,因此拓宽了看门狗修复机制的功能,能够让使用者在该任务出问题时实现自我修复;同时还增加了看门狗超时的原因分析,在一定程度上能够反馈更多的信息。无论硬件看门狗是否存在,本发明的监控模块都可以很好的应对任务对看门狗机制的需求,使得计算机操作系统运行更加健壮。
附图说明
图1为本发明的监控模块结构框图。
图2为本发明的看门狗资源子模块的结构框图。
图3为本发明的看门狗外部调用接口子模块的结构框图。
图4为本发明的看门狗监视任务子模块的信号流程图。
图5为要发明的监控模块工作流程图。
具体实施方式
如图1所示,本发明的用于计算机操作系统的监控模块由三个子模块组成,分别为看门狗资源子模块、看门狗外部调用接口(又称看门狗API)子模块和看门狗监视任务子模块;各个子模块之间通讯采用子模块提供的接口,在子模块内部做同步互斥问题,大大减少子模块设计难度以及数据的并发以及互斥访问,降低实现难度。
使用看门狗的任务仅仅调用本发明的监控模块的看门狗外部调用接口子模块提供的API即可,所有关于本发明的监控模块的其它管理工作都交给其各子模块。
看门狗资源子模块主要负责看门狗软件核心数据的维护。所有的软件看门狗按照“狗叫”时限(在规定时间内,如果该看门狗没有被主动操作则执行设置前约定好的动作,该时间为绝对时间)的先后顺序排列:排在第一个的看门狗是其“狗叫”时限距离当前时间最短的,依次类推。任何操作看门狗的行为如果涉及到看门狗的顺序变化都会让该看门狗进行重新排进队列,严格保证看门狗队列的排列顺序是依照“狗叫”时限的先后顺序;由于看门狗已经是按照“狗叫”时限的先后顺序排好的队列,因此能够大大加快对指定看门狗的操作,即:由于看门狗是一个时间先后队列,而操作看门狗必然会引起该队列的变化,如设置周期、暂停看门狗等,如果该看门狗队列已经排好顺序,那么操作之后的排序也就非常的简单,由此,可大大提高操作效率。由于各任务对所述看门狗队列的访问是随机的,存在不确定性,为保证队列操作的唯一性以及可靠性,可以用互斥锁对所述看门狗队列加以锁定,这是由于看门狗队列是一个有序的时间队列,可将该队列看做是一个公共资源,对看门狗的任何操作都有可能更改该队列,为了保证每次对该公共资源的操作都是确定性的,将该公共资源加互斥锁进行保护。
如图2所示,该子模块提供的对外基本操作接口有添加看门狗、移除看门狗、设置看门狗周期、复位看门狗、获取指定特性的看门狗等。所有对看门狗的主动操作都会刷新最近看门狗的“狗叫”时限。
看门狗外部调用接口子模块是本发明的监控模块开放给计算机操作系统的唯一接口。使用软件看门狗的任务只能用该子模块提供的看门狗API来操作所拥有的看门狗。该子模块接受到其他任务调用后,会通过对最近的看门狗时限和指定看门狗来综合分析该操作是否影响看门狗监视任务的休眠时间。如果分析结果是不影响看门狗监视任务的休眠时间,则直接调用看门狗资源子模块的接口来实现对指定看门狗子模块的指定操作;否则发送消息给看门狗监视任务,由看门狗监视任务来实现该操作。这样能最大限度的降低任务的切换次数,降低看门狗子模块对系统性能的影响。该子模块的信号流图如图3所示。
看门狗监视任务子模块是看门狗软件的核心处理单元,如果应用的操作系统支持任务优先级,其包含一个优先级高于其它任务优先级的对看门狗资源子模块中的所有看门狗进行监视的监视任务(又称看门狗管理任务)模块。该监视任务首先调用看门狗资源子模块来获取最近的看门狗时限,和当前时间相比来决定监视任务的休眠时间,让后进入指定时间的休眠状态等待被唤醒。监视任务被唤醒只有两个原因:其一,看门狗外部调用接口向所述监视任务发送了消息;其二,指定的休眠时间到。如果是原因一,则收取相关消息,逐条解析消息(消息可能不止一条),通过调用看门狗资源的接口来实现消息指定的任务。如果是原因二,则证明是有软件看门狗没有被复位(在指定的时间内主动操作软件看门狗),执行在规定时限内没有被复位的看门狗的钩子函数。该钩子函数是在创建看门狗时指定的,即在定义软件看门狗的数据结构的时候,定义了一个数据成员用于存储修复时使用的钩子函数,因此其可以很灵活,如分析记录该看门狗超时原因或者修复该看门狗任务的异常等。当执行完唤醒原因的处理后,通过比较最近看门狗“狗叫”时限和当前时间差,重新进入指定时间的休眠。整个工作流程如图4所示。
上述三个子模块的协同工作能够完全的监视使用软件看门狗的监视任务工作是否正常“喂狗”。如果所属系统有硬件看门狗时,可以建立一个软件看门狗来对应这个硬件看门狗,将其钩子函数设定为喂该硬件狗。当系统因为未知原因崩溃导致本发明的监控模块无法正常工作时,自然无法执行该硬件看门狗对应的软件看门狗的钩子函数,从而使整个系统重启。如果未设硬件看门狗,由于该看门狗管理任务优先级高,一直占据着系统资源,导致很明显的死机行为。
即是说,监视任务作为监视整个系统的任务而存在;当被监视的任务出现异常时,会出现如下三种情况:
1)在系统设有硬件看门狗时,则会采用硬件看门狗来复位系统;
2)在系统没有设置硬件看门狗时,则使用IO输出等其他手段来复位系统;
3)当系统既没有硬件看门狗,也未设IO等复位手段时,则会在监视任务中执行死循环,会让系统出现死机行为(该监视任务优先级别高,会一直执行死循环,所述死循环可以阻止已经崩溃而无法提供正常服务的系统误动作)。
因此,无论有无硬件看门狗,本发明的监控模块都会让崩溃的系统朝着恢复正常的方向发展。
实施案例如图5所示。所有使用看门狗的任务(关键任务1、关键任务2…关键任务n等)通过调用看门狗外部调用接口子模块开放出来的API来操作看门狗资源子模块中拥有的软件看门狗(如看门狗1、看门狗2…看门狗m等)。看门狗外部调用接口子模块的API会根据调用时的情况具体分析是否要将该工作以消息的形式发送给看门狗管理任务,如果所做的操作不会涉及到看门狗管理任务的休眠时间(如没有操作到看门狗队首位置)则直接修改看门狗队列即可;否则,发送消息给看门狗管理任务。看门狗管理任务大部分时间处于休眠状态,当被激活时,由激活原因分析子模块分析激活原因,当是因为休眠时间到激活时,则证明队列中有看门狗队列已经发生了超时,交给处理看门狗“狗叫”的模块处理;当是因为有新消息到达时,则处理消息队列,对看门狗队列进行相关操作。当激活处理结束时候,看门狗管理任务调用休眠模块来决定下一次的休眠时间,该时间为第一个看门狗(看门狗队列首)的“狗叫”时限和当前时间之差。然后进入休眠状态等待再一次的被激活。
本发明使得需要使用看门狗的地方都能够得到一只独立的看门狗,从而让使用看门狗的任务摆脱对硬件看门狗及其数量的依赖;在软件设计上,为使用者提供简单高效的操作方法,使得其和操作硬件狗一样的简单;由于每只看门狗都是独立存在的,解决了传统上交叉使用硬件看门狗时人为造成看门狗失效的问题,同时每个看门狗允许设定自己的周期,让使用看门狗的任务实现更灵活,也使得自己的关键运行路径出错时响应更加及时;同时此看门狗设计方案还提供修复机制,允许关键任务设定自己的修复钩子函数,当该任务所用“狗叫”时,可以利用该钩子函数来修复自己所出的问题,然后执行任务指定的行为(例如重启(例如由于修复失败原因));最后,该发明能分析该看门狗所属任务无法及时“喂狗”的原因,通过所属任务设定任务运行时间标准来衡量到底是因为自己的逻辑错误还是因为系统调度原因。
Claims (6)
1.一种用于计算机操作系统的监控模块,其特征在于:该监控模块由看门狗资源、看门狗外部调用接口和看门狗监视三个子模块构成,三个子模块之间通过各自提供的通讯接口相连,各子模块内部的程序运行同步互斥,其中,
看门狗资源,包括若干个具有不同溢出周期的软件看门狗,该子模块主要负责看门狗软件核心数据的维护,设置的所有软件看门狗按照每个看门狗的“狗叫”时限与当前时间的时间差值以由小到大方式依序排列,当某个看门狗的“狗叫”时限因操作行为发生变化时,设置的所有软件看门狗重新按照上述方式依序排列;
看门狗外部调用接口,通过其上的API接口与计算机操作系统相接,该子模块接受操作系统的任务调用并通过看门狗资源子模块调用软件看门狗中“狗叫”时限距当前时间最短且未处于休眠状态的看门狗进行指定操作;
看门狗监视,包含优先级高于其它任务优先级的对看门狗资源子模块中的所有看门狗进行监视的监视任务,该监视任务的休眠时间为看门狗资源子模块中排在最前的看门狗的时限与当前时间的差值,当该监视任务被唤醒后,该子模块对唤醒该监视任务的消息进行解析并通过调用所述看门狗外部调用接口子模块完成所述消息指定的任务,或者通过执行与未被复位的看门狗绑定的钩子函数对该看门狗复位。
2.根据权利要求1所述的用于计算机操作系统的监控模块,其特征在于:所述的看门狗资源子模块的接口包括添加看门狗、移除看门狗、设置看门狗周期、复位看门狗、获取指定特征看门狗和获取等待时限接口。
3.根据权利要求1所述的用于计算机操作系统的监控模块,其特征在于:所述看门狗外部调用接口子模块的接口包括创建看门狗、删除看门狗、喂看门狗和调整看门狗周期。
4.根据权利要求1所述的用于计算机操作系统的监控模块,其特征在于:所述看门狗监视任务子模块的接口还包括获取等待时间、系统定时唤醒、传递监视任务消息、获取指定特征看门狗及复位看门狗接口。
5.根据权利要求1所述的用于计算机操作系统的监控模块,其特征在于:在所述看门狗资源子模块中还设有修复关键任务的钩子函数。
6.根据权利要求1所述的用于计算机操作系统的监控模块,其特征在于:针对看门狗资源子模块中的所有软件看门狗配置有一一对应的互斥锁。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410614513.1A CN104360913B (zh) | 2014-11-04 | 2014-11-04 | 用于计算机操作系统的监控模块 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410614513.1A CN104360913B (zh) | 2014-11-04 | 2014-11-04 | 用于计算机操作系统的监控模块 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104360913A true CN104360913A (zh) | 2015-02-18 |
CN104360913B CN104360913B (zh) | 2017-10-27 |
Family
ID=52528177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410614513.1A Active CN104360913B (zh) | 2014-11-04 | 2014-11-04 | 用于计算机操作系统的监控模块 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104360913B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108919698A (zh) * | 2018-06-07 | 2018-11-30 | 浙江国自机器人技术有限公司 | 一种实时控制cpu的监控系统、方法及移动机器人 |
CN109992439A (zh) * | 2019-03-28 | 2019-07-09 | 深圳市创联时代科技有限公司 | 一种看门狗实现方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6868309B1 (en) * | 2001-09-24 | 2005-03-15 | Aksys, Ltd. | Dialysis machine with symmetric multi-processing (SMP) control system and method of operation |
CN101464811A (zh) * | 2008-12-29 | 2009-06-24 | 艾默生网络能源有限公司 | 多任务监控管理系统 |
CN103580941A (zh) * | 2012-08-01 | 2014-02-12 | 研祥智能科技股份有限公司 | 网络看门狗及其实现方法 |
CN103853625A (zh) * | 2012-12-06 | 2014-06-11 | 苏州工业园区新宏博通讯科技有限公司 | 多任务看门狗的实现装置和方法 |
-
2014
- 2014-11-04 CN CN201410614513.1A patent/CN104360913B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6868309B1 (en) * | 2001-09-24 | 2005-03-15 | Aksys, Ltd. | Dialysis machine with symmetric multi-processing (SMP) control system and method of operation |
CN101464811A (zh) * | 2008-12-29 | 2009-06-24 | 艾默生网络能源有限公司 | 多任务监控管理系统 |
CN103580941A (zh) * | 2012-08-01 | 2014-02-12 | 研祥智能科技股份有限公司 | 网络看门狗及其实现方法 |
CN103853625A (zh) * | 2012-12-06 | 2014-06-11 | 苏州工业园区新宏博通讯科技有限公司 | 多任务看门狗的实现装置和方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108919698A (zh) * | 2018-06-07 | 2018-11-30 | 浙江国自机器人技术有限公司 | 一种实时控制cpu的监控系统、方法及移动机器人 |
CN108919698B (zh) * | 2018-06-07 | 2022-03-15 | 浙江国自机器人技术股份有限公司 | 一种实时控制cpu的监控系统、方法及移动机器人 |
CN109992439A (zh) * | 2019-03-28 | 2019-07-09 | 深圳市创联时代科技有限公司 | 一种看门狗实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104360913B (zh) | 2017-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101799751B (zh) | 一种构建主机监控代理软件的方法 | |
CN100555228C (zh) | 一种嵌入式linux应用进程的监控方法 | |
CN106293919B (zh) | 一种时间触发的嵌入式任务调度装置与方法 | |
US7779298B2 (en) | Distributed job manager recovery | |
US10977070B2 (en) | Control system for microkernel architecture of industrial server and industrial server comprising the same | |
CN101996106B (zh) | 一种对软件运行状态进行监控的方法 | |
CN101271415B (zh) | 嵌入式设备中监控看门狗的实现方法 | |
CN109542831A (zh) | 机载平台多核虚拟分区处理系统 | |
CN102073572B (zh) | 用于多核处理器的监控方法及系统 | |
CN105677501A (zh) | Linux系统中基于看门狗的精细化进程监控方法及系统 | |
CN101464810A (zh) | 服务程序处理方法及服务器 | |
Bartolini et al. | Paving the way toward energy-aware and automated datacentre | |
CN108536531B (zh) | 一种基于单片机的任务调度和电源管理方法 | |
CN101667147A (zh) | 一种多任务的可控自动快照方法 | |
CN101751288A (zh) | 应用进程调度的方法、设备及系统 | |
CN104503859A (zh) | 在启动过程中监控计算机操作系统的方法 | |
WO2013029513A1 (zh) | 并行模拟多个处理器的方法及系统、调度器 | |
CN110569113A (zh) | 分布式任务的调度方法及系统、计算机可读存储介质 | |
Ying et al. | Optimizing energy, locality and priority in a mapreduce cluster | |
CN103399787A (zh) | 一种基于Hadoop云计算平台的MapReduce作业流式调度方法及调度系统 | |
CN102999317A (zh) | 面向多租户的弹性多进程服务处理方法 | |
CN104360913A (zh) | 用于计算机操作系统的监控模块 | |
CN104102491B (zh) | 单片机实时任务与耗时任务并行执行的实现方法和系统 | |
CN105912416A (zh) | 一种在终端中监测处理器的方法及终端 | |
CN105589760A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |