一种软件运行状态的监控方法

文档序号:6632809阅读:241来源:国知局
专利名称:一种软件运行状态的监控方法
技术领域
本发明涉及一种对软件的运行状态进行监控的方法,尤其是涉及一种多任务环境下软件运行状态的监控方法。
背景技术
在单任务软件中,看门狗(Watchdog)技术是一种比较成熟的监控软件运行状态的技术。在采用看门狗技术的系统中,有一个独立于CPU(中央处理器)的硬件看门狗计数器,该看门狗计数器上电后开始计数,溢出时会复位CPU,这就要求软件定期清空该看门狗计数器。如果软件没有按时清空看门狗计数器,则认为该软件进入异常状态,看门狗计数器会溢出并复位CPU,从而复位软件。
多任务软件中采用看门狗技术时,每个任务都会定期清空系统中的看门狗计数器,以达到每个任务都被监控的目的。然而,多任务软件中采用看门狗技术会产生以下几方面问题软件中某个任务进入异常状态时,虽然该任务并不清空看门狗计数器,但其他任务会定期清空看门狗计数器,从而导致看门狗技术的监控作用失效;软件中优先级高的任务频繁获得执行权,低优先级的任务得不到运行,由于优先级高的任务会清空看门狗计数器,这使得看门狗技术无法监控到软件进入异常状态。另外,看门狗技术异常处理手段过于单一,当软件进入异常状态后,看门狗计数器只是简单的复位CPU,并没有其他异常处理手段。

发明内容
本发明需要解决的技术问题是提供一种软件运行状态的监控方法,采用本发明能够分别独立地监控多任务软件中各个任务的运行状态,并且能针对不同的异常情况做出相应的异常处理。
为了解决上述技术问题,本发明提供了一种软件运行状态的监控方法,该方法通过计算机系统对软件中相应任务的运行状态进行监控,包括至少一个注册任务、优先级高于注册任务的监控任务、注册任务列表和互斥量,实现步骤如下(a1)构造注册任务列表,并且定义一个用于标识是否有任务正在操作注册任务列表的标志作为互斥量,注册任务列表由代表各自注册任务的各节点组成,各节点保存的信息包括注册任务名、异常处理函数指针、计数器计数、计数器门限、检测周期内清空计数器次数记录;(a2)监控任务初始化注册任务列表,然后需要被监控的任务经注册后成为注册任务,注册过程为将该任务所提供的包括注册任务名、异常处理函数指针、计数器门限的信息保存到注册任务列表中的一个未使用节点中,注册任务运行后可清空该节点中的计数器计数;(a3)监控任务按照一定的时间间隔重复检查注册任务列表,判断是否存在异常状态的注册任务,若存在,根据节点中保存的异常处理函数指针进入相应的异常处理。
进一步地,本方法还具有如下特点各节点保存的信息还包括节点使用标志,若该节点已使用,则节点使用标志为真。
进一步地,本方法还具有如下特点,监控任务对注册任务列表进行检查判断的时间间隔为一个检测周期,其监控逻辑包括如下步骤(b1)检查当前节点的节点使用标志是否为真,若为真,执行步骤(b2),否则执行步骤(b5);(b2)检查当前节点的检测周期内清空计数器次数记录是否为零,若为零,则执行步骤(b3),否则执行步骤(b5);(b3)计数器计数加1,并且检测该计数器计数值是否超过其计数器门限,若超过,则执行步骤(b4),否则执行步骤(b5);(b4)判定该节点代表的注册任务处于异常状态,并且根据该节点中保存的异常处理函数指针进入相应的异常处理;(b5)检查注册任务列表中的下一个节点,重复步骤(b1)至(b5),直至完成注册任务列表中所有节点的检测。
进一步地,本方法还具有如下特点各节点保存的信息还包括清空计数器次数高门限和清空计数器次数低门限,在注册过程中注册任务保存至注册任务列表的信息还包括清空计数器次数高门限和清空计数器次数低门限。
进一步地,本方法还具有如下特点,监控任务对注册任务列表进行检查判断的时间间隔为一个计数间隔,若干个计数间隔组成一个检测周期,其监控逻辑包括如下步骤(c1)检查当前节点的节点使用标志是否为真,若为真,执行步骤(c2),否则执行步骤(c7);(c2)检查当前节点的检测周期内清空计数器次数记录中当前计数间隔内的清空计数器次数是否为零,若为零,则执行步骤(c3),否则执行步骤(c5);(c3)计数器计数加1,并且检测该计数器计数值是否超过其计数器门限,若超过,则执行步骤(c4),否则执行步骤(c7);(c4)判定该节点代表的注册任务处于异常状态,并且根据该节点中保存的异常处理函数指针进入相应的异常处理,然后执行步骤(c7);(c5)判断是否完成一个检测周期,若是,执行步骤(c6),否则执行步骤(c7);(c6)累加该节点的检测周期内清空计数器次数记录,若累加结果大于清空计数器次数高门限或小于清空计数器次数低门限,则判定该节点代表的注册任务处于异常状态,并且根据该节点中保存的异常处理函数指针进入相应的异常处理;(c7)检查注册任务列表中的下一个节点,重复步骤(c1)至(c7),直至完成注册任务列表中所有节点的检测。
进一步地,本方法还具有如下特点监控任务初始化注册任务列表操作包括将注册任务列表中各节点的节点使用标志置为未使用,并将节点中的其他信息清零。
进一步地,本方法还具有如下特点实现注册任务列表的数据结构为列表、数组或链表;所述监控任务和注册任务的具体实现形式可为操作系统中的进程、过程、线程,或为处理器的中断处理,或为独立编写的功能模块;所述互斥量的实现形式包括变量、寄存器和操作系统提供的互斥量,监控任务或各注册任务在操作注册任务列表前必须首先获取该互斥量。
进一步地,本方法还具有如下特点,当注册任务不需再被监控时,可对其进行注销,注销过程包括如下步骤(d1)获取互斥量;(d2)根据注册任务名在注册任务列表中找到保存该注册任务信息的节点,将节点的节点使用标志置设置为未使用,而其余的节点信息清零;(d3)释放互斥量。
与现有技术相比,本发明具有以下优点A、由于本发明通过注册任务列表对每个注册任务分别进行计数器计数,并且按照设定的计数器门限进行判定,从而可消除注册任务之间的相互影响,实现对多个注册任务运行状态的同时监控;B、由于本发明中可由注册任务提供异常处理函数指针,从而可提供灵活的异常处理手段,既不受看门狗硬件功能的限制,也不受监控任务的具体实现方式的限制,注册任务可以根据自身的需求灵活地采用任何异常处理手段;C、通过累计注册任务的检测周期内清空计数器记录,可获取注册任务占用CPU时间的信息,当注册任务运行过于频繁或者过少时,可通过异常处理函数来进行调节,从而可使软件运行更加平稳。


图1是本发明中注册任务列表的数据结构示意图;图2是本发明的结构方框图;图3是本发明中监控逻辑运行流程图。
具体实施例方式
为了深入了解本发明,下面结合附图及具体实施例对本发明进行详细说明。
注册任务列表是本发明的核心数据结构,是用于保存注册任务信息的列表,还可以采用不同数据结构来实现注册任务列表,如数组或链表。注册任务列表的大小由注册任务的数量决定。
根据本发明的实施例中,注册任务列表由多个节点组成,如图1所示,每个节点保存一个注册任务的信息,节点保存的信息包括节点使用标志、注册任务名、异常处理函数指针、计数器计数、计数器门限、检测周期内清空计数器次数记录、清空计数器次数高门限和清空计数器次数低门限。
其中,节点使用标志为该节点是否已用于保存一个注册任务信息的标志;注册任务名为注册任务在注册任务列表中的标识符;异常处理函数指针为监控任务进行异常处理的手段,可由注册任务根据自身需要进行灵活设定;计数器计数是保存该注册任务列表节点的计数器的当前计数,监控任务主循环运行一次,计数器加1,计数间隔定义为监控任务主循环运行一次所需时间;所述计数器门限为计数器的最大计数值,由注册任务提供,如果计数器计数超过该值,监控任务可判定注册任务进入异常状态;检测周期内清空计数器次数记录是指在一个检测周期内注册任务在每个计数间隔内清空计数器次数,检测周期为监控任务累计注册任务清空计数器次数的时间间隔,一个检测周期可由若干个计数间隔组成,清空计数器次数为注册任务将计数器计数清零的次数;清空计数器次数高门限、清空计数器次数低门限为注册任务在一个检测周期内清空计数器次数的最大值和最小值,由注册任务提供,如果一个检测周期内清空计数器次数大于清空计数器次数高门限,或者小于清空计数器次数低门限,监控任务认为注册任务进入异常状态。
如图2所示,本发明借助计算机系统对软件中相应任务的运行状态进行监控,其组成部分包括监控任务、至少一个注册任务、互斥量以及注册任务列表,监控任务的优先级高于所有注册任务。其中,监控任务是监控注册任务运行状态的任务,注册任务则是指被监控任务监控的任务。监控任务的优先级高于所有注册任务,以保证其不被注册任务阻塞。所述任务是指软件中占用计算机系统中处理器运行时间的相对独立的部分,其具体实现形式可以是操作系统中的进程、过程、线程,或处理器的中断处理,或独立编写的功能模块,但不限于以上几种形式。所述互斥量为一个用来标识是否有任务正在操作注册任务列表的标志,可以采用多种形式来实现该互斥量,如变量、寄存器或操作系统提供的互斥量,这并不改变本发明的实质和范围。由于本发明中监控任务以及所有注册任务共同操作注册任务列表,所以采用互斥量来保证注册任务列表中数据的一致性;因此,任务必须先获取该互斥量,然后才能操作注册任务列表。
借助于计算机系统运行的本方法在启动过程中给注册任务列表分配存储空间,构造出注册任务列表,并定义一个全局变量作为互斥量,然后启动监控任务,监控任务需要完成如下的两部分工作,首先是在初始化阶段完成注册任务列表的初始化工作,初始化注册任务列表的过程包括如下步骤步骤11,获取互斥量;步骤12,将注册任务列表中所有节点的节点使用标志置为未使用,将节点中的其他信息清零;步骤13,释放互斥量。
其次,在完成注册任务列表初始化之后,监控任务进入主循环,本发明中将监控任务主循环运行一次所需时间定义为计数间隔,按照计数间隔反复运行主循环,主循环包括如下步骤步骤21,获取互斥量;步骤22,运行监控逻辑,该监控逻辑如图3所示,将在后面进行描述说明;步骤23,释放互斥量;步骤24,延时一段时间后,让其它任务运行,在这段延时时间内注册任务可进行注册、清零和注销等操作,返回步骤21。
监控任务完成注册任务列表初始化之后,才可以启动可被监控的任务,可被监控任务如需要监控则必须注册,注册成功后成为注册任务,注册任务完成的工作为注册、清空计数器和注销,其中注册的过程包括如下步骤步骤31,获取互斥量;步骤32,在注册任务列表中寻找一个节点使用标志为未始用的节点;
步骤33,将该需要被监控任务提供的信息保存到步骤32中所述的节点中,所述的信息包括注册任务名、异常处理函数指针、计数器门限、清空计数器次数高门限、清空计数器次数低门限;步骤34,将步骤32中所述节点的节点使用标志置为已使用;步骤35,释放互斥量。
注册任务可在任意时刻,根据自身需要清空计数器,注册任务可以运行一次清空计数器一次或数次,也可以运行数次才清空一次,清空计数器的过程包括如下步骤步骤41,获取互斥量;步骤42,根据注册任务名在注册任务列表中找到保存该注册任务信息的节点;步骤43,将步骤42中找到的所述节点的计数器计数清零,并将本次清空操作记录到检测周期内清空计数器次数记录中;步骤44,释放互斥量。
注册任务可以通过注销使其不再被监控任务监控,注销过程包括如下步骤步骤51,获取互斥量;步骤52,根据注册任务名在注册任务列表中找到保存该注册任务信息的节点,将所述节点的节点使用标志置为未使用,其他信息清零;步骤53,释放互斥量。
图2中无文字的方框表示循环标志,指监控任务的主循环;注册任务必须先注册,后注销,且注册、注销必须成对出现。注册任务可以在注册之后,注销之前的任意时刻清空计数器,但不能在注册之前,注销之后清空计数器。
如图3所示,监控任务主循环中的监控逻辑运行包括如下步骤步骤301,检查当前节点的节点使用标志是否为被使用,即节点使用标志是否为真,若是,执行步骤302,否则,执行步骤312;步骤302,检查当前节点的检测周期内清空计数器次数记录中,当前计数间隔内的清空计数器次数是否为零,若是,执行步骤303,否则,执行步骤306;
步骤303,所述节点的计数器计数加1;步骤304,检测该计数器计数值是否超过其计数器门限,若是,执行步骤305,否则执行步骤306;步骤305,判定该注册任务长时间得不到运行而进入异常状态,并且根据该节点中保存的异常处理函数指针进入相应的异常处理,然后执行步骤312;步骤306,判断是否完成一个检测周期,若是,执行步骤307,否则,执行步骤312;步骤307,累加所述检测周期内清空计数器次数记录;步骤308,判断累加结果是否大于清空计数器次数高门限,若大于,执行步骤309,否则执行步骤310;步骤309,判定该注册任务运行过于频繁而进入异常状态,并且根据该节点中保存的异常处理函数指针进入相应的异常处理,然后执行步骤312;步骤310,判断累加结果是否小于清空计数器次数低门限,若小于,执行步骤311,否则执行步骤312;步骤311,判定该注册任务获取的运行时间过少而进入异常状态,并且根据该节点中保存的异常处理函数指针进入相应的异常处理,然后执行步骤312;步骤312,遍历注册任务列表对其中每个节点都进行步骤301至步骤312的处理。
综上所述,采用本发明可同时监控软件中多个任务的运行状态,且异常处理手段灵活,不受监控任务的具体实现限制,可有效提高多任务软件的自愈性和稳定性。
权利要求
1.一种软件运行状态的监控方法,该方法通过计算机系统对软件中相应任务的运行状态进行监控,包括至少一个注册任务、优先级高于注册任务的监控任务、注册任务列表和互斥量,实现步骤如下(a1)构造注册任务列表,并且定义一个用于标识是否有任务正在操作注册任务列表的标志作为互斥量,注册任务列表由代表各自注册任务的各节点组成,各节点保存的信息包括注册任务名、异常处理函数指针、计数器计数、计数器门限、检测周期内清空计数器次数记录;(a2)监控任务初始化注册任务列表,然后需要被监控的任务经注册后成为注册任务,注册过程为将该任务所提供的包括注册任务名、异常处理函数指针、计数器门限的信息保存到注册任务列表中的一个未使用节点中,注册任务运行后可清空该节点中的计数器计数;(a3)监控任务按照一定的时间间隔重复检查注册任务列表,判断是否存在异常状态的注册任务,若存在,根据节点中保存的异常处理函数指针进入相应的异常处理。
2.根据权利要求1所述的软件运行状态的监控方法,其特征在于各节点保存的信息还包括节点使用标志,若该节点已使用,则节点使用标志为真。
3.根据权利要求2所述的软件运行状态的监控方法,其特征在于,监控任务对注册任务列表进行检查判断的时间间隔为一个检测周期,其监控逻辑包括如下步骤(b1)检查当前节点的节点使用标志是否为真,若为真,执行步骤(b2),否则执行步骤(b5);(b2)检查当前节点的检测周期内清空计数器次数记录是否为零,若为零,则执行步骤(b3),否则执行步骤(b5);(b3)计数器计数加1,并且检测该计数器计数值是否超过其计数器门限,若超过,则执行步骤(b4),否则执行步骤(b5);(b4)判定该节点代表的注册任务处于异常状态,并且根据该节点中保存的异常处理函数指针进入相应的异常处理;(b5)检查注册任务列表中的下一个节点,重复步骤(b1)至(b5),直至完成注册任务列表中所有节点的检测。
4.根据权利要求2所述的软件运行状态的监控方法,其特征在于,各节点保存的信息还包括清空计数器次数高门限和清空计数器次数低门限,在注册过程中注册任务保存至注册任务列表的信息还包括清空计数器次数高门限和清空计数器次数低门限。
5.根据权利要求4所述的软件运行状态的监控方法,其特征在于,监控任务对注册任务列表进行检查判断的时间间隔为一个计数间隔,若干个计数间隔组成一个检测周期,其监控逻辑包括如下步骤(c1)检查当前节点的节点使用标志是否为真,若为真,执行步骤(c2),否则执行步骤(c7);(c2)检查当前节点的检测周期内清空计数器次数记录中当前计数间隔内的清空计数器次数是否为零,若为零,则执行步骤(c3),否则执行步骤(c5);(c3)计数器计数加1,并且检测该计数器计数值是否超过其计数器门限,若超过,则执行步骤(c4),否则执行步骤(c7);(c4)判定该节点代表的注册任务处于异常状态,并且根据该节点中保存的异常处理函数指针进入相应的异常处理,然后执行步骤(c7);(c5)判断是否完成一个检测周期,若是,执行步骤(c6),否则执行步骤(c7);(c6)累加该节点的检测周期内清空计数器次数记录,若累加结果大于清空计数器次数高门限或小于清空计数器次数低门限,则判定该节点代表的注册任务处于异常状态,并且根据该节点中保存的异常处理函数指针进入相应的异常处理;(c7)检查注册任务列表中的下一个节点,重复步骤(c1)至(c7),直至完成注册任务列表中所有节点的检测。
6.根据权利要求2所述的软件运行状态的监控方法,其特征在于监控任务初始化注册任务列表操作包括将注册任务列表中各节点的节点使用标志置为未使用,并将节点中的其他信息清零。
7.根据权利要求6所述的软件运行状态的监控方法,其特征在于实现注册任务列表的数据结构为列表、数组或链表。
8.根据权利要求7所述的软件运行状态的监控方法,其特征在于所述监控任务和注册任务的具体实现形式可为操作系统中的进程、过程、线程,或为处理器的中断处理,或为独立编写的功能模块。
9.根据权利要求8所述的软件运行状态的监控方法,其特征在于所述互斥量的实现形式包括变量、寄存器和操作系统提供的互斥量,监控任务或各注册任务在操作注册任务列表前必须首先获取该互斥量。
10.根据权利要求9所述的软件运行状态的监控方法,其特征在于,当注册任务不需再被监控时,可对其进行注销,注销过程包括如下步骤(d1)获取互斥量;(d2)根据注册任务名在注册任务列表中找到保存该注册任务信息的节点,将节点的节点使用标志置设置为未使用,而其余的节点信息清零;(d3)释放互斥量。
全文摘要
本发明公开了一种软件运行状态的监控方法,该方法通过计算机系统对相应软件的运行状态进行监控,包括注册任务、监控任务、注册任务列表和互斥量,实现步骤如下构造注册任务列表,并且定义一个用于标识是否有任务正在操作注册任务列表的标志作为互斥量;监控任务初始化注册任务列表,然后需要被监控的任务经注册后成为注册任务,注册任务运行后可清空该节点中的计数器计数;监控任务按一定的时间间隔重复检查注册任务列表,判断是否存在异常状态的注册任务,若存在,根据节点中保存的异常处理函数指针进入相应的异常处理。采用本发明能够分别独立地监控多任务软件中各个任务的运行状态,并且能针对不同的异常情况做出相应的异常处理。
文档编号G06F11/36GK1908906SQ200510087709
公开日2007年2月7日 申请日期2005年8月5日 优先权日2005年8月5日
发明者吴召惠, 曲欣 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1