CN101149702A - 操作系统故障检测的方法和装置 - Google Patents

操作系统故障检测的方法和装置 Download PDF

Info

Publication number
CN101149702A
CN101149702A CNA2007101773327A CN200710177332A CN101149702A CN 101149702 A CN101149702 A CN 101149702A CN A2007101773327 A CNA2007101773327 A CN A2007101773327A CN 200710177332 A CN200710177332 A CN 200710177332A CN 101149702 A CN101149702 A CN 101149702A
Authority
CN
China
Prior art keywords
register
task
initial value
operating system
default
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
Application number
CNA2007101773327A
Other languages
English (en)
Other versions
CN100557576C (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2007101773327A priority Critical patent/CN100557576C/zh
Publication of CN101149702A publication Critical patent/CN101149702A/zh
Application granted granted Critical
Publication of CN100557576C publication Critical patent/CN100557576C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种操作系统故障检测的方法和装置,属于操作系统领域。所述方法包括:在操作系统中开始执行任务时,寄存器累计所述任务对CPU的占用量;当由于所述寄存器累计的占用量达到所述寄存器的溢出值而产生内部中断信号时,判定所述操作系统故障。所述装置包括:寄存器,所述寄存器具体包括:设置模块、记录模块和判定模块。本发明通过在操作系统执行每个任务时都进行故障检测,提高了操作系统的故障检测速度。

Description

操作系统故障检测的方法和装置
技术领域
本发明涉及操作系统领域,特别涉及一种操作系统故障检测的方法和装置。
背景技术
在实时操作系统中,操作系统挂死是经常出现的软件故障,其表现为一个任务(进程、线程)由于死循环、死等I/O(Input/Output,输入/输出)或死锁等故障原因而长期独占CPU(Central Processing Unit,中央处理器),使得操作系统中其他任务无法进行调度,从而导致操作系统崩溃。
现有技术中,通过软件狗对操作系统进行故障检测,其中软件狗的实现方式为:利用CPU的时钟Tick中断去清狗,然后在任务切换过程中去增狗,如果在设定的容忍时间T内没有发生任务切换,即狗在T时间内没有被清,判定操作系统挂死。例如,CPU的时钟中断周期为0.1s,设定的容忍时间为10s(在10s内没有发生任务切换就认为操作系统故障),则狗的最大值为100,每隔0.1s狗的值减1,在任务切换时狗的值又会增为100,如果在10s后检测到狗的值为0,则表明没有发生任务切换,认为操作系统故障。通过软件狗进行操作系统故障检测的优势是可以记录下操作系统故障时各种寄存器和堆栈的现场信息,方便维护人员后期的故障定位。
在实现本发明的过程中,发明人发现上述现有技术中至少存在以下缺点:
故障发现速度慢,在通过软件狗进行故障检测时,为了防止误检测(某些I/O操作较多的任务,CPU的执行时间会较长),都需要预先设定一个容忍时间T。也就是说,狗只有在操作系统挂死T时间后,才能感知到故障,执行后面的故障处理。通常把这个T设置为秒级别,现有技术中一般T的缺省值是10s告警,40s操作系统复位,这个级别的检测时间不利于操作系统可靠性达到99.999%或99.9999%。
发明内容
为了提高操作系统的故障检测速度,本发明实施例提供了一种操作系统故障检测的方法和装置。所述技术方案如下:
一方面,本发明实施例提供了一种操作系统故障检测的方法,所述方法包括:
当在操作系统中开始执行任务时,寄存器累计所述任务对CPU的占用量;
当由于所述寄存器累计的占用量达到所述寄存器的溢出值而产生内部中断信号时,判定所述操作系统故障。
另一方面,本发明实施例还提供了一种操作系统故障检测的装置,所述装置包括寄存器,所述寄存器用于当在操作系统中开始执行任务时,累计所述任务对CPU的占用量;当由于所述寄存器累计的占用量达到所述寄存器的溢出值而产生内部中断信号时,判定所述操作系统故障。
本发明实施例提供的技术方案的有益效果是:
本发明实施例通过在操作系统中执行每个任务时都进行故障检测,提高了故障检测的速度,减少了操作系统的故障发现时间。
附图说明
图1是本发明实施例1提供的操作系统故障检测的方法的流程图;
图2是本发明实施例1提供的指令数故障检测图;
图3是本发明实施例1提供的时钟周期故障检测图;
图4是本发明实施例2提供的操作系统故障检测的方法的流程图;
图5是本发明实施例3提供的操作系统故障检测的装置的结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例在操作系统中执行每个任务时都进行故障检测,提高了故障检测的速度,减少了故障发现的时间。
本发明实施例提供了一种操作系统故障检测的方法,包括;
当在操作系统中开始执行任务时,寄存器累计该任务对CPU的占用量;
当由于寄存器累计的占用量达到寄存器的溢出值而产生内部中断信号时,判定操作系统故障。
目前通用的CPU,例如Intel系列和PPC系列的CPU都有一组性能统计寄存器,用来记录CPU工作时的各种性能数据,以供使用者进行性能测试和性能优化使用。这些性能统计寄存器记录的数据类型很多,例如,CPU执行指令的个数、CPU运行的时钟周期数等。这些性能统计寄存器支持软件对其执行读写操作,当寄存器溢出时,会根据用户配置的需要产生一个内部中断信号。
实施例1
在本实施例中,通过CPU执行任务时已执行的指令数和执行时间来描述任务对CPU的占用量,使用CPU的性能统计寄存器中的两个作为InstCounter(指令寄存器)和CycleCounter(时钟周期寄存器)。
参见图1,本发明实施例提供了一种操作系统故障检测的方法,具体包括:
S101:预设指令数的上限阈值和执行时间的上限阈值。
对于不同的操作系统,CPU执行任务需要的指令数和执行时间的确定方式是不同的,对于基于时间片调度的系统,时间片的时间长度是一定的,例如,100ms,将时间片的长度作为执行时间的上限阈值;
CPU执行任务所需的指令数可以通过时钟周期和平均指令周期估算出来,具体如下:
1)时钟周期和CPU的频率有关,时钟周期=1/频率;
2)指令周期=n*时钟周期,指令不同n的值也不同,CPU执行一条指令需要几个时钟周期是确定的,可以通过指令手册查到;
3)将CPU执行每个指令的指令周期加权平均得到平均指令周期;
4)将时间片的长度除以平均指令周期得到CPU执行该任务需要的指令数,将该指令数作为预设的指令数的上限阈值。
对于基于非时间片调度的系统,CPU执行任务需要的指令数和执行时间无法估算,可以通过实验确定CPU执行任务所需的指令数和时钟周期,本实施例中,将CPU执行优先级较高的任务或负荷较重的任务需要的指令数预设为指令数的上限阈值,并将CPU执行该任务需要的时钟周期个数与时钟周期的乘积预设为执行时间的上限阈值,所得到的时钟周期一般为5~10s。例如,对于某个任务,CPU执行该任务需要5000条指令,运行这些指令需要20000个时钟周期。如果该任务是优先级较高的任务或负荷较重的任务,则将5000预设为指令数的上限阈值,将20000与时钟周期的乘积预设为执行时间的上限阈值;如果该任务是普通任务,则指令数的上限阈值或执行时间的上限阈值会大于该任务的指令数值和执行时间。
在实际操作过程中,预设的指令数的上限阈值或执行时间的上限阈值要比实验确定出来的大一些,这样可以应付性能比较差的I/O操作。
S102:当在操作系统中开始执行任务时,InstCounter记录该任务连续已执行的指令数,并且CycleCounter记录该任务的连续执行时间。
本实施例中,寄存器可以为加法寄存器也可以为减法寄存器,当InstCounter为加法寄存器时,InstCounter从预设的第一初始值开始递增记录任务连续已执行的指令数,第一初始值为将InstCounter的溢出值减去预设的指令数的上限阈值得到的差值;当InstCounter为减法寄存器时,InstCounter从预设的指令数的上限阈值开始递减记录任务连续已执行的指令数。
例如,InstCounter是一个32位的加法寄存器,它的溢出值为232,如果预设的指令数上限阈值为40000,则第一初始值为232-40000,即CPU执行该任务时,InstCounter记录的已执行的指令数超过232-40000时,InstCounter就会溢出;当InstCounter为一个32位的减法寄存器时,则第一初始值为预设的指令数上限阈值,即40000,CPU执行该任务时,每执行一条指令,InstCounter的值减1,当减到0时,InstCounter就会溢出。
与InstCounter类似,当CycleCounter为加法寄存器时,CycleCounter从预设的第二初始值开始递增记录该任务的连续执行时间,第二初始值为先将预设的执行时间的上限阈值与CPU的时钟周期相除(执行优先级较高或负荷较重任务需要的时钟周期的个数),然后将CycleCounter的溢出值减去相除结果得到的差值;当CycleCounter为减法寄存器时,CycleCounter从预设的第三初始值开始递减记录该任务的连续执行时间,第三初始值为将执行时间的上限阈值与CPU的时钟周期相除得到的结果。
S103:当由于InstCounter记录的指令数递增或递减到InstCounter的溢出值而产生内部中断信号,或由于CycleCounter记录的时间递增或递减到CycleCounter的溢出值而产生内部中断信号时,判定操作系统故障。
参见图2,为指令数故障检测图,图中以加法寄存器为例进行说明,对于某个任务,随着指令数的增长,InstCounter和CycleCounter的值也随之增大,图中前三个任务都正常切换,在第四个任务时,指令数达到InstCounter的溢出值,产生内部中断信号,即CPU执行该任务时指令数超过限度,此时认为操作系统故障。
参见图3,为时钟周期故障检测图,同图2类似,图中前三个任务都正常切换,在第四个任务时,时钟周期先达到CycleCounter的溢出值,产生内部中断信号。
在本实施例中,InstCounter或CycleCounter中的至少一个溢出,产生内部中断信号,都判定操作系统故障。目前已有的CPU都广泛采用了指令流水线技术,在一个时钟周期内可能会通过多条指令,但某些和内存操作有关的指令却会占用多个时钟周期(3~200个),即指令数和时钟周期没有恒定的比例关系(图2和图3中每个任务的指令数和时钟周期数的直线斜率都不一样),在大多数的情况下,操作系统故障可以通过InstCounter的溢出检测出来(图2中的情况);另外,在I/O操作时,CPU会处于一种Halt状态,此时CPU基本不执行什么指令了,所以需要一个总的时间做为把关,防止CPU在Halt状态时挂死,对于I/O操作而导致操作系统故障的情况,则可以通过CycleCounter的溢出检测出来(图3中的情况,CycleCounter溢出时InstCounter还未达到溢出)。
S104:CPU进行故障处理。
CPU捕捉到InstCounter或CycleCounter产生的内部中断信号后,接管这个内部中断信号,进行故障处理(挂起或复位)。对于Intel系列的CPU,可以通过APIC(AdvancedProgrammable Interrupt Controller,高级程序中断控制器)捕捉这个内部中断信号,并产生一个NMI(None Maskable Interrupt,不可屏蔽中断)进行故障后处理。
进一步地,上述操作系统故障检测的方法还可以包括:
在任务切换时,将InstCounter的值复位为预设的第一初始值或预设的指令数的上限阈值,将CycleCounter的值复位为预设的第二初始值或第三初始值。
在实际操作过程中,由于大部分的性能统计寄存器只有32位,而能使用的只有231,即32位寄存器的最高位置1则认为溢出,这样寄存器的溢出范围有些小,可能不够使用(如果预设的指令数或执行时间的上限阈值较大),对于这类情况,可以通过多次溢出再处理的方式,即寄存器产生多次中断信号后,才判定操作系统故障。具体的溢出次数根据预设的指令数的上限阈值或执行时间的上限阈值而定,例如,预设的指令数的上限阈值为85000,寄存器的溢出值为216,则85000/216的商为1余数为19464,则可以设置寄存器溢出两次,如果为加法寄存器,可以将寄存器的的初始值预设为216-19464=46072,则CPU执行完19464条指令后,寄存器溢出产生第一次中断;当寄存器第二次溢出产生中断时,表明指令数达到或超过预设的指令数的上限阈值,判定操作系统故障。
对于不同的CPU,有的时候可能在任务中遇到的中断比较多,由于CPU在遇到中断后先执行中断(中断可以打断任务),而中断中执行的指令和经过的时间是记录在被打断的任务里的,这样有可能导致InstCounter或CycleCounter的计数值达到溢出值从而造成误报挂死,对于这种情况,可以在中断入口处停止InstCounter和CycleCounter,在中断出口时再启动InstCounter和CycleCounter。
本实施例通过在操作系统执行每个任务的过程中都进行故障检测,避免了现有技术中十几到几十个时钟周期才进行一次故障检测的问题,提高了故障检测的速度和灵敏度,减小了检测粒度;通过记录任务的指令数进行故障检测,还可以体现出CPU处理能力的差别,在寄存器记录的连续已执行的指令数或执行时间达到寄存器的溢出值时产生内部中断信号,进行故障判断,与现有技术相比,减小了故障检测的软件开销;通过捕捉寄存器溢出产生内部中断信号来作为判断操作系统故障的依据,有效地解决了现有技术中因中断被屏蔽而导致软件狗失效的问题,降低了故障检测失效的概率。
实施例2
本实施例中,通过CPU执行该任务时已执行的指令数来描述任务对CPU的占用量,使用CPU的性能统计寄存器中的一个作为指令寄存器来记录任务连续已执行的指令数。
参见图4,本发明实施例还提供了一种操作系统故障检测的方法,具体包括:
S201:预设指令数的上限阈值。
本实施例中,将CPU执行优先级较高的任务或负荷较重的任务需要的指令数预设为指令数的上限阈值,CPU执行该任务需要的指令数的计算方法与实施例1中所述相同,这里不再赘述。
S202:当在操作系统中开始执行任务时,指令寄存器记录该任务连续已执行的指令数。
指令寄存器从预设的初始值开始递增记录或从预设的指令数的上限阈值开始递减记录该任务连续已执行的指令数,预设的初始值为指令寄存器的溢出值减去预设的指令数的上限阈值得到的差值。
S203:当由于指令寄存器记录的指令数递增或递减到指令寄存器的溢出值而产生内部中断信号时,判定操作系统故障。
S204:CPU进行故障处理。
进一步地,上述方法还可以包括:
当任务切换时,将指令寄存器的值复位为预设的初始值或预设的指令数的上限阈值。
进一步地,还可以通过CPU执行该任务时的执行时间来描述任务对CPU的占用量,使用CPU的性能统计寄存器中的一个作为时钟周期寄存器来记录任务的执行时间,因此在实施例2中,指令寄存器还可以由时钟周期寄存器来代替,则S201中预设执行时间的上限阈值,将CPU执行优先级较高的任务或负荷较重的任务需要的时钟周期预设为执行时间的上限阈值;S202中时钟周期寄存器在记录任务的执行时间时,从预设的第二初始值开始递增记录或从预设的第三初始值开始递减记录该任务的连续执行时间;第二初始值为先将预设的执行时间的上限阈值与时钟周期相除(执行优先级较高或负荷较重任务需要的时钟周期的个数),然后将CycleCounter的溢出值减去上述相除结果得到的差值,第三初始值为将执行时间的上限阈值与CPU的时钟周期相除得到的结果。
本实施例通过在操作系统执行每个任务的过程中都进行故障检测,即每个时钟周期都进行故障检测,避免了现有技术中十几到几十个时钟周期才进行一次故障检测的问题,提高了故障检测的速度和灵敏度,减小了检测粒度;通过记录指令数进行故障检测,体现了CPU处理能力的差别;在寄存器记录的连续已执行的指令数达到寄存器的溢出值时产生内部中断信号,与现有技术相比,实现简单且减小了故障检测的软件开销。
实施例3
参见图5,本发明实施例提供了一种操作系统故障检测的装置,包括寄存器,该寄存器用于当在操作系统中开始执行任务时,累计该任务对CPU的占用量;当由于寄存器累计的占用量达到寄存器的溢出值而产生内部中断信号时,判定操作系统故障。
进一步地,上述寄存器可以具体包括:
设置模块,用于预设指令数的上限阈值和初始值,初始值为将寄存器的溢出值减去指令数的上限阈值得到的差值;
记录模块,用于当在操作系统中开始执行任务时,从设置模块预设的初始值开始递增记录该任务连续已执行的指令数或从设置模块预设的指令数的上限阈值开始递减记录所述任务连续已执行的指令数;
判定模块,用于当由于记录模块记录的指令数递增或递减到寄存器的溢出值而产生内部中断信号时,判定操作系统故障。
上述寄存器还可以具体包括:
设置模块,用于预设执行时间的上限阈值,并预设第一初始值或第二初始值,第一初始值为先将执行时间的上限阈值与CPU的时钟周期相除,然后将寄存器的溢出值减去相除结果得到的差值,第二初始值为将预设的执行时间的上限阈值与CPU的时钟周期相除得到的结果;
记录模块,用于当在操作系统中开始执行任务时,从设置模块预设的第一初始值开始递增记录或从设置模块预设的第二初始值开始递减记录该任务的连续执行时间;
判定模块,用于当由于记录模块记录的时间值递增或递减到寄存器的溢出值而产生内部中断信号时,判定操作系统故障。
上述寄存器还可以具体包括指令寄存器和时钟周期寄存器:
其中,指令寄存器可以具体包括:
设置模块,用于预设指令数的上限阈值和第一初始值,第一初始值为将指令寄存器的溢出值减去指令数的上限阈值得到的差值;
累计模块,用于当在操作系统中开始执行任务时,从设置模块预设的第一初始值开始递增记录或从设置模块预设的指令数的上限阈值开始递减记录该任务连续已执行的指令数;
判定模块,用于当由于记录模块记录的指令数递增或递减到指令寄存器的溢出值而产生内部中断信号时,判定操作系统故障;
时钟周期寄存器可以具体包括:
设置模块,用于预设执行时间的上限阈值,并预设第二初始值或第三初始值,预设的第二初始值为先将执行时间的上限阈值与CPU的时钟周期相除,然后将时钟周期寄存器的溢出值减去相除结果得到的差值,预设的第三初始值为将预设的执行时间的上限阈值与CPU的时钟周期相除得到的结果;
记录模块,用于当在操作系统中开始执行任务时,从时钟周期寄存器的设置模块预设的第二初始值开始递增记录或从时钟周期寄存器的设置模块预设的第三初始值开始递减记录该任务的连续执行时间;
判定模块,用于当由于时钟周期寄存器的记录模块记录的时间值递增或递减到时钟周期寄存器的溢出值而产生内部中断信号时,判定操作系统故障。
进一步地,上述装置还可以包括:
复位模块,用于当任务切换时,将寄存器的值复位。
本实施例在操作系统执行每个任务执行过程中都进行故障检测,提高了故障检测的速度,减少了故障发现时间,在具体实施时,通过寄存器的记录模块记录该任务连续已执行的指令数并记录该任务的连续执行时间,不仅减小了软件开销,还可以体现出CPU处理能力的差别;同时寄存器记录的指令数或时间值达到寄存器的溢出值时产生内部中断信号,在检测到该信号后判定操作系统故障,避免了现有技术中因中断被屏蔽而导致软件狗失效的问题,降低了故障检测失效的概率,且实现简单。
本发明实施例可以通过软件和硬件相结合的方式实现,相应的软件可以保存在可读取的存储介质中,例如,计算机的硬盘、软盘或光盘中。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种操作系统故障检测的方法,其特征在于,所述方法包括:
当在操作系统中开始执行任务时,寄存器累计所述任务对CPU的占用量;
当由于所述寄存器累计的占用量达到所述寄存器的溢出值而产生内部中断信号时,判定所述操作系统故障。
2.根据权利要求1所述的操作系统故障检测的方法,其特征在于,所述寄存器累计所述任务对CPU的占用量的步骤具体包括:
寄存器从预设的初始值开始递增记录或从预设的指令数的上限阈值开始递减记录所述任务连续已执行的指令数;
所述初始值为将所述寄存器的溢出值减去所述预设的指令数的上限阈值得到的差值。
3.根据权利要求1所述的操作系统故障检测的方法,其特征在于,所述寄存器累计所述任务对CPU的占用量的步骤具体包括:
寄存器从预设的第一初始值开始递增记录或从预设的第二初始值开始递减记录所述任务的连续执行时间;
所述第一初始值为先将预设的执行时间的上限阈值与CPU的时钟周期相除,然后将所述寄存器的溢出值减去所述相除结果得到的差值;
所述第二初始值为将所述执行时间的上限阈值与所述CPU的时钟周期相除得到的结果。
4.根据权利要求1所述的操作系统故障检测的方法,其特征在于,所述寄存器累计所述任务对CPU的占用量的步骤具体包括:
指令寄存器从预设的第一初始值开始递增记录或从预设的指令数的上限阈值开始递减记录所述任务连续已执行的指令数;
所述第一初始值为将所述指令寄存器的溢出值减去所述预设的指令数的上限阈值得到的差值;
时钟周期寄存器从预设的第二初始值开始递增记录或从预设的第三初始值开始递减记录所述任务的连续执行时间;
所述第二初始值为先将预设的执行时间的上限阈值与CPU的时钟周期相除,然后将所述时钟周期寄存器的溢出值减去所述相除结果得到的差值;
所述第三初始值为将所述执行时间的上限阈值与所述CPU的时钟周期相除得到的结果。
5.根据权利要求1所述的操作系统故障检测的方法,其特征在于,所述方法还包括:
当任务切换时,将所述寄存器的值复位。
6.一种操作系统故障检测的装置,其特征在于,所述装置包括寄存器,所述寄存器用于当在操作系统中开始执行任务时,累计所述任务对CPU的占用量;当由于所述寄存器的累计的占用量达到所述寄存器的溢出值而产生内部中断信号时,判定所述操作系统故障。
7.根据权利要求6所述的操作系统故障检测的装置,其特征在于,所述寄存器具体包括:
设置模块,用于预设指令数的上限阈值和初始值,所述初始值为将所述寄存器的溢出值减去所述指令数的上限阈值得到的差值;
记录模块,用于当在操作系统中开始执行任务时,从所述设置模块预设的初始值开始递增记录或从所述设置模块预设的指令数的上限阈值开始递减记录所述任务连续已执行的指令数;
判定模块,用于当由于所述记录模块的记录的指令数递增或递减到所述寄存器的溢出值而产生内部中断信号时,判定所述操作系统故障。
8.根据权利要求6所述的操作系统故障检测的装置,其特征在于,所述寄存器具体包括:
设置模块,用于预设执行时间的上限阈值,并预设第一初始值或第二初始值,所述第一初始值为先将所述执行时间的上限阈值与CPU的时钟周期相除,然后将所述寄存器的溢出值减去所述相除结果得到的差值,所述第二初始值为将所述执行时间的上限阈值与所述CPU的时钟周期相除得到的结果;
记录模块,用于当在操作系统中开始执行任务时,从所述设置模块预设的第一初始值开始递增记录或从所述设置模块预设的第二初始值开始递减记录所述任务的连续执行时间;
判定模块,用于当由于所述记录模块记录的时间值递增或递减到所述寄存器的溢出值而产生内部中断信号时,判定所述操作系统故障。
9.根据权利要求6所述的操作系统故障检测的装置,其特征在于,所述寄存器具体包括指令寄存器和时钟周期寄存器:
所述指令寄存器具体包括:
设置模块,用于预设指令数的上限阈值和第一初始值,所述第一初始值为将所述指令寄存器的溢出值减去所述指令数的上限阈值得到的差值;
记录模块,用于当在操作系统中开始执行任务时,从所述设置模块预设的第一初始值开始递增记录或从所述设置模块预设的指令数的上限阈值开始递减记录所述任务连续已执行的指令数;
判定模块,用于当由于所述记录模块记录的指令数递增或递减到所述指令寄存器的溢出值而产生内部中断信号时,判定所述操作系统故障;
所述时钟周期寄存器具体包括:
设置模块,用于预设执行时间的上限阈值,并预设第二初始值或第三初始值,所述第二初始值为先将所述执行时间的上限阈值与CPU的时钟周期相除,然后将所述时钟周期寄存器的溢出值减去所述相除结果得到的差值,所述第三初始值为将所述执行时间的上限阈值与所述CPU的时钟周期相除得到的结果;
记录模块,用于当在操作系统中开始执行任务时,从所述时钟周期寄存器的设置模块预设的第二初始值开始递增记录或从所述时钟周期寄存器的设置模块预设的第三初始值开始递减记录所述任务的连续执行时间;
判定模块,用于当由于所述时钟周期寄存器的记录模块记录的时间值递增或递减到所述时钟周期寄存器的溢出值而产生内部中断信号时,判定所述操作系统故障。
10.根据权利要求6所述的操作系统故障检测的装置,其特征在于,所述装置还包括:
复位模块,用于当任务切换时,将所述寄存器的值复位。
CNB2007101773327A 2007-11-14 2007-11-14 操作系统故障检测的方法和装置 Expired - Fee Related CN100557576C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007101773327A CN100557576C (zh) 2007-11-14 2007-11-14 操作系统故障检测的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007101773327A CN100557576C (zh) 2007-11-14 2007-11-14 操作系统故障检测的方法和装置

Publications (2)

Publication Number Publication Date
CN101149702A true CN101149702A (zh) 2008-03-26
CN100557576C CN100557576C (zh) 2009-11-04

Family

ID=39250244

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007101773327A Expired - Fee Related CN100557576C (zh) 2007-11-14 2007-11-14 操作系统故障检测的方法和装置

Country Status (1)

Country Link
CN (1) CN100557576C (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678095A (zh) * 2012-09-03 2014-03-26 鼎桥通信技术有限公司 一种告警检测方法
CN106648916A (zh) * 2016-09-13 2017-05-10 广东欧珀移动通信有限公司 计步器消息的上报方法及装置
CN108733502A (zh) * 2017-04-13 2018-11-02 Tttech 电脑技术股份公司 用于操作系统中的错误识别的方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678095A (zh) * 2012-09-03 2014-03-26 鼎桥通信技术有限公司 一种告警检测方法
CN106648916A (zh) * 2016-09-13 2017-05-10 广东欧珀移动通信有限公司 计步器消息的上报方法及装置
CN106648916B (zh) * 2016-09-13 2020-04-03 Oppo广东移动通信有限公司 计步器消息的上报方法及装置
CN108733502A (zh) * 2017-04-13 2018-11-02 Tttech 电脑技术股份公司 用于操作系统中的错误识别的方法

Also Published As

Publication number Publication date
CN100557576C (zh) 2009-11-04

Similar Documents

Publication Publication Date Title
US20100017583A1 (en) Call Stack Sampling for a Multi-Processor System
CN101976217A (zh) 网络处理器异常检测方法及系统
US8286134B2 (en) Call stack sampling for a multi-processor system
CN100361081C (zh) 处理多线程/多任务/多处理器的方法
KR102028663B1 (ko) 에러 검출 방법 및 장치
CN102761439A (zh) Pon接入系统中基于看门狗的异常检测记录装置及方法
CN102521098B (zh) Cpu死机监控的处理方法和装置
JP4562568B2 (ja) 異常検出プログラムおよび異常検出方法
CN102141947A (zh) 一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法及系统
CN101859268A (zh) 上下文切换采样
CN109165138A (zh) 一种监控设备故障的方法和装置
JPWO2009150815A1 (ja) マルチプロセッサシステム
US20140006870A1 (en) Methods and apparatus to provide failure detection
CN101853191A (zh) 检测操作系统中任务死循环的方法及操作系统
CN101561778B (zh) 一种检测多任务操作系统任务死循环的方法
CN100557576C (zh) 操作系统故障检测的方法和装置
CN102622300B (zh) 多任务系统中死循环或类死循环的检测方法
CN103631695A (zh) 时间监测方法及装置
CN103530197A (zh) 一种检测及解决Linux系统死锁的方法
CN106357757A (zh) 一种监控系统中的被监控装置及监控方法
EP2630577B1 (en) Exception control in a multiprocessor system
CN107066318A (zh) 一种适用于流计算的数据调度方法
JP2006227962A (ja) アプリケーションタスク監視システムおよび方法
CN102043690A (zh) 多核处理器故障处理方法及多核处理器
Fu et al. A case study of mapreduce speculation for failure recovery

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091104

Termination date: 20161114