一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种Linux系统中的看门狗喂狗方法及系统与流程

2023-02-02 01:06:02 来源:中国专利 TAG:

一种linux系统中的看门狗喂狗方法及系统
技术领域
1.本发明属于linux系统异常防护技术领域,涉及一种linux系统中的看门狗喂狗方法及系统。


背景技术:

2.看门狗是为了保证系统正常运行,或者从死循环,死锁等异常状态退出的一种机制,主要是用来监测单片机运行状态和解决程序引起的故障。看门狗分硬件看门狗和软件看门狗。硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称“喂狗”),因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果程序出现故障,不在定时周期内复位看门狗,就使得看门狗定时器溢出产生复位信号并重启系统。软件看门狗原理上一样,只是将硬件电路上的定时器用处理器的内部定时器代替,这样可以简化硬件电路设计,但在可靠性方面不如硬件定时器,比如系统内部定时器自身发生故障就无法检测到。
3.传统的linux外部看门狗gpio喂狗方法,通常只是在一个应用线程或者中断中实现硬件喂狗,没有对linux的smp的每个core监控、喂狗超时事件记录,以及出现系统异常后的处理等。


技术实现要素:

4.为解决现有技术中存在的不足,本发明提供一种linux系统中的看门狗喂狗方法及系统,作用于linux应用和系统的异常防护,主要应用于嵌入式cpu板卡。通过监视每个cpu核的喂狗线程实现linux系统更全面的故障监控;通过硬件喂狗中断传递cpu核间迁移和动态调整喂狗周期,更好的保证linux系统负载均衡;通过系统异常的外部硬件看门狗切换,有效记录异常事件和支持异常内核转储;提高了linux嵌入式板卡的运行可靠性和故障事件回溯性。
5.本发明采用如下技术方案:
6.一种linux系统中的看门狗喂狗方法,所述linux系统包括linux应用模块、linux内核模块和外部看门狗模块;其中,linux内核模块包括喂狗线程管理单元和中断管理单元;外部看门狗模块包括快速看门狗和慢速看门狗,linux系统中的cpu核同时连接快速看门狗和慢速看门狗;所述方法包括以下步骤:
7.步骤1:linux应用模块通过多个实时线程绑定cpu核并软件喂狗,与喂狗线程管理单元交互;
8.步骤2:喂狗线程管理单元监测每个cpu核喂狗线程状态,包括cpu占用率是否超过阈值、喂狗线程是否阻塞或退出以及喂狗线程调度是否超时;
9.步骤3:cpu占用率超过阈值时,中断管理单元进行喂狗定时器的核间迁移以及喂狗周期的调整;
10.步骤4:喂狗线程阻塞或退出以及喂狗线程调度超时时,记录事件并停止喂狗,以
触发看门狗复位;
11.步骤5:linux内核异常时,中断管理单元进行看门狗电路切换,由快速看门狗切换到慢速看门狗。
12.本发明进一步包括以下优选方案:
13.优选地,cpu核通过2个gpio口同时连接快速看门狗和慢速看门狗,linux系统正常运行时使能并喂狗快速看门狗,禁用慢速看门狗;
14.其中,快速看门狗采用1.3s超时复位时长,慢速看门狗采用30s-60s可配的超时复位时长。
15.优选地,所述中断管理单元管理每个cpu核的看门狗中断定时器,同一时刻只让一个cpu核的看门狗中断定时器工作。
16.优选地,步骤1中,应用模块为每个cpu核开启一个实时喂狗线程,线程与cpu核绑定;每个喂狗线程与喂狗线程管理单元交互,喂狗线程管理监控每个cpu核的喂狗状态。
17.优选地,步骤3所述喂狗定时器的核间迁移以及喂狗周期的调整具体为:
18.选择cpu占用率最低的cpu核,以切换到该cpu核的定时器喂狗,根据新切换的cpu核的cpu占用率确定新切换cpu核定时器的喂狗周期,具体关系式为:
[0019][0020]
其中,t
wdi
为新切换cpu核定时器的喂狗周期,即gpio的实际喂狗周期;
[0021]
p
cpu
为新切换的cpu核的cpu占用率;
[0022]
t0为看门狗的超时复位时长。
[0023]
优选地,步骤4中,喂狗线程管理单元检测出应用喂狗线程阻塞或退出时,表示应用喂狗状态异常,则中断管理单元将应用程序异常事件记录在外部存储器的存储区域,然后停止喂狗动作以触发看门狗复位。
[0024]
优选地,步骤4中,喂狗线程管理单元检测出应用喂狗线程调度超时,表示该线程所在的cpu核死锁,则中断管理单元将cpu核死锁事件记录在外部存储器的存储区域,然后停止喂狗动作以触发看门狗复位。
[0025]
优选地,步骤4还包括:系统reboot重启时,中断管理单元在看门狗延时t1时间后强制进行看门狗复位。
[0026]
优选地,步骤5中,linux内核异常时,内核喂狗模块切换喂狗电路到慢速看门狗,然后进行异常日志收集和内存转储。
[0027]
一种运行上述看门狗喂狗方法的linux系统,所述linux系统包括linux应用模块、linux内核模块和外部看门狗模块;
[0028]
其中,linux内核模块包括喂狗线程管理单元和中断管理单元;
[0029]
外部看门狗模块包括快速看门狗和慢速看门狗,linux系统中的cpu核同时连接快速看门狗和慢速看门狗;
[0030]
所述linux应用模块与喂狗线程管理单元交互,用于通过多个实时线程绑定cpu核
并软件喂狗;
[0031]
所述喂狗线程管理单元,用于监测每个cpu核喂狗线程状态,包括cpu占用率是否超过阈值、喂狗线程是否阻塞或退出以及喂狗线程调度是否超时;
[0032]
所述中断管理单元,用于在cpu占用率超过阈值时,进行喂狗定时器的核间迁移以及喂狗周期的调整;喂狗线程阻塞或退出以及喂狗线程调度超时时,记录事件并停止喂狗,以触发看门狗复位;在linux内核异常时进行看门狗电路切换,由快速看门狗切换到慢速看门狗。
[0033]
本发明的有益效果在于,与现有技术相比,通过linux的多核线程绑定cpu喂狗,实现对每个cpu核监控;通过定时器喂狗中断的核间迁移和喂狗周期调整,实现了系统的负载均衡;通过慢速看门狗切换,为系统异常日志转储和异常处理提供了充裕时间。本发明适用于通用的带外部看门狗模块的linux系统的嵌入式板卡,兼顾看门狗对系统的监测力度和异常处理能力,可有效提高linux嵌入式板卡的运行可靠性和故障事件回溯性。
附图说明
[0034]
图1是本发明linux系统中的看门狗喂狗原理图。
具体实施方式
[0035]
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明的技术方案进行清楚、完整地描述。本技术所描述的实施例仅仅是本发明一部分的实施例,而不是全部实施例。基于本发明精神,本领域普通技术人员在没有作出创造性劳动前提下所获得的有所其它实施例,都属于本发明的保护范围。
[0036]
如图1所示,本发明的实施例1提供了一种linux系统中的看门狗喂狗方法,在本发明优选但非限制性的实施方式中,所述linux系统包括linux应用模块、linux内核模块和外部看门狗模块;其中,linux内核模块包括喂狗线程管理单元和中断管理单元;外部看门狗模块包括快速看门狗和慢速看门狗,linux系统中的cpu核同时连接快速看门狗和慢速看门狗;
[0037]
进一步优选地,cpu核通过2个gpio口同时连接快速看门狗和慢速看门狗,linux系统正常运行时使能并喂狗快速看门狗,禁用慢速看门狗;linux系统正常运行时使能并喂狗快速看门狗,禁用慢速看门狗,
[0038]
其中,快速看门狗采用1.3s超时复位时长,慢速看门狗采用30s-60s可配的超时复位时长。
[0039]
所述中断管理单元管理每个cpu核的看门狗中断定时器,同一时刻只让一个cpu核的看门狗中断定时器工作;
[0040]
即每个cpu核绑定一个定时器,同一时间只存在一个定时器中断函数中通过gpio方式喂外部的快速看门狗电路或慢速看门狗电路;
[0041]
所述linux系统中的看门狗喂狗方法包括以下步骤:
[0042]
步骤1:linux应用模块通过多实时线程绑定cpu核并软件喂狗,与喂狗线程管理单元交互;
[0043]
此时linux用户态进程中每个cpu核绑定一个实时线程,几个实时线程同时软件喂
狗linux内核模块;
[0044]
应用模块为每个cpu核开启一个实时喂狗线程,线程与cpu核绑定;
[0045]
每个喂狗线程与喂狗线程管理单元交互,喂狗线程管理监控每个cpu核的喂狗状态。
[0046]
步骤2:喂狗线程管理单元监测每个cpu核喂狗线程状态,包括cpu占用率是否超过阈值、喂狗线程是否阻塞或退出以及喂狗线程调度是否超时;
[0047]
步骤3:cpu占用率超过阈值时,中断管理单元进行喂狗定时器的核间迁移以及喂狗周期的调整;
[0048]
进一步优选地,当前cpu核负载超过阈值,喂狗线程管理单元会通知中断管理单元,以迁移喂狗定时器到其他cpu核,并且根据cpu核负载情况来调整硬件喂狗周期。
[0049]
所述喂狗定时器的核间迁移以及喂狗周期的调整具体为:
[0050]
选择cpu占用率最低的cpu核,以切换到该cpu核的定时器喂狗,根据新切换的cpu核的cpu占用率确定新切换cpu核定时器的喂狗周期:
[0051][0052]
其中,t
wdi
为新切换cpu核定时器的喂狗周期,即gpio的实际喂狗周期;
[0053]
p
cpu
为新切换的cpu核的cpu占用率;
[0054]
t0为看门狗的超时复位时长。
[0055]
步骤4:喂狗线程阻塞或退出以及喂狗线程调度超时时,中断管理单元记录事件并停止喂狗,以触发看门狗复位;
[0056]
进一步优选地,喂狗线程管理单元检测出应用喂狗线程阻塞或退出时,表示应用喂狗状态异常,所有喂狗线程退出,则中断管理单元将应用程序异常退出事件记录在外部存储器的存储区域,然后停止喂狗动作以触发系统复位。
[0057]
喂狗线程管理单元检测出应用喂狗线程调度超时,表示该线程所在的cpu核死锁,则中断管理单元将cpu核死锁事件记录在外部存储器的存储区域,然后停止喂狗动作以触发系统复位。
[0058]
另外,系统reboot重启时,中断管理单元在看门狗延时t1时间后强制进行看门狗复位。
[0059]
因而,总结看门狗复位的触发条件包括:
[0060]
1、应用喂狗状态异常,导致所有喂狗线程退出,表现为应用喂狗线程阻塞或退出:
[0061]
中断管理单元将应用程序异常退出事件记录在外部存储器的存储区域,然后停止喂狗动作以触发系统复位;
[0062]
2、某个cpu核死锁,表现为应用喂狗线程调度超时:
[0063]
某个cpu应用喂狗线程调度超时,中断管理单元将cpu死锁事件记录在外部存储器的存储区域,然后停止喂狗动作以触发系统复位。
[0064]
3、系统reboot(重启)
[0065]
系统reboot的时候,中断管理单元提供看门狗延时t1时间后强制看门狗复位功能,以防止reboot阻塞;
[0066]
上述1-3对应于复位事件:事件1)、所有cpu核喂狗线程超时喂狗(应用异常),记录发生事件到外部存储器中并立即停止硬件喂狗;事件2)、某个cpu核喂狗线程超时喂狗(cpu核死锁);事件3)、系统reboot重启。
[0067]
步骤5:若linux内核异常,则中断管理单元切换外部喂狗电路至慢速看门狗。
[0068]
进一步优选地,linux内核异常时,内核喂狗模块切换到外部看门狗模块的慢速喂狗电路,然后进行异常日志收集和内存转储。
[0069]
linux内核异常挂死:内核喂狗模块切换到外部看门狗模块的慢速喂狗电路1,然后进行异常日志收集和内存转储,即linux系统异常死机时,异常处理中切换到慢速看门狗,留存足够的时间让系统完成异常日志记录和系统内存转储等异常处理。即linux内核异常时,中断管理单元切换到外部看门狗模块的看门狗电路1,在看门狗电路1的喂狗周期t2时间内完成系统异常日志记录和内核内存转储,将该异常事件记录在外部存储器的存储区域。
[0070]
如图1所示,本发明的实施例2提供了一种运行所述看门狗喂狗方法的linux系统,所述linux系统包括linux应用模块、linux内核模块和外部看门狗模块;
[0071]
其中,linux内核模块包括喂狗线程管理单元和中断管理单元;
[0072]
外部看门狗模块包括快速看门狗和慢速看门狗,linux系统中的cpu核同时连接快速看门狗和慢速看门狗;
[0073]
所述linux应用模块与喂狗线程管理单元交互,用于通过多个实时线程绑定cpu核并软件喂狗;
[0074]
所述喂狗线程管理单元,用于监测每个cpu核喂狗线程状态,包括cpu占用率是否超过阈值、喂狗线程是否阻塞或退出以及喂狗线程调度是否超时;
[0075]
所述中断管理单元,用于在cpu占用率超过阈值时,进行喂狗定时器的核间迁移以及喂狗周期的调整;喂狗线程阻塞或退出以及喂狗线程调度超时时,记录事件并停止喂狗,以触发看门狗复位;在linux内核异常时进行看门狗电路切换,由快速看门狗切换到慢速看门狗。
[0076]
本发明的有益效果在于,与现有技术相比,通过linux的多核线程绑定cpu喂狗,实现对每个cpu核监控;通过定时器喂狗中断的核间迁移和喂狗周期调整,实现了系统的负载均衡;通过慢速看门狗切换,为系统异常日志转储和异常处理提供了充裕时间。本发明适用于通用的带外部看门狗模块的linux系统的嵌入式板卡,兼顾看门狗对系统的监测力度和异常处理能力,可有效提高linux嵌入式板卡的运行可靠性和故障事件回溯性。
[0077]
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
[0078]
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式
压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过波导或其它传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0079]
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0080]
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c 等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
[0081]
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0082]
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0083]
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0084]
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代
表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0085]
最后应当说明的是,以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献