发明内容
基于此,有必要针对上述技术问题,提供一种能够大幅提升处理器死机后恢复效率的处理器死机恢复方法、一种处理器死机恢复装置、一种计算机设备和一种计算机可读存储介质。
为了实现上述目的,本发明实施例采用以下技术方案:
一方面,本发明实施例提供一种处理器死机恢复方法,包括:
在启动看门狗定时器后,若在所述看门狗定时器超时时,未接收到处理器发送的喂狗信号,则指示所述处理器尝试执行第一恢复处理;
若在所述处理器执行所述第一恢复处理的时长达到第一时长时,未接收到所述处理器发送的所述喂狗信号,则指示所述处理器尝试执行第二恢复处理;所述第一恢复处理的优先级高于所述第二恢复处理的优先级;
若在所述处理器执行所述第二恢复处理时,接收到所述处理器发送的所述喂狗信号,则向所述处理器发送状态恢复信号并重启所述看门狗定时器;所述状态恢复信号用于指示所述处理器进入正常运行状态。
在其中一个实施例中,所述第一恢复处理为异常进程恢复处理,所述第二恢复处理为中断复位处理。
在其中一个实施例中,所述方法还包括:
若在所述处理器执行所述中断复位处理的时长达到第二时长时,未接收到所述处理器发送的所述喂狗信号,则触发所述处理器通过复位管脚复位;
若在所述处理器通过所述复位管脚复位时,接收到所述处理器发送的所述喂狗信号,则向所述处理器发送所述状态恢复信号并重启所述看门狗定时器。
在其中一个实施例中,所述第一恢复处理为异常进程恢复处理,所述第二恢复处理为复位管脚复位。
在其中一个实施例中,所述第一恢复处理为中断复位处理,所述第二恢复处理为复位管脚复位。
在其中一个实施例中,所述方法还包括:
若在所述处理器通过所述复位管脚复位的时长达到第三时长时,未接收到所述处理器发送的所述喂狗信号,则重新触发所述处理器通过所述复位管脚复位,直至接收到所述处理器发送的所述喂狗信号。
在其中一个实施例中,所述方法还包括:
若在所述处理器执行所述第一恢复处理时,接收到所述处理器发送的所述喂狗信号,则向所述处理器发送所述状态恢复信号并重启所述看门狗定时器。
另一方面,本发明实施例还提供一种处理器死机恢复方法,包括:
在看门狗定时器启动后,若在所述看门狗定时器超时时,未向看门狗电路发送喂狗信号,则接收到所述看门狗电路的指示后,尝试执行第一恢复处理;
若执行所述第一恢复处理的时长达到第一时长时,未向所述看门狗电路发送所述喂狗信号,则接收到所述看门狗电路的指示后,尝试执行第二恢复处理;所述第一恢复处理的优先级高于所述第二恢复处理的优先级;
若在所述第二恢复处理时,恢复向所述看门狗电路发送所述喂狗信号,则接收到所述看门狗电路发送的状态恢复信号后,进入正常运行状态。
在其中一个实施例中,所述第一恢复处理为异常进程恢复处理,所述第二恢复处理为中断复位处理。
在其中一个实施例中,所述方法还包括:
若执行所述中断复位处理的时长达到第二时长时,未向所述看门狗电路发送所述喂狗信号,则接收到所述看门狗电路发送的复位触发信号后,通过复位管脚复位;
若通过所述复位管脚复位时,恢复向所述看门狗电路发送所述喂狗信号,则接收到所述看门狗电路发送的状态恢复信号后,进入正常运行状态。
在其中一个实施例中,所述第一恢复处理为异常进程恢复处理,所述第二恢复处理为复位管脚复位。
在其中一个实施例中,所述第一恢复处理为中断复位处理,所述第二恢复处理为复位管脚复位。
在其中一个实施例中,所述方法还包括:
若通过所述复位管脚复位的时长达到第三时长时,未向所述看门狗电路发送所述喂狗信号,则接收到所述看门狗电路重发的所述复位触发信号后,通过所述复位管脚复位,直至恢复向所述看门狗电路发送所述喂狗信号。
在其中一个实施例中,所述方法还包括:
若执行所述第一恢复处理时,恢复向所述看门狗电路发送所述喂狗信号,则接收到所述看门狗电路发送的状态恢复信号后,进入正常运行状态。
在其中一个实施例中,所述中断复位处理包括:
记录程序异常信息后,通过预设中断服务处理程序进行内部复位。
又一方面,本发明实施例还提供一种处理器死机恢复装置,包括:
第一信号模块,用于在启动看门狗定时器后,若在所述看门狗定时器超时时,未接收到处理器发送的喂狗信号,则指示所述处理器尝试执行第一恢复处理;
第二信号模块,用于在所述处理器执行所述第一恢复处理的时长达到第一时长,且未接收到所述处理器发送的所述喂狗信号时,指示所述处理器尝试执行第二恢复处理;所述第一恢复处理的优先级高于所述第二恢复处理的优先级;
状态指示模块,用于在所述处理器执行所述第二恢复处理时,接收到所述处理器发送的所述喂狗信号后,向所述处理器发送状态恢复信号并重启所述看门狗定时器;所述状态恢复信号用于指示所述处理器进入正常运行状态。
再一方面,本发明实施例还提供一种处理器死机恢复装置,包括:
第一恢复模块,用于在看门狗定时器启动后,若在所述看门狗定时器超时时,未向看门狗电路发送喂狗信号,则接收到所述看门狗电路的指示后,尝试执行第一恢复处理;
第二恢复模块,用于在执行所述第一恢复处理的时长达到第一时长,且未向所述看门狗电路发送所述喂狗信号,接收到所述看门狗电路的指示后,尝试执行第二恢复处理;所述第一恢复处理的优先级高于所述第二恢复处理的优先级;
状态进入模块,用于在执行所述第二恢复处理恢复向所述看门狗电路发送所述喂狗信号后,接收到所述看门狗电路发送的状态恢复信号时,进入正常运行状态。
再一方面,本发明实施例还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述处理器死机恢复方法的步骤。
再一方面,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述处理器死机恢复方法的步骤。
上述技术方案中的一个技术方案具有如下优点和有益效果:
上述处理器死机恢复方法,通过在处理器死机无法在及时提供喂狗信号时,指示处理器尝试执行第一恢复处理,使处理器先尝试小范围的死机恢复。若第一恢复处理无法有效恢复处理器,则指示处理器尝试执行第二恢复处理,加大恢复力度(也即尝试在处理器内部进行更大范围的恢复)。前述范围是指从线程、进程、软件程序到处理器整体硬件层面的逐级扩大的范围。如此,通过根据处理器不同的死机程度逐级触发不同恢复力度的死机恢复处理方案,可以有效区分不同的死机原因并采用对应的死机恢复处理方案,大大缩短处理器死机恢复耗时,避免了处理器死机无法正常喂狗,直接通过处理器的复位管脚进行复位的低效率问题,大幅提升了处理器死机后恢复效率。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的处理器死机恢复方法,可以应用于如图1所示的应用环境中。在处理器14(如CPU)运行程序执行任务过程中,当处理器14开始执行某项任务时,看门狗电路12如基于复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)的看门狗电路12会同时启动其配套的看门狗定时器T0,以对处理器14执行的该某项任务进行计时。在看门狗定时器T0超时时,也即处理器14执行该某项任务的时长已超过看门狗定时器T0的定时时长T0,看门狗电路12未接收到处理器14发送的喂狗信号时,看门狗电路12指示处理器14尝试执行第一恢复处理。
当处理器14执行第一恢复处理的时长达到第一时长T1时,看门狗电路12未接收到处理器14发送的喂狗信号,则会指示处理器14执行第二恢复处理。第一恢复处理的优先级高于第二恢复处理的优先级。当处理器14执行第二恢复处理时,看门狗电路12接收到处理器14发送的喂狗信号时,看门狗电路12则会向处理器14发送状态恢复信号指示处理器14进入正常运行状态,并重启看门狗定时器T0,也即重新启动看门狗定时器T0并对看门狗定时器T0计数清零。其中,处理器14可以但不限于通过GPIO接口、SPI接口、I2C接口、UART接口或CANBUS接口等通信链路传递喂狗信号到看门狗电路12,只要能够传递喂狗信号均可。上述的看门狗电路12和处理器14可以是指各类计算机终端、服务器或者基站设备中的看门狗电路12和处理器14。
请参阅图2,在一个实施例中,提供了一种处理器死机恢复方法,以该方法应用于图1中的环境为例且站在看门狗电路12的角度进行说明,包括以下步骤S12至S16:
S12,在启动看门狗定时器后,若在看门狗定时器超时时,未接收到处理器14发送的喂狗信号,则指示处理器14尝试执行第一恢复处理。
其中,第一恢复处理用于处理器14对内部的异常情况进行小范围(如线程、进程或软件层面)的恢复处理,例如在处理器14的操作系统能正常运行的情况下,处理器14当前处理的部分软件进程发生异常导致处理器14未及时喂狗时,处理器14可以通过对第一恢复处理即可重新恢复正常喂狗。第一恢复处理可以是进程层面的恢复处理,也可以是软件层面的恢复处理。
可选的,处理器14在正常运行过程中会以固定周期(该固定周期小于看门狗定时器T0的定时时长T0)向看门狗电路12发送喂狗信号,以使看门狗电路12的看门狗定时器T0计数清零,开始下一轮计数继续监控处理器14运行。当处理器14开始执行某项任务时,看门狗电路12会同时启动其配套的看门狗定时器T0,以对处理器14执行的该某项任务进行计时监控。在看门狗定时器T0超时时,看门狗电路12未接收到处理器14发送的喂狗信号,看门狗电路12指示处理器14执行第一恢复处理,此时,处理器14尝试较小范围的恢复处理,例如对影响正常喂狗的异常进程或者异常软件进行恢复,以尝试解决处理器14中的进程异常,或者部分软件异常。由于处理器14死机原因无法预知,所以死机程度也无法预知,通过第一恢复处理可以先尝试按照处理器14中整个操作系统和其它软件均可运行正常时的轻度死机或中度死机情况,来进行恢复。
S14,若在处理器14执行第一恢复处理的时长达到第一时长时,未接收到处理器14发送的喂狗信号,则指示处理器14尝试执行第二恢复处理;第一恢复处理的优先级高于第二恢复处理的优先级。
其中,第一时长为处理器14执行第一恢复处理的限定时长,可以通过维护看门狗电路12内部或者外部的定时器来开设。例如在处理器14开始执行第一恢复处理时,看门狗电路12同时开启一个定时器T1,以对处理器14执行第一恢复处理进行计时监控;当定时器T1超时也即计时达到定时器T1的计时限值第一时长T1,即可以判定处理器14执行第一恢复处理进行死机恢复失败。第二恢复处理可以是应用软件、系统软件或处理器14整体硬件层面的恢复处理,可以通过为第一恢复处理和第二恢复处理分别对应的程序设置大小不同的优先级的方式,实现处理器14发生死机时,按照恢复处理的力度,也即优先级顺序,依次尝试死机恢复。
可选的,当处理器14执行第一恢复处理的时长达到第一时长时,看门狗电路12没有接收到处理器14发送的喂狗信号,即判定处理器14无法完成当前的死机恢复。看门狗电路12则会向处理器14发送指示信号,以指示处理器尝试执行次优先级的第二恢复处理,以从处理器14内部进行更大范围的恢复处理,例如从原来的线程恢复层面,扩大到进程恢复层面,或者从软件程序的恢复异常层面,扩大到处理器14整体硬件复位等,加大对处理器14的恢复力度。
S16,若在处理器14执行第二恢复处理时,接收到处理器14发送的喂狗信号,则向处理器14发送状态恢复信号并重启看门狗定时器;状态恢复信号用于指示处理器14进入正常运行状态。
可选的,当处理器14在执行第二恢复处理时,如在一定时长内或者不限制时长,经过指示处理器14尝试执行第二恢复处理,看门狗电路12接收到处理器14发送的喂狗信号,则可以判定处理器14通过第二恢复处理能够有效完成当前的死机恢复。看门狗电路12接收到喂狗信号后向处理器14发送状态恢复信号,以通知处理器14进入正常运行状态,例如,状态恢复信号将处理器14的GPIO1接口的电平状态拉高或者拉低,以返回到处理器14正常运行时的接口状态。看门狗电路12在发送状态恢复信号同时,重启看门狗定时器T0,如重新开启看门狗定时器T0并清零其计数,以恢复处理器14正常运行时所需的中断监控。
上述处理器死机恢复方法,通过在处理器14死机无法在及时提供喂狗信号时,指示处理器14尝试执行第一恢复处理,使处理器14先尝试小范围的死机恢复。若第一恢复处理无法有效恢复处理器14,则指示处理器14尝试执行第二恢复处理,加大恢复范围(也即尝试在处理器14内部进行更大范围的恢复)。前述范围是指从线程、进程、软件程序到处理器14整体硬件层面的逐级扩大的范围。如此,通过根据处理器14不同的死机程度逐级触发不同恢复力度的死机恢复处理方案,可以有效区分不同的死机原因并采用对应的死机恢复处理方案,大大缩短处理器14死机恢复耗时,避免了处理器14死机无法正常喂狗,直接通过处理器14的复位管脚进行复位的低效率问题,大幅提升了处理器14死机后恢复效率。
在一个实施例中,第一恢复处理为异常进程恢复处理。第二恢复处理为中断复位处理。
在上述的逐级恢复处理中,处理器14在发生死机时,可以在看门狗电路12的指示下,例如接收到看门狗电路12向处理器14发送的管脚状态指示信号,处理器14先尝试执行异常进程恢复处理。其中,管脚状态指示信号可以是高电平信号也可以是低电平信号,具体可以根据看门狗电路12与处理器14连接的通用I/O接口(即GPIO接口)电平状态来确定,例如处理器14正常运行时,处理器14其中一个通用I/O接口如GPIO1接口的电平状态为低电平,则管脚状态指示信号可以是高电平信号,以将GPIO1接口的电平状态拉高,通知处理器14喂狗异常,从而使处理器14尝试执行异常进程恢复处理。
又例如,处理器14运行正常时,GPIO1接口的电平状态为高电平,则管脚状态指示信号可以是低电平信号,以将GPIO1接口的电平状态拉低,通知处理器14喂狗异常,从而处理器14尝试执行异常进程恢复处理。异常进程恢复处理用于处理器14对内部的异常进程的恢复处理,例如在处理器14的操作系统能正常运行的情况下,处理器14当前处理的部分软件进程发生异常导致处理器14未及时喂狗时,处理器14可以通过对异常进程恢复即可重新恢复正常喂狗。
可选的,在看门狗定时器T0超时时,看门狗电路12未接收到处理器14发送的喂狗信号,看门狗电路12向处理器14发送管脚状态指示信号指示处理器14执行异常进程恢复处理。处理器14接收到管脚状态指示信号后即判定未能及时喂狗,此时,处理器14尝试对异常的喂狗进程或者其他正在处理且已发生异常的软件进程进行恢复,以解决处理器14中喂狗进程异常,或者部分软件进程异常,而整个操作系统和其它软件进程均运行正常时的轻度死机情况。
当处理器14执行异常进程恢复处理的时长达到第一时长时,看门狗电路12没有接收到处理器14发送的喂狗信号,即判定处理器14无法完成当前的死机恢复。看门狗电路12则会向处理器14发送中断触发信号,以指示处理器尝试执行恢复范围更大的中断复位处理。处理器14接收到中断触发信号后,即可尝试通过触发预先配置到处理器14内的预设中断服务处理程序进行中断复位,以从处理器14内部进行软件程序复位,恢复异常的软件程序。
通过指示处理器14先后尝试执行异常进程恢复处理和中断复位处理,有效避免在处理器14发生死机时,直接对处理器14进行整机硬件复位来恢复处理器14,从而有效确保处理器14的死机程度处于部分进程,如喂狗进程异常时的轻度或者部分软件异常导致处理器14喂狗超时的中度情况下,提高处理器14的死机恢复处理效率。
请参阅图3,在一个实施例中,上述的处理器死机恢复方法还包括如下步骤S18和S20:
S18,若在处理器14执行中断复位处理的时长达到第二时长时,未接收到处理器14发送的喂狗信号,则触发处理器14通过复位管脚复位。
可以理解,第二时长为处理器14执行中断复位处理的限定时长,也可以通过维护看门狗电路12内部或者外部的定时器来开设。例如在处理器14开始执行中断复位处理时,看门狗电路12同时开启一个定时器T2,以对处理器14执行异常进程恢复处理进行计时监控;当定时器T2超时也即计时达到定时器T2的计时限值第二时长T2,即可以判定处理器14执行中断复位处理进行死机恢复失败。
可选的,当处理器14执行中断复位处理的时长达到第二时长时,看门狗电路12没有接收到处理器14发送的喂狗信号,即判定处理器14无法完成当前的死机恢复。看门狗电路12则可以向处理器14发送复位触发信号,触发处理器14通过复位管脚复位,也即通过本领域常规的处理器14外部硬件复位的方式,进行处理器14的死机恢复。
S20,若在处理器通过复位管脚复位时,接收到处理器发送的喂狗信号,则向处理器发送状态恢复信号并重启看门狗定时器。
可选的,当处理器14通过复位管脚复位时,如在一定时长内或者不限制时长,经过处理器14的复位管脚的复位处理,看门狗电路12接收到处理器14发送的喂狗信号,则可以判定处理器14通过复位管脚的复位处理能够有效完成当前的死机恢复。看门狗电路12接收到喂狗信号后向处理器14发送状态恢复信号,以通知处理器14进入正常运行状态,同时,重启看门狗定时器T0恢复处理器14正常运行时所需的中断监控。
通过上述的步骤S18和S20,可以在处理器14经过上述的异常进程恢复、中断复位均无法有效从死机状态恢复时,触发处理器14的复位管脚进行复位,从而可以避免处理器14出现死机立即触发复位管脚进行复位,导致死机恢复效率较低的问题;如此,经过处理器14逐级尝试执行异常进程恢复处理、中断复位处理和复位管脚复位的三级恢复处理,可以确保处理器14的死机程度既不属于轻度情况,也不属于中度情况下的死机恢复处理,有效提升了处理器14的死机恢复精准度和恢复效率。
在一个实施例中,第一恢复处理为异常进程恢复处理。第二恢复处理为复位管脚复位。
在可选的,上述的逐级恢复处理中,处理器14在发生死机时,看门狗电路12向处理器14发送管脚状态指示信号指示处理器14执行异常进程恢复处理,此时,处理器14尝试对异常的喂狗进程或者其他正在处理且已发生异常的软件进程进行恢复,以尝试解决处理器14中喂狗进程异常,或者部分软件进程异常,而整个操作系统和其它软件进程均运行正常时的轻度死机情况。
当处理器14执行异常进程恢复处理的时长达到第一时长时,看门狗电路12没有接收到处理器14发送的喂狗信号,即判定处理器14无法完成当前的死机恢复。看门狗电路12则会直接触发处理器14通过复位管脚复位,直接进行处理器14的整机硬件复位。如此,
通过指示处理器14先尝试执行异常进程恢复处理,在恢复失败后直接触发处理器14通过复位管脚复位,有效避免在处理器14发生死机时,立即对处理器14进行整机硬件复位来恢复处理器14,从而有效确保处理器14的死机程度处于中度或者更严重情况下的死机恢复,提高处理器14的死机恢复处理效率。
在一个实施例中,第一恢复处理为中断复位处理。第二恢复处理为复位管脚复位。
在可选的,上述的逐级恢复处理中,处理器14在发生死机时,看门狗电路12也可以直接向处理器14发送中断触发信号,以指示处理器尝试执行恢复范围更大的中断复位处理。此时,处理器14尝试对内部进行软件程序复位,恢复异常的软件程序。
当处理器14执行中断复位处理的时长达到第一时长时,看门狗电路12没有接收到处理器14发送的喂狗信号,即判定处理器14无法完成当前的死机恢复。看门狗电路12则会直接触发处理器14通过复位管脚复位,直接进行处理器14的整机硬件复位。如此,
通过指示处理器14先尝试执行中断复位处理,在恢复失败后直接触发处理器14通过复位管脚复位,有效避免在处理器14发生死机时,立即对处理器14进行整机硬件复位来恢复处理器14,从而有效确保处理器14的死机程度处于中度或者更严重情况下的死机恢复,提高处理器14的死机恢复处理效率。
请参阅图4,在一个实施例中,上述的处理器死机恢复方法还包括如下步骤S22:
S22,若在处理器14通过复位管脚复位的时长达到第三时长时,未接收到处理器14发送的喂狗信号,则重新触发处理器14通过复位管脚复位,直至接收到处理器14发送的喂狗信号。
其中,第三时长为处理器14通过复位管脚复位的限定时长,也可以通过维护看门狗电路12内部或者外部的定时器来开设。例如在处理器14开始通过复位管脚进行复位时,看门狗电路12同时开启一个定时器T3,以对处理器14通过复位管脚进行复位进行计时监控;当定时器T3超时也即计时达到定时器T3的计时限值第三时长T3,即可以判定处理器14本次通过复位管脚进行复位进行死机恢复失败。
可选的,当处理器14通过复位管脚复位的时长达到第三时长时,看门狗电路12没有接收到处理器14发送的喂狗信号,即判定处理器14无法完成当前的死机恢复。看门狗电路12则向处理器14重发复位触发信号,以使处理器14再次尝试通过复位管脚进行复位。如此,不断重复前述复位过程,直到看门狗电路12接收到处理器14发送的喂狗信号为止。
通过上述的步骤S22,可以在处理器14无法通过一次复位管脚的复位成功恢复时,看门狗电路12自动重复触发处理器14通过复位管脚进行复位,有效提升处理器14死机恢复的可靠性。
在一个实施例中,上述的处理器死机恢复方法还包括如下步骤:
若在处理器执行第一恢复处理时,接收到处理器发送的喂狗信号,则向处理器发送状态恢复信号并重启看门狗定时器。
可以理解,当处理器14在执行第一恢复处理时,例如异常进程恢复处理或中断复位处理,如在第一时长T1内,看门狗电路12接收到处理器14发送的喂狗信号,即判定处理器14通过对异常进程进行恢复有效完成了当前轻度死机情况或者中度情况下的死机恢复。看门狗电路12则向处理器14发送状态恢复信号同时重启看门狗定时器T0,以通知处理器14进入正常运行状态,并恢复处理器14正常运行时所需的喂狗监控。如此,处理器14则将无需在尝试执行第二恢复处理来实现死机恢复,从而大大提升了处理器14死机后恢复效率。
请参阅图5,在一个实施例中,还提供一种处理器死机恢复方法,下面站在处理器14的角度进行说明,包括如下步骤S11至S15:
S11,在看门狗定时器启动后,若在看门狗定时器超时时,未向看门狗电路发送喂狗信号,则接收到看门狗电路的指示后,尝试执行第一恢复处理。
可选的,当处理器14开始执行某项任务时,看门狗电路12会同时启动其配套的看门狗定时器T0,以对处理器14执行的该某项任务进行计时监控。在看门狗定时器T0超时时,处理器14未能及时向看门狗电路12发送喂狗信号,处理器14则会接收到看门狗电路12发送的指示信号,从而尝试执行第一恢复处理。
S13,若执行第一恢复处理的时长达到第一时长时,未向看门狗电路发送喂狗信号,则接收到看门狗电路的指示后,尝试执行第二恢复处理;第一恢复处理的优先级高于第二恢复处理的优先级。
可选的,当处理器14执行第一恢复处理的时长达到第一时长时,处理器14仍然未能及时向看门狗电路12发送喂狗信号,即判定处理器14无法完成当前的死机恢复。处理器14则会接收到看门狗电路12发送的下一个指示信号,从而开始尝试执行第二恢复处理,尝试更大恢复力度的死机恢复处理。
S15,若在第二恢复处理时,恢复向看门狗电路发送喂狗信号,则接收到看门狗电路发送的状态恢复信号后,进入正常运行状态。
可选的,当处理器14在执行第二恢复处理时,如在一定时长内或者不限制时长,处理器14恢复向看门狗电路12发送喂狗信号,也即处理器14通过加大恢复力度的第二恢复处理,能够有效完成当前的死机恢复。处理器14则会接收到看门狗电路12接收到喂狗信号后发送的状态恢复信号,从而进入正常运行状态。例如,状态恢复信号将处理器14的GPIO1接口的电平状态拉高或者拉低,处理器14将会查询到该GPIO1接口状态已翻转到正常运行状态时的接口状态。如此,看门狗电路12在发送状态恢复信号同时,重启看门狗定时器T0,如重新开启看门狗定时器T0并清零其计数,以恢复处理器14正常运行时所需的中断监控。
上述处理器死机恢复方法,通过在处理器14死机无法在及时提供喂狗信号时,处理器14尝试执行第一恢复处理,以先尝试小范围的死机恢复。若第一恢复处理无法有效恢复处理器14,则处理器14尝试执行第二恢复处理,加大恢复范围(也即尝试在处理器14内部进行更大范围的恢复)。前述范围是指从线程、进程、软件程序到处理器14整体硬件层面的逐级扩大的范围。如此,通过根据处理器14不同的死机程度逐级触发不同恢复力度的死机恢复处理方案,可以有效区分不同的死机原因并采用对应的死机恢复处理方案,大大缩短处理器14死机恢复耗时,避免了处理器14死机无法正常喂狗,直接通过处理器14的复位管脚进行复位的低效率问题,大幅提升了处理器14死机后恢复效率。
在一个实施例中,第一恢复处理为异常进程恢复处理。第二恢复处理为中断复位处理。
可选的,处理器14在先后尝试执行上述的第一恢复处理和第二恢复处理时,可以先尝试执行异常进程恢复处理,进行较轻死机程度下的恢复。若异常进程恢复处理恢复失败,则尝试执行中断复位处理,加大恢复处理的力度。关于前述异常进程恢复处理和中断复位处理,可以参见前述相应实施例中关于的异常进程恢复处理和中断复位处理的说明,此处不再重复赘述,后续实施例中相应部分内容同理。
通过处理器14先尝试执行异常进程恢复处理,在恢复失败后直接触发处理器14通过复位管脚复位,有效避免在处理器14发生死机时,立即对处理器14进行整机硬件复位来恢复处理器14,从而有效确保处理器14的死机程度处于中度或者更严重情况下的死机恢复,提高处理器14的死机恢复处理效率。
请参阅图6,在一个实施例中,上述的处理器死机恢复方法还包括如下步骤S17和S19:
S17,若执行中断复位处理的时长达到第二时长时,未向看门狗电路发送喂狗信号,则接收到看门狗电路发送的复位触发信号后,通过复位管脚复位。
可选的,当处理器14执行中断复位处理的时长达到第二时长时,处理器14仍然未能及时向看门狗电路12发送喂狗信号,即判定处理器14无法完成当前的死机恢复。处理器14则会接收到看门狗电路12发送的复位触发信号,以触发通过复位管脚复位,也即通过本领域常规的处理器14外部硬件复位的方式,进行死机恢复。
S19,若通过复位管脚复位时,恢复向看门狗电路发送喂狗信号,则接收到看门狗电路发送的状态恢复信号后,进入正常运行状态。
可选的,当处理器14通过复位管脚复位时,如在一定时长内或者不限制时长,经过处理器14的复位管脚的复位处理,处理器14恢复向看门狗电路12发送喂狗信号,也即处理器14通过复位管脚的复位处理能够有效完成当前的死机恢复。处理器14将会接收到看门狗电路12接收到喂狗信号后发送的状态恢复信号,以进入正常运行状态,同时恢复正常运行时所需的中断监控。
通过上述的步骤S17和S19,可以在处理器14经过上述的异常进程恢复、中断复位均无法有效从死机状态恢复时,自动触发复位管脚进行复位,从而可以避免处理器14出现死机立即触发复位管脚进行复位,导致死机恢复效率较低的问题;如此,经过上述的三级恢复处理,有效提升了处理器14的死机恢复精准度和恢复效率。
在一个实施例中,第一恢复处理为异常进程恢复处理。第二恢复处理为复位管脚复位。
在可选的,通过指示处理器14先尝试执行异常进程恢复处理,在恢复失败后直接触发处理器14通过复位管脚复位,有效避免在处理器14发生死机时,立即对处理器14进行整机硬件复位来恢复处理器14,从而有效确保处理器14的死机程度处于中度或者更严重情况下的死机恢复,提高处理器14的死机恢复处理效率。
在一个实施例中,第一恢复处理为中断复位处理。第二恢复处理为复位管脚复位。
在可选的,上述的逐级恢复处理中,处理器14可以直接先尝试执行中断复位处理,在恢复失败后直接触发处理器14通过复位管脚复位,有效避免在处理器14发生死机时,立即对处理器14进行整机硬件复位来恢复处理器14,从而有效确保处理器14的死机程度处于中度或者更严重情况下的死机恢复,提高处理器14的死机恢复处理效率。
在一个实施例中,上述的处理器死机恢复方法还包括如下步骤:
若通过复位管脚复位的时长达到第三时长时,未向看门狗电路发送喂狗信号,则接收到看门狗电路重发的复位触发信号后,通过复位管脚复位,直至恢复向看门狗电路发送喂狗信号。
可选的,当处理器14通过复位管脚复位的时长达到第三时长时,处理器14仍然未能恢复向看门狗电路12发送喂狗信号,即判定处理器14无法完成当前的死机恢复。处理器14将会接收到看门狗电路12重发的复位触发信号,以再次尝试通过复位管脚进行复位。如此,不断重复前述复位过程,直到处理器14恢复向看门狗电路12发送喂狗信号为止。通过上述的步骤,可以在处理器14无法通过执行一次复位管脚的复位成功恢复时,自动重复触发通过复位管脚进行复位,有效提升处理器14死机恢复的可靠性。
在一个实施例中,上述的处理器死机恢复方法还包括如下步骤:
若执行第一恢复处理时,恢复向看门狗电路发送喂狗信号,则接收到看门狗电路发送的状态恢复信号后,进入正常运行状态。
可以理解,当处理器14在执行第一恢复处理时,例如异常进程恢复处理或中断复位处理,如在第一时长T1内,看门狗电路12接收到处理器14发送的喂狗信号,即判定处理器14通过对异常进程进行恢复有效完成了当前轻度死机情况或者中度情况下的死机恢复。看门狗电路12则向处理器14发送状态恢复信号同时重启看门狗定时器T0,以通知处理器14进入正常运行状态,并恢复处理器14正常运行时所需的喂狗监控。如此,处理器14则将无需在尝试执行第二恢复处理来实现死机恢复,从而大大提升了处理器14死机后恢复效率。
在一个实施例中,上述的中断复位处理包括:
记录程序异常信息后,通过预设中断服务处理程序进行内部复位。
可以理解,在上述处理器14通过中断复位的方式进行死机恢复的具体过程中,处理器14可以在预先载入的预设中断服务处理程序能够正常运行情况下,先记录内部程序异常信息作为相关的死机信息,然后通过预设中断服务处理程序进行内部的软件程序复位,以将出现异常的程序进行复位。
通过预设中断服务处理程序运行时,先记录相关的死机信息后再进行内部复位,提高处理器14死机恢复效率同时,可以便于运维人员掌握处理器14的死机信息,提供运维人员对处理器14进行死机原因分析的条件,便于对处理器14进行针对性的升级优化,减少死机概率。
应该理解的是,虽然图2-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
可选的,如图7和图8所示,为更清楚的说明本发明实施例的处理器死机恢复方法,在图7所示的恢复流程框图中:以看门狗电路12为CPLD、处理器14为CPU为例。
一级恢复:CPLD上电启动看门狗定时器T0,CPU以固定时间周期Ta(Ta<T0)进行喂狗,CPLD在收到喂狗信号后,将看门狗定时器T0计数清零。若在时间T0内CPLD未及时收到喂狗信号,定时器T0超时,CPLD向CPU进行GPIO管脚状态指示,以使CPU执行异常进程恢复处理,同时,CPLD启动定时器T1。
CPU中有监控模块程序会以固定周期Tb(Tb<T1)定时查询GPIO1管脚的状态,当GPIO1管脚的状态由低变高后,即判定CPU未及时喂狗。若监控程序能正常运行,也即是说此时CPU内的操作系统运行正常,CPU死机程度较轻,仅部分软件进程异常导致喂狗超时。这时CPU尝试一级恢复,也即执行异常进程恢复处理,恢复异常的相关软件进程恢复喂狗即可,无需进行CPU整机复位。同时,CPU还可以对异常软件进程进行信息记录,以便运维人员获得异常情况的详细信息。
二级恢复:若CPLD在时间T1内收到CPU发送的喂狗信号,则将CPU的GPIO1接口状态拉低,恢复正常状态指示;同时,CPLD启动看门狗定时器T0,并将看门狗定时器T0计数清零。若CPLD在时间T1内未收到喂狗信号,则触发CPU进行二级恢复,也即指示CPU执行中断复位处理;同时CPLD启动定时器T2。
在CPU的INT管脚对应的中断服务处理程序还能正常响应,说明此时CPU死机程度为中等程度,CPU在对程序异常信息进行记录后,内部复位CPU。复位后相关程序恢复正常,且CPU恢复正常喂狗。若CPLD在时间T2内收到喂狗信号后,将CPU的GPIO1接口状态拉低,恢复正常状态指示;同时,CPLD启动看门狗定时器T0,并将看门狗定时器T0计数清零。
三级恢复:若CPLD在时间T2内未收到喂狗信号,则指示CPU进行三级恢复,也即CPU通过复位管脚复位。若CPLD在时间T2内未收到喂狗信号,CPLD则通过CPU复位管脚CPU_RST,硬件复位CPU;同时CPLD启动定时器T3。若CPLD在时间T3内收到喂狗信号,则启动看门狗定时器T0并清零计数,同时CPLD将CPU的GPIO1接口状态拉低,恢复正常状态指示。若CPU未能在时间T3内恢复正常喂狗,则再次通过CPU复位管脚CPU_RST进行三级恢复,直至最终CPU从死机状态恢复到正常状态。
请参阅图9,在一个实施例中,还提供一种处理器死机恢复装置100,包括第一信号模块11、第二信号模块13和状态指示模块15。其中,第一信号模块11,用于在启动看门狗定时器后,若在看门狗定时器超时时,未接收到处理器发送的喂狗信号,则指示处理器尝试执行第一恢复处理。第二信号模块13,用于在处理器执行第一恢复处理的时长达到第一时长,且未接收到处理器发送的喂狗信号时,指示处理器尝试执行第二恢复处理;第一恢复处理的优先级高于第二恢复处理的优先级。状态指示模块15,用于在处理器执行第二恢复处理时,接收到处理器发送的喂狗信号后,向处理器发送状态恢复信号并重启看门狗定时器;状态恢复信号用于指示处理器进入正常运行状态。
上述的处理器死机恢复装置100,通过各模块根据处理器死机的轻重程度,逐级自动触发不同恢复力度的死机恢复处理方案,可以有效区分不同的死机原因并采用对应的死机恢复处理方案,大大缩短处理器死机恢复耗时,避免了处理器死机无法正常喂狗即通过处理器的复位管脚进行复位的低效率问题,大幅提升了处理器死机后恢复效率。
在一个实施例中,上述的状态指示模块15,还用于在处理器执行第一恢复处理时,接收到处理器发送的喂狗信号后,向处理器发送状态恢复信号并重启看门狗定时器。
在一个实施例中,上述的处理器死机恢复装置100还包括复位触发信号模块,用于在处理器执行中断复位处理的时长达到第二时长,且未接收到处理器发送的喂狗信号时,触发处理器通过复位管脚复位。恢复信号发送模块还用于在处理器通过复位管脚复位时,接收到处理器发送的喂狗信号后,向处理器发送状态恢复信号并重启看门狗定时器。
在一个实施例中,上述的处理器死机恢复装置100还包括复位重发模块,用于在处理器通过复位管脚复位的时长达到第三时长,且未接收到处理器发送的喂狗信号时,重新触发处理器通过复位管脚复位,直至接收到处理器发送的喂狗信号。
请参阅图10,在一个实施例中,还提供一种死机恢复装置200,包括第一恢复模块21、第二恢复模块23和状态进入模块25。第一恢复模块21,用于在看门狗定时器超时且未向看门狗电路发送喂狗信号后,接收到看门狗电路的指示时,尝试执行第一恢复处理。第二恢复模块23,用于在执行第一恢复处理的时长达到第一时长,且未向看门狗电路发送喂狗信号后,接收到看门狗电路的指示时,尝试执行第二恢复处理;第一恢复处理的优先级高于第二恢复处理的优先级。状态进入模块25,用于在执行第二恢复处理,恢复向看门狗电路发送喂狗信号后,接收到看门狗电路发送的状态恢复信号时,进入正常运行状态。
上述的死机恢复装置200,通过各模块根据处理器死机的轻重程度,逐级自动触发不同恢复力度的死机恢复处理方案,可以有效区分不同的死机原因并采用对应的死机恢复处理方案,大大缩短处理器死机恢复耗时,避免了处理器死机无法正常喂狗即通过处理器的复位管脚进行复位的低效率问题,大幅提升了处理器死机后恢复效率。
在一个实施例中,上述的状态进入模块25,还用于在执行第一恢复处理时,恢复向看门狗电路发送喂狗信号,则接收到看门狗电路发送的状态恢复信号后,进入正常运行状态。
在一个实施例中,上述的死机恢复装置200还包括管脚复位模块,用于在执行中断复位处理的时长达到第二时长,且未向看门狗电路发送喂狗信号时,接收到看门狗电路发送的复位触发信号后,通过复位管脚复位。上述的状态进入模块25,还用于在通过复位管脚复位时而恢复向看门狗电路发送喂狗信号时,接收到看门狗电路发送的状态恢复信号后,进入正常运行状态。
在一个实施例中,管脚复位模块还用于在通过复位管脚复位的时长达到第三时长,且未向看门狗电路发送喂狗信号时,接收到看门狗电路重发的复位触发信号后,通过复位管脚复位,直至恢复向看门狗电路发送喂狗信号。
关于处理器死机恢复装置100或死机恢复装置200的具体限定可以参见上文中对于处理器死机恢复方法或处理器死机恢复方法的限定,在此不再赘述。上述处理器死机恢复装置100或死机恢复装置200中的各个模块可全部或部分通过软件、硬件及其组合来实现。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器也可以是终端。该计算机设备至少包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的其他服务器或终端通过网络连接通信。该计算机程序被处理器执行时实现如下步骤:在启动看门狗定时器后,若在看门狗定时器超时时,未接收到处理器发送的喂狗信号,则指示处理器尝试执行第一恢复处理;若在处理器执行第一恢复处理的时长达到第一时长时,未接收到处理器发送的喂狗信号,则指示处理器尝试执行第二恢复处理;第一恢复处理的优先级高于第二恢复处理的优先级;若在处理器执行第二恢复处理时,接收到处理器发送的喂狗信号,则向处理器发送状态恢复信号并重启看门狗定时器;状态恢复信号用于指示处理器进入正常运行状态。
或者实现如下步骤:在看门狗定时器启动后,若在看门狗定时器超时时,未向看门狗电路发送喂狗信号,则接收到看门狗电路的指示后,尝试执行第一恢复处理;若执行第一恢复处理的时长达到第一时长时,未向看门狗电路发送喂狗信号,则接收到看门狗电路的指示后,尝试执行第二恢复处理;第一恢复处理的优先级高于第二恢复处理的优先级;若在第二恢复处理时,恢复向看门狗电路发送喂狗信号,则接收到看门狗电路发送的状态恢复信号后,进入正常运行状态。
在一个实施例中,前述计算机程序被处理器执行时还可以实现上述各实施例中处理器死机恢复方法的各增加步骤或子步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如下步骤:在启动看门狗定时器后,若在看门狗定时器超时时,未接收到处理器发送的喂狗信号,则指示处理器尝试执行第一恢复处理;若在处理器执行第一恢复处理的时长达到第一时长时,未接收到处理器发送的喂狗信号,则指示处理器尝试执行第二恢复处理;第一恢复处理的优先级高于第二恢复处理的优先级;若在处理器执行第二恢复处理时,接收到处理器发送的喂狗信号,则向处理器发送状态恢复信号并重启看门狗定时器;状态恢复信号用于指示处理器进入正常运行状态。
或者实现如下步骤:在看门狗定时器启动后,若在看门狗定时器超时时,未向看门狗电路发送喂狗信号,则接收到看门狗电路的指示后,尝试执行第一恢复处理;若执行第一恢复处理的时长达到第一时长时,未向看门狗电路发送喂狗信号,则接收到看门狗电路的指示后,尝试执行第二恢复处理;第一恢复处理的优先级高于第二恢复处理的优先级;若在第二恢复处理时,恢复向看门狗电路发送喂狗信号,则接收到看门狗电路发送的状态恢复信号后,进入正常运行状态。
在一个实施例中,前述计算机程序被处理器执行时还可以实现上述各实施例中处理器死机恢复方法的各增加步骤或子步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。