CN102819466B - 操作系统异常的处理方法及其装置 - Google Patents
操作系统异常的处理方法及其装置 Download PDFInfo
- Publication number
- CN102819466B CN102819466B CN201210223044.1A CN201210223044A CN102819466B CN 102819466 B CN102819466 B CN 102819466B CN 201210223044 A CN201210223044 A CN 201210223044A CN 102819466 B CN102819466 B CN 102819466B
- Authority
- CN
- China
- Prior art keywords
- processing unit
- central processing
- operating system
- core detection
- detection journey
- 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.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种操作系统异常的处理方法及装置。所述方法包括:运行相应的内核检测线程;使每个内核检测线程进入循环调用过程,在每个循环中更新所在的中央处理器的时间计数为当前时间,并采用对应其中一个中央处理器的内核检测线程检测另外一个中央处理器的时间计数,判断其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值;若大于第一设定值,则进行异常处理。通过上述方式,本发明实施例能够检测出操作系统某个或多个中央处理器出现死锁所导致的操作系统异常。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种操作系统异常的处理方法及其装置。
背景技术
目前,Linux操作系统在电信领域得到广泛应用,特别是在电信领域的关键业务中也得到了大量的应用。在这些应用中,用户越来越要求Linux操作系统有很强的故障检测能力以及发生故障后快速恢复业务的能力。当操作系统发生故障且长时间不能恢复业务时,会造成用户经济上的损失,也会降低用户对产品质量的满意度。
Linux操作系统本身带有KDUMP(Kernel Dump,在操作系统发生异常后,将异常的操作系统的内存保存到磁盘的过程)功能,在操作系统内核发生PANIC(指操作系统内核检测到操作系统致命错误后采取的行为)或者OOPS(指操作系统内核检测到异常发生并打印相应的错误日志)时,KDUMP保存操作系统异常时的内存镜像并重启操作系统。由于KDUMP在重启恢复业务时,保存了操作系统的异常内存镜像,所以可用于分析操作系统异常的根源。
在实际应用中,很多Linux操作系统发生异常时,并不会触发KDUMP,比如某个中央处理器(CPU)发生了死锁。
发明内容
本发明实施例提供一种操作系统异常的处理方法及其装置实施例,能够提高操作系统异常的检测成功率。
本发明实施例的一方面是:提供一种操作系统异常的处理方法,所述方法包括:在操作系统管理的每个中央处理器中运行相应的内核检测线程,所述中央处理器的数量为至少两个;使每个所述内核检测线程进入循环调用过程,在每个循环中更新所在的中央处理器的时间计数为当前时间,并采用对应其中一个所述中央处理器的内核检测线程检测另外一个所述中央处理器的时间计数,判断所述其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值;若所述其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值大于第一设定值,则进行异常处理。
本发明实施例另一方面是:提供一种操作系统异常的处理装置,所述装置包括:运行模块,用于在操作系统管理的每个中央处理器中运行相应的内核检测线程,所述中央处理器的数量为至少两个;检测判断模块,用于使每个所述内核检测线程进入循环调用过程,在每个循环中更新所在的中央处理器的时间计数为当前时间,并采用对应其中一个所述中央处理器的内核检测线程检测另外一个所述中央处理器的时间计数,判断所述其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值;第一异常处理模块,用于在所述其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值大于第一设定值时,进行异常处理。
本发明实施例又一方面是:提供一种计算机系统,所述系统包括硬件和运行在硬件之上的操作系统,所述硬件包括存储器和至少两个中央处理器;所述操作系统用于在所述操作系统管理的每个中央处理器中运行相应的内核检测线程,使每个所述内核检测线程进入循环调用过程,在每个循环中更新所在的中央处理器的时间计数为当前时间,并采用对应其中一个所述中央处理器的内核检测线程检测另外一个所述中央处理器的时间计数,判断所述其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值,若所述其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值大于所述第一设定值,则进行异常处理。
上述技术方案,在每个中央处理器中运行相应的内核检测线程;使每个内核检测线程进入循环调用过程,在每个循环中更新所在的中央处理器的时间计数,其中一个中央处理器的内核检测线程检测另外一个中央处理器的时间计数,判断其中一个中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值;若大于第一设定值,则进行异常处理。通过这种一个中央处理器的内核检测线程检测另外一个中央处理器的时间计数的方式,可以检测出操作系统某个或多个中央处理器出现死锁所导致的操作系统异常,提高操作系统异常的检测成功率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一种操作系统异常的处理方法一实施例的流程图;
图2是本发明一种操作系统异常的处理方法另一实施例的流程图;
图3是本发明一种操作系统异常的处理方法又一实施例的流程图;
图4是本发明一种操作系统异常的处理方法又一实施例的流程图;
图5是本发明一种操作系统异常的处理方法又一实施例的流程图;
图6是本发明一种操作系统异常的处理方法又一实施例的流程图;
图7是本发明一种操作系统异常的处理方法又一实施例的流程图;
图8是本发明一种操作系统异常的处理装置一实施例的结构示意图;
图9是本发明一种操作系统异常的处理装置另一实施例的结构示意图;
图10是本发明一种操作系统异常的处理装置又一实施例的结构示意图;
图11是本发明一种操作系统异常的处理装置又一实施例的结构示意图;
图12是本发明一种操作系统异常的处理装置又一实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下面结合附图和实施例对本发明进行详细说明。
参阅图1,图1是本发明一种操作系统异常的处理方法一实施例的流程图,方法包括:
步骤S101:在操作系统管理的每个中央处理器(Central ProcessingUnit,CPU)中运行相应的内核检测线程,中央处理器的数量为至少两个;
操作系统是管理硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统的功能包括管理计算机系统的硬件、软件及数据资源;控制程序运行;为其它应用软件提供支持等。操作系统的型态多样,不同机器安装的操作系统可以从简单到复杂,可以从手机的嵌入式系统到超级电脑的大型操作系统。目前微机上常见的操作系统有DOS、OS/2、UNIX、XENIX、LINUX、Windows、Netware等。
中央处理器是一台计算机的运算核心和控制核心,其功能主要是解释计算机指令以及处理计算机软件中的数据。本发明实施例中,对于一个产品中存在至少两个处理核心的情况,也把一个处理核心视为一个中央处理器。
内核检测线程用于检测操作系统管理的所述内核检测线程所在的中央处理器的运行情况,确认所述内核检测线程所在的中央处理器是否发生了异常。
在本发明实施例中,操作系统管理的中央处理器的数量至少为两个,根据实际应用,操作系统管理的中央处理器的数量可以为两个以上的多个。
步骤S102:使每个内核检测线程进入循环调用过程,在每个循环中更新所在的中央处理器的时间计数为当前时间,并采用对应其中一个中央处理器的内核检测线程检测另外一个中央处理器的时间计数,判断其中一个中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值;
计数是一种最简单基本的运算,时间计数就是对时间实现逻辑运算,以实现计数和控制的功能。当前时间是操作系统的当前时间,对于操作系统管理的每个中央处理器,当前时间都是一样的。第一设定值可以进行配置,例如第一设定值默认为30秒时,比较其中一个中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于30秒,如果大于30秒,进行异常处理,如果小于等于30秒,表示中央处理器运行正常。
使每个所述内核检测线程进入循环调用过程,可以不间断的检测操作系统管理的所述内核检测线程所在的中央处理器是否发生了异常,以便于及时对发生的异常进行处理,并恢复操作系统。
在每个循环中,使每个所述内核检测线程更新所在的中央处理器的时间计数为当前时间,并采用对应其中一个所述中央处理器的内核检测线程检测另外一个所述中央处理器的时间计数,只要有一个中央处理器的内核检测线程没有发生异常,这个没有异常的中央处理器的内核检测线程可以通过检测另外一个甚至多个所述中央处理器的时间计数,并因此可以通过判断所述其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值,从而判断出另外一个甚至多个所述中央处理器是否发生了异常。
步骤S 103:若其中一个中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值大于第一设定值,则进行异常处理。
若其中一个中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值大于第一设定值,表明在一个周期内甚至多个周期内另外一个甚至多个所述中央处理器的时间计数没有得到更新,因而另外一个甚至多个所述中央处理器发生了异常,进行异常处理,以便于恢复操作系统。
进行异常处理的步骤具体为:调用PANIC函数,触发KDUMP并重启所述操作系统;其中,PANIC函数是操作系统内核检测到操作系统处于异常状态后采取行为的函数,KDUMP是在操作系统发生异常后,将异常的操作系统的内存保存到磁盘的过程。
总之,通过这种一个中央处理器的内核检测线程检测另外一个中央处理器的时间计数的方式,可以检测出操作系统某个或多个中央处理器出现死锁所导致的操作系统异常,避免中央处理器在出问题时不能自己检测自己的情况发生。
参阅图2,图2是本发明实施例一种操作系统异常的处理方法另一实施例的流程图,所述方法包括:
步骤S201:在操作系统管理的每个中央处理器(Central ProcessingUnit,CPU)中运行相应的内核检测线程,中央处理器的数量为至少两个;
步骤S201的详细描述请参见图1中的步骤S101以及相应的文字说明。
步骤S202:使每个内核检测线程进入循环调用过程,在每个循环中更新所在的中央处理器的时间计数为当前时间(步骤S202a),并采用对应其中一个中央处理器的内核检测线程检测另外一个中央处理器的时间计数,判断其中一个中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值;
其中,在步骤S202中,在执行所述采用对应其中一个所述中央处理器的内核检测线程检测另外一个所述中央处理器的时间计数,判断所述其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值时,可以执行步骤S202b:
步骤S202b:采用对应所述第n个中央处理器的内核检测线程检测第n+1个中央处理器的时间计数,判断对应第n个中央处理器的当前时间与第n+1个中央处理器的时间计数之间的差值是否大于第一设定值,其中,n是自然数。
步骤S202b采用对应所述第n个中央处理器的内核检测线程检测第n+1个中央处理器的时间计数,可以依次检测中央处理器是否发生了异常,避免了检测的无序性和盲目性。
其中,步骤S202b包括步骤S202b1和步骤S202b2,具体内容如下:
步骤S202b1:判断所述第n个中央处理器是否为本次循环中的最后一个中央处理器;如果不是最后一个中央处理器,进入步骤S202b2,如果是最后一个中央处理器,进入步骤S202b3。
步骤S202b2:若所述第n个中央处理器不是本次循环中的最后一个中央处理器,则进行所述采用对应第n个中央处理器的内核检测线程检测第n+1个中央处理器的时间计数,判断对应第n个中央处理器的当前时间与第n+1个中央处理器的时间计数之间的差值是否大于第一设定值;
步骤S202b3:若所述第n个中央处理器是本次循环中的最后一个中央处理器,则采用对应所述第n个中央处理器的内核检测线程检测第一个中央处理器的时间计数,判断对应第n个中央处理器的当前时间与第一个中央处理器的时间计数之间的差值是否大于第一设定值。
步骤S203:若其中一个中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值大于第一设定值,则进行异常处理。
步骤S203与图1中的步骤S103相同,详细描述请参见图1中的步骤S103的文字说明。
进行异常处理的步骤具体为:调用PANIC函数,触发KDUMP并重启所述操作系统;其中,PANIC函数是操作系统内核检测到操作系统处于异常状态后采取行为的函数,KDUMP是在操作系统发生异常后,将异常的操作系统的内存保存到磁盘的过程。
本发明实施例通过判断第n个中央处理器是否为本次循环中的最后一个中央处理器,采用依次轮询的检测机制,保证操作系统所管理的每个中央处理器都被检测到,而不会出现漏检,可以及时的发现发生了异常的中央处理器。
参阅图3,图3是本发明实施例一种操作系统异常的处理方法另一实施例的流程图,所述方法包括:
步骤S301:将检测操作系统异常的内核模块加载到操作系统中,并首次设置每个中央处理器的时间计数为当前时间,以及在每个中央处理器中创建内核检测线程;
内核模块是一些可以让操作系统内核在需要时载入和执行的代码,它们扩展了操作系统内核的功能却不需要重新启动操作系统。如果没有内核模块,必须一次又一次重新编译生成单内核操作系统的内核镜像来加入新的功能。
将检测操作系统异常的内核模块加载到操作系统中,需要对内核模块进行初始化,初始化的过程是:首次设置每个中央处理器的时间计数为当前时间,以及在每个中央处理器中创建内核检测线程。
需要说明的是,通过加载内核模块的方式,可以提升操作系统对于多种异常的检测能力。
步骤S302:使每个内核检测线程在所在的中央处理器的软中断中注册一个定时器;
软中断是利用硬件中断的概念,用软件方式实现的中断,也就是程序运行时其他程序对它的中断,从而实现宏观上的异步执行效果。
在所在的中央处理器的软中断中注册一个定时器,可以防止在所有的内核检测线程停止工作时,能够通过任何一个中央处理器的软中断来检测异常,并处理异常,只要有一个中央处理器的软中断运行正常,就可以检测出操作系统的异常状况。
步骤S303:在操作系统管理的每个中央处理器中运行相应的内核检测线程,中央处理器的数量为至少两个;
步骤S304:使每个内核检测线程进入循环调用过程,在每个循环中,包括步骤S304a、步骤S304b、步骤S304c以及步骤S304d。步骤S304a包括:步骤S304a1、步骤S304a2以及步骤S304a3;步骤S304b包括:步骤S304b1和步骤S304b2;步骤S304c包括:步骤S304c1、步骤S304c2、步骤S304c3以及步骤S304c4;步骤S304d包括:步骤S304d1和步骤S304d2。
其中,步骤S304a1首先运行,步骤S304b、步骤S304c以及步骤S304d在步骤S304a1的后面运行,步骤S304b、步骤S304c以及步骤S304d运行完毕后,进入步骤S304a2以及步骤S304a3;步骤S304b、步骤S304c以及步骤S304d没有先后顺序,可以并行一起运行,也可以先后顺序运行,在一个周期内运行完毕即可。
具体步骤包括:
在步骤S304a中包括:
步骤S304a1:使每个内核检测线程在进入循环调用过程后的每个循环之前,首先更新所在的中央处理器的软中断中已经注册的定时器的初始值;
步骤S304a1在每个循环之前执行,首先更新所在的中央处理器的软中断中已经注册的定时器的初始值,在定时器初始值的时间长度结束后,将启动异常处理的程序,如果使该定时器初始值在每个循环之前得到更新,表明该定时器所在的中央处理器的内核检测线程运行正常,如果该定时器初始值在某个循环之前没有得到更新,表明该定时器所在的中央处理器的内核检测线程停止了运行,发生了异常,因而将启动异常处理的程序。
在步骤S304b中包括:
步骤S304b1:更新所在的中央处理器的时间计数为当前时间,并采用对应其中一个中央处理器的内核检测线程检测另外一个中央处理器的时间计数,判断其中一个中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值;
步骤S304b2:若其中一个中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值大于第一设定值,则进行异常处理;
有关步骤S304b的具体执行情况,请参见图1和相关的文字描述,在此不再进行赘叙。
在步骤S304c中包括:
步骤S304c1:向所在的中央处理器申请进行异常处理所需的待用内存;
向所在的中央处理器申请进行异常处理所需的待用内存,是为了检测内核检测线程所在的中央处理器的内存使用是否正常。如果所在的中央处理器的内存使用正常,申请会获得成功,如果所在的中央处理器的内存使用不正常,出现内存严重不足,申请不会获得成功。
步骤S304c2:判断异常处理所需的待用内存申请是否在定时器的初始值的定时时间内获得成功;如果该申请没有获得成功,进入步骤S304c3,如果该申请获得成功,进入步骤S304c4。
异常处理所需的待用内存申请是否获得成功的时间长度限制,是所在的中央处理器的软中断中的定时器的初始值的定时时间。
步骤S304c3:若异常处理所需的待用内存申请在定时器的初始值的定时时间内没有获得成功,则进行异常处理;
在定时器的初始值的定时时间内,该申请没有获得成功,表明所在的中央处理器的内存使用不正常,出现内存严重不足,检测线程会长时间阻塞在内存申请的调用中,导致检测线程不会在预期的时间对所在的中央处理器的定时器的初始值进行更新,表明该定时器所在的中央处理器的内核检测线程停止了运行,发生了异常,因而将启动异常处理的程序。
步骤S304c4:若异常处理所需的待用内存申请在定时器的初始值的定时时间内获得成功,则释放异常处理所需的待用内存。
在定时器初始值的定时时间内,该申请获得成功,表明所在的中央处理器的内存使用正常,因此释放所述异常处理所需的待用内存。
在步骤S304d中包括:
步骤S304d1:判断内核检测线程所在的中央处理器中除内核检测线程外的其他线程中是否存在处于不可中断睡眠状态的线程;
长时间处于不可中断睡眠状态(D状态)的线程,是操作系统异常的一种表现,表明有内核资源被占用后一直没有得到释放,有必要及时发现这种异常并进行异常处理,以便于恢复操作系统。
进一步地,判断内核检测线程所在的中央处理器中除内核检测线程外的其他线程中是否存在处于不可中断睡眠状态的线程的具体步骤包括:
a.判断内核检测线程所在的中央处理器的当前时间与每个内核检测线程所在的中央处理器中除内核检测线程外的其他线程的上一次运行的时间之间的差值是否大于第二设定值;
当操作系统的线程在运行结束进入睡眠状态后,内核会在该线程的任务结构(task struct)中记录该线程上一次运行的时间。内核检测线程所在的中央处理器的当前时间与每个内核检测线程所在的中央处理器中除内核检测线程外的其他线程的上一次运行的时间之间的差值是该线程处于不可中断睡眠状态的时间。
b.若大于第二设定值,则判断为存在处于不可中断睡眠状态的线程。
第二设定值可以进行配置,例如第二设定值默认为150秒时,比较内核检测线程所在的中央处理器的当前时间与每个内核检测线程所在的中央处理器中除内核检测线程外的其他线程的上一次运行的时间之间的差值是否大于150秒,如果大于150秒,判断为存在处于不可中断睡眠状态的线程,如果小于等于150秒,判断为没有处于不可中断睡眠状态的线程。
内核检测线程所在的中央处理器的当前时间与每个内核检测线程所在的中央处理器中除内核检测线程外的其他线程的上一次运行的时间之间的差值即该线程处于不可中断睡眠状态的时间大于第二设定值,表明该线程为处于不可中断睡眠状态的线程,也就是内核检测线程所在的中央处理器存在处于不可中断睡眠状态的线程。
步骤S304d2:若存在处于不可中断睡眠状态的线程,则进行异常处理。
内核检测线程所在的中央处理器中除内核检测线程外的其他线程中,有长时间处于不可中断睡眠状态(D状态)的线程,是操作系统异常的一种表现,需要进行异常处理,以便于恢复操作系统。
在步骤S304a中包括:
步骤S304a2:在当前循环结束时,使所在的中央处理器的软中断判断定时器的初始值的定时时间是否结束;
在定时器的初始值的定时时间内,当执行完步骤S304b、步骤S304c以及步骤S304d后,一个循环结束,此时若所在的中央处理器的内核检测线程正常工作,应该返回步骤S304a1,更新所述定时器的初始值。
步骤S304a3:若定时器的初始值的定时时间结束,则进行异常处理。
若定时器的初始值的定时时间结束,表明所在的中央处理器的内核检测线程停止工作,发生了异常,需要进行异常处理,以便于恢复操作系统。
进行异常处理的步骤具体为:调用PANIC函数,触发KDUMP并重启所述操作系统;其中,PANIC函数是操作系统内核检测到操作系统处于异常状态后采取行为的函数,KDUMP是在操作系统发生异常后,将异常的操作系统的内存保存到磁盘的过程。
需要说明的是,在一个周期内将步骤S304a1首先运行后,可以根据实际需要,将步骤S304b、步骤S304c以及步骤S304d按照客户的要求并行运行,或者确定运行的顺序。在一个周期内运行完毕步骤S304a1、步骤S304b、步骤S304c、步骤S304d、步骤S304a2以及步骤S304a3后,再返回步骤S304a1、步骤S304b、步骤S304c、步骤S304d、步骤S304a2以及步骤S304a3,每次循环开始都从S304a1开始。
综上所述,本发明实施例加载内核模块的方式,提升系统对于多种异常的检查能力,当发现异常时,获取用于异常原因分析的内存镜像,并通过重启,恢复操作系统。该方法具有平台无关的特点,可在操作系统多种硬件架构下使用;同时具有易于部署实施的特点,可在线的部署实施。
本发明实施例轮询检测中央处理器的方式,可以检测某个或多个中央处理器出现的中央处理器死锁,包括内核中断态和非中断态的死锁;申请内存的方式,可以检测操作系统内存严重不足导致的操作系统假死;判断不可中断睡眠状态的线程,可以检测操作系统由于长时间处于不可中断睡眠状态的线程而发生的异常;软中断定时器可以防止所有的内核检测线程停止工作时导致的异常。
当然,也可以根据实际情况减少图3中相应步骤的运行。下面列举实施例进行说明。
参阅图4,图4是本发明一种操作系统异常的处理方法又一实施例的流程图,本实施例的方法流程与图3的流程基本相同,不同之处在于:图4减少了图3中的步骤S304d,图4中的步骤S404a同图3中的步骤S304a,图4中的步骤S404b同图3中的步骤S304b,图4中的步骤S404c同图3中的步骤S304c,图4中其它没有标号的步骤与图3中对应步骤相同,具体内容也请参见图3中对应步骤的文字说明,在此不再进行赘叙。
参阅图5,图5是本发明一种操作系统异常的处理方法又一实施例的流程图,本实施例的方法流程与图3的流程基本相同,不同之处在于:图5减少了图3中的步骤S301和步骤S304d,图5中的步骤S504a同图3中的步骤S304a,图5中的步骤S504b同图3中的步骤S304b,图5中的步骤S504c同图3中的步骤S304c,图5中其它没有标号的步骤与图3中对应步骤相同,具体内容也请参见图3中对应步骤的文字说明,在此不再进行赘叙。
参阅图6,图6是本发明一种操作系统异常的处理方法又一实施例的流程图,本实施例的方法流程与图3的流程基本相同,不同之处在于:图6减少了图3中的步骤S304c,图6中的步骤S604a同图3中的步骤S304a,图6中的步骤S604b同图3中的步骤S304b,图6中的步骤S604d同图3中的步骤S304d,图6中其它没有标号的步骤与图3中对应步骤相同,具体内容也请参见图3中对应步骤的文字说明,在此不再进行赘叙。
参阅图7,图7是本发明一种操作系统异常的处理方法又一实施例的流程图,本实施例的方法流程与图3的流程基本相同,不同之处在于:图7减少了图3中的步骤S301和步骤S304c,图7中的步骤S704a同图3中的步骤S304a,图7中的步骤S704b同图3中的步骤S304b,图7中的步骤S704d同图3中的步骤S304d,图7中其它7没有标号的步骤与图3中对应步骤相同,具体内容也请参见图3中对应步骤的文字说明,在此不再进行赘叙。
针对可以根据实际情况减少相应步骤的运行,上述列举的实施例只是其中的几种情况,具体的其它实施例,在此不再一一赘叙。
参阅图8,图8是本发明一种操作系统异常的处理装置一实施例的结构示意图,该装置包括:运行模块201、检测判断模块202以及第一异常处理模块203。
运行模块201用于在操作系统管理的每个中央处理器中运行相应的内核检测线程,中央处理器的数量为至少两个;
通过运行内核检测线程,可以检测操作系统管理的所述内核检测线程所在的中央处理器的运行情况,确认所述内核检测线程所在的中央处理器是否发生了异常。
检测判断模块202用于使每个内核检测线程进入循环调用过程,在每个循环中更新所在的中央处理器的时间计数为当前时间,并采用对应其中一个中央处理器的内核检测线程检测另外一个中央处理器的时间计数,判断其中一个中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值;
通过使每个内核检测线程进入循环调用过程,能够不间断的检测操作系统管理的内核检测线程所在的中央处理器是否发生了异常,以便于及时对发生的异常进行处理,并恢复操作系统。
第一异常处理模块203用于在其中一个中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值大于第一设定值时,则进行异常处理。
进一步,第一异常处理模块203具体用于调用PANIC函数,触发KDUMP并重启所述操作系统;其中,PANIC函数是操作系统内核检测到操作系统处于异常状态后采取行为的函数,KDUMP(Kernel Dump)是在操作系统发生异常后,将异常的操作系统的内存保存到磁盘的过程。
总之,一个中央处理器的内核检测线程检测另外一个中央处理器的时间计数的检测方式,可以检测出操作系统某个或多个中央处理器出现死锁所导致的操作系统异常。
参阅图9,图9是本发明一种操作系统异常的处理装置另一实施例的结构示意图,该装置包括:运行模块301、检测判断模块302以及第一异常处理模块303。
运行模块301用于在操作系统管理的每个中央处理器中运行相应的内核检测线程,中央处理器的数量为至少两个;
检测判断模块302用于使每个内核检测线程进入循环调用过程,在每个循环中更新所在的中央处理器的时间计数为当前时间(更新单元3021),并采用对应其中一个中央处理器的内核检测线程检测另外一个中央处理器的时间计数,判断其中一个中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值;
检测判断模块302包括检测判断单元3022,检测判断单元3022用于采用对应第n个中央处理器的内核检测线程检测第n+1个中央处理器的时间计数,判断对应第n个中央处理器的当前时间与第n+1个中央处理器的时间计数之间的差值是否大于第一设定值,其中,n是自然数。
通过上述方式,可以依次检测中央处理器是否发生了异常,避免了检测的无序性和盲目性。
进一步地,检测判断单元3022包括:第一判断电路30221和第二判断电路30222。
第一判断电路30221用于判断第n个中央处理器是否为本次循环中的最后一个中央处理器;
第二判断电路30222用于在第n个中央处理器不是本次循环中的最后一个中央处理器时,进行采用对应第n个中央处理器的内核检测线程检测第n+1个中央处理器的时间计数,判断对应第n个中央处理器的当前时间与第n+1个中央处理器的时间计数之间的差值是否大于第一设定值;在第n个中央处理器是本次循环中的最后一个中央处理器时,采用对应第n个中央处理器的内核检测线程检测第一个中央处理器的时间计数,判断对应第n个中央处理器的当前时间与第一个中央处理器的时间计数之间的差值是否大于第一设定值。
第一异常处理模块303用于在其中一个中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值大于第一设定值时,则进行异常处理。
进一步,第一异常处理模块303具体用于调用PANIC函数,触发KDUMP并重启所述操作系统;其中,PANIC函数是操作系统内核检测到操作系统处于异常状态后采取行为的函数,KDUMP(Kernel Dump)是在操作系统发生异常后,将异常的操作系统的内存保存到磁盘的过程。
本发明实施例采用第n个中央处理器的内核检测线程检测第n+1个中央处理器的时间计数,最后一个中央处理器的内核检测线程检测第一个中央处理器的时间计数,这种依次轮询的检测机制,可以保证操作系统所管理的每个中央处理器都得到检测,而不会出现漏检,可以及时的发现发生了异常的中央处理器。
参阅图10,图10是本发明实施例一种操作系统异常的处理装置另一实施例的结构示意图,该装置包括:加载模块401、注册模块402、运行模块403、更新模块404、检测判断模块405、第一异常处理模块406、申请模块407、第二判断模块408、第三异常处理模块409、释放模块410、第三判断模块411、第四异常处理模块412、第一判断模块413以及第二异常处理模块414。
加载模块401用于将检测操作系统异常的内核模块加载到操作系统中,并首次设置每个中央处理器的时间计数为当前时间,以及在每个中央处理器中创建内核检测线程;
将检测操作系统异常的内核模块加载到操作系统中,需要对内核模块进行初始化,初始化的过程是:首次设置每个中央处理器的时间计数为当前时间,以及在每个中央处理器中创建内核检测线程。
通过加载内核模块的方式,可以提升操作系统对于多种异常的检测能力。
注册模块402用于使每个内核检测线程在所在的中央处理器的软中断中注册一个定时器;
在所在的中央处理器的软中断中注册一个定时器,可以防止在所有的内核检测线程停止工作时,能够通过任何一个中央处理器的软中断来检测异常,并处理异常,只要有一个中央处理器的软中断运行正常,就可以检测出操作系统的异常状况。
运行模块403用于在操作系统管理的每个中央处理器中运行相应的内核检测线程,中央处理器的数量为至少两个;
更新模块404用于使每个内核检测线程在进入循环调用过程后的每个循环之前,首先更新所在的中央处理器的软中断中已经注册的定时器的初始值;
首先更新所在的中央处理器的软中断中已经注册的定时器的初始值,如果使该定时器初始值在每个循环之前得到更新,表明该定时器所在的中央处理器的内核检测线程运行正常,如果该定时器初始值在某个循环之前没有得到更新,表明该定时器所在的中央处理器的内核检测线程停止了运行,发生了异常,因而将启动异常处理的程序。
检测判断模块405用于使每个内核检测线程进入循环调用过程,在每个循环中更新所在的中央处理器的时间计数为当前时间,并采用对应其中一个中央处理器的内核检测线程检测另外一个中央处理器的时间计数,判断其中一个中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值;
第一异常处理模块406用于在其中一个中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值大于第一设定值时,进行异常处理。
有关检测判断模块405和第一异常处理模块406的具体情况可以参考图8以及相关的文字说明部分中的检测判断模块202和第一异常处理模块203,在此不再进行赘叙。
申请模块407用于向所在的中央处理器申请进行异常处理所需的待用内存;
如果所在的中央处理器的内存使用正常,申请会获得成功,如果所在的中央处理器的内存使用不正常,出现内存严重不足,申请不会获得成功。
第二判断模块408用于判断异常处理所需的待用内存申请是否在定时器的初始值的定时时间内获得成功;
异常处理所需的待用内存申请是否获得成功的时间长度限制是所在的中央处理器的软中断中的定时器的初始值的定时时间。
第三异常处理模块409用于在异常处理所需的待用内存申请在定时器的初始值的定时时间内没有获得成功时,进行异常处理;
在定时器的初始值的定时时间内,该申请没有获得成功,表明所在的中央处理器的内存使用不正常,出现内存严重不足,检测线程会长时间阻塞在内存申请的调用中,导致在预期的时间,所在的中央处理器的定时器的初始值不会得到更新,因而发生了异常,将启动异常处理的程序。
进一步地,第三异常处理模块409具体用于调用PANIC函数,触发KDUMP并重启所述操作系统;其中,PANIC函数是操作系统内核检测到操作系统处于异常状态后采取行为的函数,KDUMP是在操作系统发生异常后,将异常的操作系统的内存保存到磁盘的过程。
释放模块410用于在异常处理所需的待用内存申请在定时器的初始值的定时时间内获得成功,释放异常处理所需的待用内存。
在定时器初始值的定时时间内,该申请获得成功,表明所在的中央处理器的内存使用正常,因此释放所述异常处理所需的待用内存。
第三判断模块411用于判断内核检测线程所在的中央处理器中除内核检测线程外的其他线程中是否存在处于不可中断睡眠状态的线程;
长时间处于不可中断睡眠状态(D状态)的线程,表明有内核资源被占用后一直没有得到释放,需要及时发现这种异常并进行异常处理,以便于恢复操作系统。
进一步地,第三判断模块411包括判断单元和输出单元。
判断单元用于判断内核检测线程所在的中央处理器的当前时间与每个内核检测线程所在的中央处理器中除内核检测线程外的其他线程的上一次运行的时间之间的差值是否大于第二设定值;
内核检测线程所在的中央处理器的当前时间与每个内核检测线程所在的中央处理器中除内核检测线程外的其他线程的上一次运行的时间之间的差值是该线程处于不可中断睡眠状态的时间。
输出单元用于在大于第二设定值时,判断为存在处于不可中断睡眠状态的线程。
该线程处于不可中断睡眠状态的时间大于第二设定值,表明该线程为处于不可中断睡眠状态的线程,也就是内核检测线程所在的中央处理器存在处于不可中断睡眠状态的线程。
第四异常处理模块412用于在存在处于不可中断睡眠状态的线程时,进行异常处理。
进一步地,第四异常处理模块412具体用于调用PANIC函数,触发KDUMP并重启所述操作系统;其中,PANIC函数是操作系统内核检测到操作系统处于异常状态后采取行为的函数,KDUMP是在操作系统发生异常后,将异常的操作系统的内存保存到磁盘的过程。
第一判断模块413用于在当前循环结束时,使所在的中央处理器的软中断判断定时器的初始值的定时时间是否结束;
在定时器的初始值的定时时间内,一个循环结束后,此时若所在的中央处理器的内核检测线程正常工作,应该返回更新模块404,更新定时器的初始值。
第二异常处理模块414用于在定时器的初始值的定时时间结束时,进行所述异常处理。
定时器的初始值的定时时间结束,表明所在的中央处理器的内核检测线程停止工作,发生了异常,需要进行异常处理,以便于恢复操作系统。
进一步地,第二异常处理模块414具体用于调用PANIC函数,触发KDUMP并重启所述操作系统;其中,PANIC函数是操作系统内核检测到操作系统处于异常状态后采取行为的函数,KDUMP是在操作系统发生异常后,将异常的操作系统的内存保存到磁盘的过程。
本发明实施例加载内核模块的方式,提升系统对于多种异常的检查能力;轮询检测中央处理器的方式,可以检测某个或多个中央处理器出现的死锁;申请内存的方式,可以检测操作系统内存严重不足导致的假死;判断不可中断睡眠状态的线程,可以检测由于长时间处于不可中断睡眠状态的线程而发生的异常;软中断定时器可以防止所有的内核检测线程停止工作时导致的异常。当发现异常时,获取用于异常原因分析的内存镜像,并通过重启,恢复操作系统。
在实际应用中,可以减少图10中的一些模块,下面列举实施例进行说明。
参阅图11,图11是本申请一种操作系统异常的处理装置又一实施例的结构示意图,本实施例与图10的实施例不同之处在于:本实施例没有图10实施例的第三判断模块411和第四异常处理模块412,图11中其它没有标号的模块和图10中对应的模块相同,具体内容请参见图10及相应实施例的描述,在此不再一一赘叙。
参阅图12,图12是本申请一种操作系统异常的处理装置又一实施例的结构示意图,本实施例与图10的实施例不同之处在于:本实施例没有图10实施例的申请模块407、第二判断模块408、第三异常处理模块409以及释放模块410,图12中其它没有标号的模块和图10中对应的模块相同,具体内容请参见图10及相应实施例的描述,在此不再一一赘叙。
当然,在实际应用中,减少图10中的一些模块还有其它实施例,在此不再进行一一赘叙。
本申请还提供了一种计算机系统,该系统包括硬件和运行在硬件之上的操作系统,硬件包括存储器和至少两个中央处理器;操作系统用于在操作系统管理的每个中央处理器中运行相应的内核检测线程,使每个内核检测线程进入循环调用过程,在每个循环中更新所在的中央处理器的时间计数为当前时间,并采用对应其中一个所述中央处理器的内核检测线程检测另外一个所述中央处理器的时间计数,判断其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值,若其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值大于第一设定值,则进行异常处理。
本发明方案可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序单元。一般地,程序单元包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明方案,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序单元可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (21)
1.一种操作系统异常的处理方法,其特征在于,所述方法包括:
在操作系统管理的每个中央处理器中运行相应的内核检测线程,所述中央处理器的数量为至少两个;
使每个所述内核检测线程进入循环调用过程,在每个循环中更新所在的中央处理器的时间计数为当前时间,并采用对应其中一个所述中央处理器的内核检测线程检测另外一个所述中央处理器的时间计数,判断所述其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值;
若所述其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值大于所述第一设定值,则进行异常处理。
2.根据权利要求1所述的方法,其特征在于:
所述采用对应其中一个中央处理器的内核检测线程检测另外一个所述中央处理器的时间计数,判断所述其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值的步骤具体包括:
采用对应第n个中央处理器的内核检测线程检测第n+1个中央处理器的时间计数,判断对应第n个中央处理器的当前时间与第n+1个中央处理器的时间计数之间的差值是否大于第一设定值,其中,n是自然数。
3.根据权利要求2所述的方法,其特征在于:
所述采用对应第n个中央处理器的内核检测线程检测第n+1个中央处理器的时间计数,判断对应第n个中央处理器的当前时间与第n+1个中央处理器的时间计数之间的差值是否大于第一设定值的步骤具体包括:
判断所述第n个中央处理器是否为本次循环中的最后一个中央处理器;
若所述第n个中央处理器不是本次循环中的最后一个中央处理器,则进行所述采用对应第n个中央处理器的内核检测线程检测第n+1个中央处理器的时间计数,判断对应第n个中央处理器的当前时间与第n+1个中央处理器的时间计数之间的差值是否大于第一设定值的步骤;若所述第n个中央处理器是本次循环中的最后一个中央处理器,则采用对应所述第n个中央处理器的内核检测线程检测第一个中央处理器的时间计数,判断对应第n个中央处理器的当前时间与第一个中央处理器的时间计数之间的差值是否大于第一设定值。
4.根据权利要求1所述的方法,其特征在于:在所述在操作系统管理的每个中央处理器中运行相应的内核检测线程的步骤之前,所述方法还包括:
使每个所述内核检测线程在所在的中央处理器的软中断中注册一个定时器。
5.根据权利要求4所述的方法,其特征在于,在所述在操作系统管理的每个中央处理器中运行相应的内核检测线程的步骤之后,所述方法还包括:
使每个所述内核检测线程在进入循环调用过程后的每个循环之前,首先更新所在的中央处理器的软中断中已经注册的定时器的初始值;
在当前循环结束时,使所述所在的中央处理器的软中断判断所述定时器的初始值的定时时间是否结束;
若所述定时器的初始值的定时时间结束,则进行所述异常处理。
6.根据权利要求5所述的方法,其特征在于,在所述使每个所述内核检测线程首先更新所在的中央处理器的软中断中已经注册的定时器的初始值的步骤之后,所述方法还包括:
向所在的中央处理器申请进行所述异常处理所需的待用内存;
判断所述异常处理所需的待用内存申请是否在所述定时器的初始值的定时时间内获得成功;
若所述异常处理所需的待用内存申请在所述定时器的初始值的定时时间内没有获得成功,则进行所述异常处理,若所述异常处理所需的待用内存申请在所述定时器的初始值的定时时间内获得成功,则释放所述异常处理所需的待用内存。
7.根据权利要求5所述的方法,其特征在于,在使每个所述内核检测线程首先更新所在的中央处理器的软中断中已经注册的定时器的初始值的步骤之后,所述方法还包括:
判断所述内核检测线程所在的中央处理器中除内核检测线程外的其他线程中是否存在处于不可中断睡眠状态的线程;
若存在所述处于不可中断睡眠状态的线程,则进行所述异常处理。
8.根据权利要求7所述的方法,其特征在于,所述判断内核检测线程所在的中央处理器中除内核检测线程外的其他线程中是否存在处于不可中断睡眠状态的线程的步骤具体包括:
判断所述内核检测线程所在的中央处理器的当前时间与每个所述内核检测线程所在的中央处理器中除内核检测线程外的其他线程的上一次运行的时间之间的差值是否大于第二设定值;
若大于所述第二设定值,则确定存在所述处于不可中断睡眠状态的线程。
9.根据权利要求1至8任一项所述的方法,其特征在于:
所述进行异常处理的步骤具体为:调用PANIC函数,触发KDUMP并重启所述操作系统;
其中,定义PANIC函数是所述操作系统内核检测到所述操作系统处于异常状态后采取行为的函数,定义KDUMP是在所述操作系统发生异常后,将所述异常的操作系统的内存保存到磁盘的过程。
10.根据权利要求1至8任一项所述的方法,其特征在于:
在所述操作系统管理的每个中央处理器中运行相应的内核检测线程的步骤之前,包括:将检测操作系统异常的内核模块加载到所述操作系统中,并首次设置每个所述中央处理器的时间计数为当前时间,以及在每个所述中央处理器中创建内核检测线程。
11.一种操作系统异常的处理装置,其特征在于,所述装置包括:
运行模块,用于在操作系统管理的每个中央处理器中运行相应的内核检测线程,所述中央处理器的数量为至少两个;
检测判断模块,用于使每个所述内核检测线程进入循环调用过程,在每个循环中更新所在的中央处理器的时间计数为当前时间,并采用对应其中一个所述中央处理器的内核检测线程检测另外一个所述中央处理器的时间计数,判断所述其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值;
第一异常处理模块,用于在所述其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值大于所述第一设定值时,则进行异常处理。
12.根据权利要求11所述的装置,其特征在于,所述检测判断模块包括检测判断单元,所述检测判断单元用于采用对应第n个中央处理器的内核检测线程检测第n+1个中央处理器的时间计数,判断对应第n个中央处理器的当前时间与第n+1个中央处理器的时间计数之间的差值是否大于第一设定值,其中,n是自然数。
13.根据权利要求12所述的装置,其特征在于,所述检测判断单元包括:
第一判断电路,用于判断所述第n个中央处理器是否为本次循环中的最后一个中央处理器;
第二判断电路,用于在所述第n个中央处理器不是本次循环中的最后一个中央处理器时,进行所述采用对应第n个中央处理器的内核检测线程检测第n+1个中央处理器的时间计数,判断对应第n个中央处理器的当前时间与第n+1个中央处理器的时间计数之间的差值是否大于第一设定值的步骤;在所述第n个中央处理器是本次循环中的最后一个中央处理器时,采用对应所述第n个中央处理器的内核检测线程检测第一个中央处理器的时间计数,判断对应第n个中央处理器的当前时间与第一个中央处理器的时间计数之间的差值是否大于第一设定值。
14.根据权利要求11所述的装置,其特征在于,所述装置还包括注册模块,所述注册模块用于使每个所述内核检测线程在所在的中央处理器的软中断中注册一个定时器。
15.根据权利要求14所述的装置,其特征在于,所述装置还包括:
更新模块,用于使每个所述内核检测线程在进入循环调用过程后的每个循环之前,首先更新所在的中央处理器的软中断中已经注册的定时器的初始值;
第一判断模块,用于在当前循环结束时,使所述所在的中央处理器的软中断判断所述定时器的初始值的定时时间是否结束;
第二异常处理模块,用于在所述定时器的初始值的定时时间结束时,进行所述异常处理。
16.根据权利要求15所述的装置,其特征在于,所述装置还包括:
申请模块,用于向所在的中央处理器申请进行所述异常处理所需的待用内存;
第二判断模块,用于判断所述异常处理所需的待用内存申请是否在所述定时器的初始值的定时时间内获得成功;
第三异常处理模块,用于在所述异常处理所需的待用内存申请在所述定时器的初始值的定时时间内没有获得成功时,进行所述异常处理;
释放模块,用于在所述异常处理所需的待用内存申请在所述定时器的初始值的定时时间内获得成功时,释放所述异常处理所需的待用内存。
17.根据权利要求15所述的装置,其特征在于,所述装置还包括:
第三判断模块,用于判断所述内核检测线程所在的中央处理器中除内核检测线程外的其他线程中是否存在处于不可中断睡眠状态的线程;
第四异常处理模块,用于在存在处于不可中断睡眠状态的线程时,进行所述异常处理。
18.根据权利要求17所述的装置,其特征在于,所述第三判断模块包括:
判断单元,用于判断所述内核检测线程所在的中央处理器的当前时间与每个所述内核检测线程所在的中央处理器中除内核检测线程外的其他线程的上一次运行的时间之间的差值是否大于第二设定值;
输出单元,用于在大于第二设定值时,确定存在处于不可中断睡眠状态的线程。
19.根据权利要求11-18任一项所述的装置,其特征在于,所述异常处理具体为:调用PANIC函数,触发KDUMP并重启所述操作系统;其中,定义PANIC函数是所述操作系统内核检测到所述操作系统处于异常状态后采取行为的函数,定义KDUMP是在所述操作系统发生异常后,将所述异常的操作系统的内存保存到磁盘的过程。
20.根据权利要求11-18任一项所述的装置,其特征在于,所述装置还包括加载模块,所述加载模块用于将检测操作系统异常的内核模块加载到所述操作系统中,并首次设置每个所述中央处理器的时间计数为当前时间,以及在每个所述中央处理器中创建内核检测线程。
21.一种计算机系统,其特征在于:
所述系统包括硬件和运行在硬件之上的操作系统,所述硬件包括存储器和至少两个中央处理器;
所述操作系统用于在所述操作系统管理的每个中央处理器中运行相应的内核检测线程,使每个所述内核检测线程进入循环调用过程,在每个循环中更新所在的中央处理器的时间计数为当前时间,并采用对应其中一个所述中央处理器的内核检测线程检测另外一个所述中央处理器的时间计数,判断所述其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值是否大于第一设定值,若所述其中一个所述中央处理器的当前时间与另外一个中央处理器的时间计数之间的差值大于所述第一设定值,则进行异常处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210223044.1A CN102819466B (zh) | 2012-06-29 | 2012-06-29 | 操作系统异常的处理方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210223044.1A CN102819466B (zh) | 2012-06-29 | 2012-06-29 | 操作系统异常的处理方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102819466A CN102819466A (zh) | 2012-12-12 |
CN102819466B true CN102819466B (zh) | 2015-08-19 |
Family
ID=47303590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210223044.1A Active CN102819466B (zh) | 2012-06-29 | 2012-06-29 | 操作系统异常的处理方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102819466B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902423A (zh) * | 2012-12-26 | 2014-07-02 | 联芯科技有限公司 | 一种调试中央处理器死机的方法和系统 |
CN105653451A (zh) * | 2015-12-29 | 2016-06-08 | 北京金山安全软件有限公司 | 一种软件性能测试方法及装置 |
CN106020962B (zh) | 2016-05-31 | 2019-05-21 | Oppo广东移动通信有限公司 | 一种进程控制方法及终端设备 |
CN110032502B (zh) * | 2018-01-11 | 2023-05-26 | 广州市康锦信息技术有限公司 | 一种异常处理的方法、装置及电子设备 |
CN108959085B (zh) * | 2018-06-25 | 2020-09-01 | 清华大学 | 一种检测内核模块在原子上下文中休眠错误的方法及系统 |
CN109165110A (zh) * | 2018-07-27 | 2019-01-08 | 努比亚技术有限公司 | 移动终端重启定位方法、移动终端及计算机可读存储介质 |
CN109343996A (zh) * | 2018-10-30 | 2019-02-15 | 努比亚技术有限公司 | 移动终端重启定位方法、移动终端及计算机可读存储介质 |
CN111367769B (zh) * | 2020-03-30 | 2023-07-21 | 浙江大华技术股份有限公司 | 应用故障处理方法及电子设备 |
CN112395137B (zh) * | 2021-01-21 | 2021-11-09 | 北京太一星晨信息技术有限公司 | 一种linux内核异常的处理方法、设备及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5016167A (en) * | 1987-12-21 | 1991-05-14 | Amdahl Corporation | Resource contention deadlock detection and prevention |
CN1629821A (zh) * | 2003-12-19 | 2005-06-22 | 华为技术有限公司 | 一种多线程处理器线程死锁检测的方法及其系统 |
CN1811719A (zh) * | 2006-02-22 | 2006-08-02 | 福建师范大学 | 一种单线程微处理器的死锁检测与干预方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6996812B2 (en) * | 2001-06-18 | 2006-02-07 | International Business Machines Corporation | Software implementation of synchronous memory barriers |
US7784054B2 (en) * | 2004-04-14 | 2010-08-24 | Wm Software Inc. | Systems and methods for CPU throttling utilizing processes |
-
2012
- 2012-06-29 CN CN201210223044.1A patent/CN102819466B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5016167A (en) * | 1987-12-21 | 1991-05-14 | Amdahl Corporation | Resource contention deadlock detection and prevention |
CN1629821A (zh) * | 2003-12-19 | 2005-06-22 | 华为技术有限公司 | 一种多线程处理器线程死锁检测的方法及其系统 |
CN1811719A (zh) * | 2006-02-22 | 2006-08-02 | 福建师范大学 | 一种单线程微处理器的死锁检测与干预方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102819466A (zh) | 2012-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102819466B (zh) | 操作系统异常的处理方法及其装置 | |
JP6530774B2 (ja) | ハードウェア障害回復システム | |
US8601493B2 (en) | Application controlling apparatus and storage medium which stores software for the apparatus | |
US9594582B2 (en) | Detection and management of dynamic migration of virtual environments | |
US20160378602A1 (en) | Pre-boot self-healing and adaptive fault isolation | |
CN104199753B (zh) | 一种虚拟机应用服务故障恢复系统及其故障恢复方法 | |
US9558082B2 (en) | VM availability during migration and VM network failures in host computing systems | |
EP3646568B1 (en) | Determining an optimal timeout value to minimize downtime for nodes in a network-accessible server set | |
US20150220411A1 (en) | System and method for operating system agnostic hardware validation | |
CN103201724A (zh) | 在高可用性虚拟机环境中提供高可用性应用程序 | |
US11194589B2 (en) | Information handling system adaptive component reset | |
US20110197193A1 (en) | Device and method for controlling communication between bios and bmc | |
CN104636221A (zh) | 一种计算机系统故障处理方法和装置 | |
US10353786B2 (en) | Virtualization substrate management device, virtualization substrate management system, virtualization substrate management method, and recording medium for recording virtualization substrate management program | |
US11768672B1 (en) | Systems and methods for user-controlled deployment of software updates | |
CN109783390A (zh) | Psu固件升降级稳定性测试方法、装置、终端及存储介质 | |
CN102609324A (zh) | 一种虚拟机死锁后的恢复方法、装置及系统 | |
CN114942859A (zh) | 节点故障的处理方法、装置、设备、介质和程序产品 | |
CN101971144A (zh) | 受系统资源影响的阶段式停机 | |
CN116627702A (zh) | 虚拟机的宕机重启方法及装置 | |
CN101488175B (zh) | 基于轮询机制的防止可信客户虚拟域启动崩溃的方法 | |
KR20130075807A (ko) | 백업 하드디스크 드라이브가 구비된 금융자동화기기 및 금융자동화기기의 부팅 방법 | |
CN103019790B (zh) | 计算机系统开机启动加速方法与装置 | |
US10176142B2 (en) | Techniques of accessing BMC terminals through serial port | |
EP4441612A1 (en) | Preflight checks for hardware accelerators in a distributed system |
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 |