CN109144873A - 一种linux内核处理方法及装置 - Google Patents
一种linux内核处理方法及装置 Download PDFInfo
- Publication number
- CN109144873A CN109144873A CN201810962131.6A CN201810962131A CN109144873A CN 109144873 A CN109144873 A CN 109144873A CN 201810962131 A CN201810962131 A CN 201810962131A CN 109144873 A CN109144873 A CN 109144873A
- Authority
- CN
- China
- Prior art keywords
- linux kernel
- nmi
- response
- kernel
- predetermined registration
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了一种linux内核处理方法及装置,通过获取不可屏蔽中断NMI,响应于该中断,获取linux内核的调试信息,和/或,响应于该中断,对linux内核执行预设操作。由于NMI是处理器不能屏蔽的中断,在内核态的代码出现故障导致系统异常时,处理器依然可以获取到NMI中断,响应于该NMI,处理器可以获取linux内核的调试信息和/或对linux内核执行预设操作。其中,通过对linux内核的调试信息进行分析可以得到对内核态代码的调试方式,以便实现对内核态代码的调试,通过对linux内核执行预设操作可以实现对linux内核的调整,以便缓解代码故障对linux内核的影响,有利于调试信息的获取及内核态代码的调试,提高linux内核运行的稳定性。
Description
技术领域
本申请涉及计算机应用技术领域,尤其涉及一种linux内核处理方法及装置。
背景技术
在系统的开发及设备驱动开发过程中,可以对代码进行调试,这是因为代码出现故障,会导致系统中的相应部分出现问题,轻则功能无法实现,重则影响整个系统的正常运行。通过调试,可以修改代码的语法错误或逻辑错误,使修改后的代码能够投入使用。
在linux内核中子系统的开发及设备驱动开发过程中,例如对内存或块设备的开发过程中,内核态代码的故障会导致linux内核出现异常,进而对整个系统造成严重的影响,例如可能导致整个系统异常、宕机或卡死等。然而现有技术中,没有简单易用的调试工具以供内核态代码的开发调试使用,因此对内核态代码的调试效率较低,linux内核容易出现异常,linux内核运行稳定性不高。
发明内容
为了解决现有技术中对linux内核运行稳定性不高的问题,本申请实施例提供了一种linux内核处理方法及装置。
本申请实施例提供了一种linux内核处理方法,所述方法包括:
获取不可屏蔽中断NMI;
响应于所述NMI,获取linux内核的调试信息,和/或,响应于所述NMI,对所述linux内核执行预设操作。
可选的,所述响应于所述NMI,获取linux内核的调试信息,包括:
预先获取linux内核的调试信息的标识;
响应于所述NMI,根据所述linux内核的调试信息的标识,获取所述linux内核的调试信息;
所述响应于所述NMI,对所述linux内核执行预设操作,包括:
预先获取预设操作的标识;
响应于所述NMI,根据所述预设操作的标识,对所述linux内核执行预设操作。
可选的,所述调试信息包括内存和交换区信息、锁信息、核心的中央处理器CPU栈、CPU寄存器、进程的栈回溯、ftrace缓冲区和计时器信息的至少一种;所述预设操作包括重启内核、获取内核转储、向init进程外的进程发送SIGTERM/SIGKILL信号、运行OOM killer、变更实时进程为普通进程、对文件系统执行sync、对文件系统尝试只读挂载的至少一种。
可选的,所述获取不可屏蔽中断NMI,包括:
获取性能监视单元触发的不可屏蔽中断NMI。
可选的,所述响应于所述NMI,获取linux内核的调试信息,和/或,响应于所述NMI,对所述linux内核执行预设操作之前,所述方法还包括:
对所述linux内核进行状态判别;
若所述linux内核的状态为异常,则执行所述响应于所述NMI,获取所述linux内核的调试信息,和/或,响应于所述NMI,对所述linux内核执行预设操作的步骤。
可选的,所述获取不可屏蔽中断NMI,包括:
响应于用户对交互设备的中断操作,生成不可屏蔽中断NMI。
本申请实施例提供了一种linux内核处理装置,所述装置包括:
NMI获取单元,用于获取不可屏蔽中断NMI;
信息获取单元,用于响应于所述NMI,获取linux内核的调试信息;和/或,
操作执行单元,用于响应于所述NMI,对所述linux内核执行预设操作。
可选的,所述信息获取单元,包括:
第一标识获取单元,用于预先获取linux内核的调试信息的标识;
信息获取子单元,用于响应于所述NMI,根据所述linux内核的调试信息的标识,获取所述linux内核的调试信息;
所述操作执行单元,包括:
第二标识获取单元,用于预先获取预设操作的标识;
操作执行子单元,用于响应于所述NMI,根据所述预设操作的标识,对所述linux内核执行预设操作。
可选的,所述调试信息包括内存和交换区信息、锁信息、核心的中央处理器CPU栈、CPU寄存器、进程的栈回溯、ftrace缓冲区和计时器信息的至少一种;所述预设操作包括重启内核、获取内核转储、向init进程外的进程发送SIGTERM/SIGKILL信号、运行OOM killer、变更实时进程为普通进程、对文件系统执行sync、对文件系统尝试只读挂载的至少一种。
可选的,所述NMI获取单元,包括:
第一获取单元,用于获取性能监视单元触发的不可屏蔽中断NMI。
可选的,所述装置还包括:
判别单元,用于对所述linux内核进行状态判别,若所述linux内核的状态为异常,则激活所述信息获取单元和/或操作执行单元。
可选的,所述NMI获取单元,包括:
第二获取单元,用于响应于用户对交互设备的中断操作,生成不可屏蔽中断NMI。
本申请实施例提供的一种linux内核处理方法及装置,通过获取不可屏蔽中断NMI,响应于该中断,获取linux内核的调试信息,和/或,响应于该中断,对linux内核执行预设操作。由于NMI是处理器不能屏蔽的中断,在内核态的代码出现故障导致系统异常时,处理器依然可以获取到NMI中断,响应于该NMI,处理器可以获取linux内核的调试信息和/或对linux内核执行预设操作。其中,通过对linux内核的调试信息进行分析可以得到对内核态代码的调试方式,以便实现对内核态代码的调试,通过对linux内核执行预设操作可以实现对linux内核的调整,以便缓解代码故障对linux内核的影响,同时,有利于调试信息的获取及内核态代码的调试。因此,本申请实施例提供的一种linux内核处理方法及装置,可以及时获取linux内核的调试信息和/或及时对linux进行调整,提高linux内核运行的稳定性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的一种linux内核处理方法的流程图;
图2为本申请实施例提供的一种linux处理的场景;
图3为本申请实施例提供的另一种linux处理的场景;
图4为本申请实施例提供的一种linux处理装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
现有技术中,在系统的开发及设备驱动开发过程中,可以对代码进行调试,这是因为代码出现故障,会导致系统中的相应部分出现问题,轻则功能无法实现,重则影响整个系统的正常运行。通过调试,可以修改代码的语法错误或逻辑错误,使修改后的代码能够投入使用。
在linux内核系统的开发及设备驱动开发过程中,例如对内存或块设备的开发过程中,内核态代码的故障会对整个系统造成严重的影响,例如可能导致整个系统异常、宕机或卡死等。现有技术中,linux内核本身提供HACK项,可以获取linux内核的调试信息,通过对linux的调试信息进行分析,可以得到对内核态代码的调试方式。然而,通过HACK项较繁重,需要占用大量的系统资源,进而影响处理器的业务性能,因此不适合在生产环境中长期开启;此外,在内核态代码出现故障导致系统异常时,可能来不及获取调试信息以供分析。
因此,现有技术中,没有简单易用的调试工具以供内核态代码的开发调试使用,因此对内核态代码的调试效率较低,同时,对linux内核的调试信息的获取效率较低,进一步降低了对内核态代码的调试效率,使linux内核容易出现异常,linux内核运行稳定性不高。
为了解决上述技术问题,本申请实施例提供了一种linux内核处理方法及装置,通过获取不可屏蔽中断NMI,响应于该中断,获取linux内核的调试信息,和/或,响应于该中断,对linux内核执行预设操作。由于NMI是处理器不能屏蔽的中断,在内核态的代码出现故障导致系统异常时,处理器依然可以获取到NMI中断,响应于该NMI,处理器可以获取linux内核的调试信息和/或对linux内核执行预设操作。其中,通过对linux内核的调试信息进行分析可以得到对内核态代码的调试方式,以便实现对内核态代码的调试,通过对linux内核执行预设操作可以实现对linux内核的调整,以便缓解代码故障对linux内核的影响,同时,有利于调试信息的获取及内核态代码的调试。因此,本申请实施例提供的一种linux内核处理方法及装置,可以及时获取linux内核的调试信息和/或及时对linux进行调整,提高linux内核运行的稳定性。
参见图1,该图为本申请实施例提供的一种linux内核处理方法的流程图,包括以下步骤。
S101,获取不可屏蔽中断NMI。
中断是指计算机在运行过程中,出现某些意外情况需要处理器进行处理时,处理器停止部分或全部正在运行的程序并转入待处理情况的程序,处理完毕后返回原被暂停的程序。因此,对于处理器而言,程序的正常执行流程随时可能被中断服务打断,如果程序正在进行重要运算,中断服务程序的插入可能造成程序的运行发生错误。因此,处理器可以对一些中断服务进行屏蔽,而不可屏蔽中断(Non Maskable Interrupt,NMI)为处理器不可屏蔽的中断,即处理器在接收到NMI后,需要立即转入待处理情况的程序。
在本申请实施例中,处理器获取NMI,可以具体为:获取性能监视单元(Performance Monitoring Unit,PMU)产生的NMI。具体的,PMU可以定期触发中断NMI。
在本申请实施例中,处理器获取NMI,也可以具体为:响应于用户对交互设备的中断操作,生成不可屏蔽中断NMI,交互设备可以是键盘等,中断操作可以是键盘的组合键。
可以理解的是,为了避免在用户对交互设备进行中断操作时,处理器出现不响应中断或抢占系统卡死的问题,可以提前对处理器核心进行绑定,处理器可以分为调试核心和非调试核心,调试核心用于响应用户对交互设备的中断操作,并生成NMI,非调试核心可以用于运行待调试模块或子系统相关进程。具体实现时,可以将待调试模块或子系统相关进程和中断号绑定到非调试核心,或将其他已注册中断和进行绑定到非调试核心,将键盘、串口、终端相关进行和中断号等绑定到调试核心,防止其他进行抢占调试核心。具体的,可以通过用户态守护进程监控进行和中断绑定情况,实现对进程和中断进行绑定。
在获取NMI后,可以执行S102和/或S103,执行S102和S103中的其中一种还是两种,可以根据用户预先的设定确定。
S102,响应于NMI,获取linux内核的调试信息。
处理器响应于NMI,可以获取linux内核的调试信息,调试信息可以包括内存和交换区信息、锁信息、中央处理器CPU栈、CPU寄存器、进程的栈回溯、ftrace缓冲区和计时器信息等通用信息的至少一种,当然,调试信息也可以是其他自定义信息。具体的,前述的CPU栈和CPU寄存器可以是所有核心的CPU栈和CPU寄存器,进程的栈回溯可以是所有进程的栈回溯,计时器信息可以是所有计时器信息。对调试信息的分析,可以得到linux内核的状态,例如通过内存信息可以判断系统是否发生内存溢出(Out of Memory,OOM)。
作为一种可能的实现方式,为了更准确的获取调试信息,可以按照一定的顺序对调试信息进行获取。具体的,可以先获取自定义信息,再获取通用信息,其中,自定义信息可以的获取顺序可以预先设定,对于一项自定义信息,可以按照自定义信息、执行次数、间隔的顺序获取;通用信息的获取顺序可以为:内存和交互区信息、cpu栈和cpu寄存器、锁信息、计时器信息、进程栈回溯、ftrace缓冲区等。
在获取linux内核的调试信息之前,还可以预先获取linux内核的调试信息的标识,从而根据调试信息的标识,获取对应的调试信息。其中,调试信息的标识可以通过用户选择确定。举例来说,用户可以选择获取内存信息,则处理器可以根据用户的选择,获取内存信息的标识,从而根据内存信息的标识,获取对应的内存信息。
在获取linux内核的调试信息之前,还可以确定获取调试信息的次数和时间间隔,例如可以每隔1分钟获取一次,共获取5次。
在获取linux内核的调试信息之前,还可以对linux内核进行状态判别,若linux内核的状态为异常,则执行获取linux内核的调试信息的动作。linux内核的状态为异常,可以包括OOM、soft&hard lockup或D状态死锁等,具体的,可以通过查看内存信息判断是否发生OOM,通过查看时钟技术判断是否发生soft&hard lockup,通过判断HUNG进程信息判断是否发生D状态死锁等。
在获取linux内核的调试信息后,可以输出该调试信息。具体的,可以按照一定的顺序输出,调试信息的输出顺序可以和调试信息的获取顺序一致,也可以和调试信息的获取顺序不一致,在此不做限定。
本申请实施例中,通过获取不可屏蔽中断NMI,响应于该中断,获取linux内核的调试信息。由于NMI是处理器不能屏蔽的中断,在内核态的代码出现故障导致系统异常时,处理器依然可以获取到NMI中断,响应于该NMI,处理器可以获取linux内核的调试信息,通过对linux内核的调试信息进行分析得到对内核态代码的调试方式,以便实现对内核态代码的调试,提高linux内核运行的稳定性。
S103,响应于NMI,对linux内核执行预设操作。
处理器响应于NMI,可以对linux内核执行预设操作,预设操作可以是重启内核、获取内核转储、向init进程外的进程发送SIGTERM/SIGKILL信号、运行OOM killer、变更实时进程为普通进程、对文件系统执行sync、对文件系统尝试只读挂载等通用操作的至少一种,当然,预设操作也可以是其他自定义操作。具体的,变更实时进程为普通进程可以是变更所有实时进程为普通进程,对文件系统执行sync可以是对所有文件系统执行sync,对文件系统尝试只读挂载可以是对所有文件系统尝试只读挂载。对linux内核进行预设操作,可以缓解内核态代码故障对系统的影响,例如变更实时进程为普通进程,可以降低进程对资源的占用。
作为一种可能的实现方式,为了有效的对linux内核执行预设操作,可以按照一定的顺序对linux内核执行预设操作。具体的,可以先对linux内核执行自定义操作,再对linux内核执行通用操作。
在对linux内核执行预设操作之前,还可以预先获取预设操作的标识,从而根据预设操作的标识,对linux内核执行预设操作。其中,预设操作的标识可以通过用户选择确定。举例来说,用户可以选择执行重启内核的操作,则处理器可以根据用户的选择,获取重启内核的操作标识,从而根据重启内核的操作标识,对linux内核执行相应的预设操作。
在对linux内核执行预设操作之前,还可以确定对linux内核进行预设操作的次数和时间间隔,例如可以每隔1分组执行一次预设操作,共执行5次预设操作。
在对linux内核执行预设操作之前,还可以对linux内核进行状态判别,若linux内核的状态为异常,则对linux内核执行预设操作。linux内核的状态为异常,可以包括OOM、soft&hard lockup或D状态死锁等,具体的,可以通过查看内存信息判断是否发生OOM,通过查看时钟技术判断是否发生soft&hard lockup,通过判断HUNG进程信息判断是否发生D状态死锁等。
本申请实施例中,通过获取不可屏蔽中断NMI,响应于该中断,对linux内核执行预设操作。由于NMI是处理器不能屏蔽的中断,在内核态的代码出现故障导致系统异常时,处理器依然可以获取到NMI中断,响应于该NMI,处理器可以对linux内核执行预设操作,通过对linux内核执行预设操作可以实现对linux内核的调整,以便缓解代码故障对linux内核的影响,同时,有利于调试信息的获取及内核态代码的调试,提高linux内核运行的稳定性。
为了便于理解,下面结合具体场景,对上述linux内核处理方法进行解释说明:
场景一:
参考图2所示,处理器预先获取linux内核的调试信息的标识和预设操作的标识,其中调试信息的标识和预设操作的标识可以通过用户选择确定,例如用户可以在界面中对调试信息和预设操作进行选择。
处理器获取性能监视单元产生的NMI,对linux内核进行状态判别,若linux内核的状态为异常,则执行获取linux内核的调试信息和对linux内核执行预设操作的动作。在获取linux内核的调试信息后,处理器还可以输出获取到的调试信息,对调试信息的输出具有一定的顺序。
具体的,处理器可以在响应NMI后,对linux内核进行状态判别,若linux内核的状态为异常,则输出自定义信息、输出调试信息、执行自定义操作和执行预设操作。
场景二:
参考图3所示,为了避免在用户对交互设备进行中断操作时,处理器出现不响应中断或抢占系统卡死的问题,可以提前对处理器核心进行绑定,处理器可以分为调试核心和非调试核心,调试核心用于响应用户对交互设备的中断操作,并生成NMI,非调试核心可以用于运行待调试模块或子系统相关进程。具体实现时,可以将待调试模块或子系统相关进程和中断号绑定到非调试核心,或将其他已注册中断和进行绑定到非调试核心,将键盘、串口、终端相关进行和中断号等绑定到调试核心,防止其他进行抢占调试核心。
在用户察觉系统存在异常时,可以通过键盘等交互设备触发中断操作,调试核心可以根据用户的中断操作生成NMI,并执行获取linux内核的调试信息和对linux内核执行预设操作的动作。在获取linux内核的调试信息后,处理器还可以输出获取到的调试信息,对调试信息的输出具有一定的顺序。
具体的,处理器可以在响应NMI后,输出自定义信息、输出调试信息、执行自定义操作和执行预设操作。
基于以上实施例提供的一种linux内核处理方法,本申请实施例还提供了一种linux内核处理装置,下面结合附图来详细说明其工作原理。
参见图4,该图为本申请实施例提供的一种linux内核处理装置的结构框图,该装置包括:
NMI获取单元110,用于获取不可屏蔽中断NMI;
信息获取单元120,用于响应于所述NMI,获取linux内核的调试信息;和/或,
操作执行单元130,用于响应于所述NMI,对所述linux内核执行预设操作。
可选的,所述信息获取单元,包括:
第一标识获取单元,用于预先获取linux内核的调试信息的标识;
信息获取子单元,用于响应于所述NMI,根据所述linux内核的调试信息的标识,获取所述linux内核的调试信息;
所述操作执行单元,包括:
第二标识获取单元,用于预先获取预设操作的标识;
操作执行子单元,用于响应于所述NMI,根据所述预设操作的标识,对所述linux内核执行预设操作。
可选的,所述调试信息包括内存和交换区信息、锁信息、核心的中央处理器CPU栈、CPU寄存器、进程的栈回溯、ftrace缓冲区和计时器信息的至少一种;所述预设操作包括重启内核、获取内核转储、向init进程外的进程发送SIGTERM/SIGKILL信号、运行OOM killer、变更实时进程为普通进程、对文件系统执行sync、对文件系统尝试只读挂载的至少一种。
可选的,所述NMI获取单元,包括:
第一获取单元,用于获取性能监视单元触发的不可屏蔽中断NMI。
可选的,所述装置还包括:
判别单元,用于对所述linux内核进行状态判别,若所述linux内核的状态为异常,则激活所述信息获取单元和/或操作执行单元。
可选的,所述NMI获取单元,包括:
第二获取单元,用于响应于用户对交互设备的中断操作,生成不可屏蔽中断NMI。
本申请实施例提供的一种linux内核处理装置,通过获取不可屏蔽中断NMI,响应于该中断,获取linux内核的调试信息,和/或,响应于该中断,对linux内核执行预设操作。由于NMI是处理器不能屏蔽的中断,在内核态的代码出现故障导致系统异常时,处理器依然可以获取到NMI中断,响应于该NMI,处理器可以获取linux内核的调试信息和/或对linux内核执行预设操作。其中,通过对linux内核的调试信息进行分析可以得到对内核态代码的调试方式,以便实现对内核态代码的调试,通过对linux内核执行预设操作可以实现对linux内核的调整,以便缓解代码故障对linux内核的影响,同时,有利于调试信息的获取及内核态代码的调试。因此,本申请实施例提供的一种linux内核处理方法及装置,可以及时获取linux内核的调试信息和/或及时对linux进行调整,提高linux内核运行的稳定性。
当介绍本申请的各种实施例的元件时,冠词“一”、“一个”、“这个”和“所述”都意图表示有一个或多个元件。词语“包括”、“包含”和“具有”都是包括性的并意味着除了列出的元件之外,还可以有其它元件。
需要说明的是,本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccess Memory,RAM)等。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元及模块可以是或者也可以不是物理上分开的。另外,还可以根据实际的需要选择其中的部分或者全部单元和模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (12)
1.一种linux内核处理方法,其特征在于,所述方法包括:
获取不可屏蔽中断NMI;
响应于所述NMI,获取linux内核的调试信息,和/或,响应于所述NMI,对所述linux内核执行预设操作。
2.根据权利要求1所述的方法,其特征在于,所述响应于所述NMI,获取linux内核的调试信息,包括:
预先获取linux内核的调试信息的标识;
响应于所述NMI,根据所述linux内核的调试信息的标识,获取所述linux内核的调试信息;
所述响应于所述NMI,对所述linux内核执行预设操作,包括:
预先获取预设操作的标识;
响应于所述NMI,根据所述预设操作的标识,对所述linux内核执行预设操作。
3.根据权利要求1所述的方法,其特征在于,所述调试信息包括内存和交换区信息、锁信息、核心的中央处理器CPU栈、CPU寄存器、进程的栈回溯、ftrace缓冲区和计时器信息的至少一种;所述预设操作包括重启内核、获取内核转储、向init进程外的进程发送SIGTERM/SIGKILL信号、运行OOM killer、变更实时进程为普通进程、对文件系统执行sync、对文件系统尝试只读挂载的至少一种。
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述获取不可屏蔽中断NMI,包括:
获取性能监视单元触发的不可屏蔽中断NMI。
5.根据权利要求4所述的方法,其特征在于,所述响应于所述NMI,获取linux内核的调试信息,和/或,响应于所述NMI,对所述linux内核执行预设操作之前,所述方法还包括:
对所述linux内核进行状态判别;
若所述linux内核的状态为异常,则执行所述响应于所述NMI,获取所述linux内核的调试信息,和/或,响应于所述NMI,对所述linux内核执行预设操作的步骤。
6.根据权利要求1-3任意一项所述的方法,其特征在于,所述获取不可屏蔽中断NMI,包括:
响应于用户对交互设备的中断操作,生成不可屏蔽中断NMI。
7.一种linux内核处理装置,其特征在于,所述装置包括:
NMI获取单元,用于获取不可屏蔽中断NMI;
信息获取单元,用于响应于所述NMI,获取linux内核的调试信息;和/或,
操作执行单元,用于响应于所述NMI,对所述linux内核执行预设操作。
8.根据权利要求7所述的装置,其特征在于,
所述信息获取单元,包括:
第一标识获取单元,用于预先获取linux内核的调试信息的标识;
信息获取子单元,用于响应于所述NMI,根据所述linux内核的调试信息的标识,获取所述linux内核的调试信息;
所述操作执行单元,包括:
第二标识获取单元,用于预先获取预设操作的标识;
操作执行子单元,用于响应于所述NMI,根据所述预设操作的标识,对所述linux内核执行预设操作。
9.根据权利要求7所述的装置,其特征在于,所述调试信息包括内存和交换区信息、锁信息、核心的中央处理器CPU栈、CPU寄存器、进程的栈回溯、ftrace缓冲区和计时器信息的至少一种;所述预设操作包括重启内核、获取内核转储、向init进程外的进程发送SIGTERM/SIGKILL信号、运行OOM killer、变更实时进程为普通进程、对文件系统执行sync、对文件系统尝试只读挂载的至少一种。
10.根据权利要求7-9任意一项所述的装置,其特征在于,所述NMI获取单元,包括:
第一获取单元,用于获取性能监视单元触发的不可屏蔽中断NMI。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
判别单元,用于对所述linux内核进行状态判别,若所述linux内核的状态为异常,则激活所述信息获取单元和/或操作执行单元。
12.根据权利要求7-9任意一项所述的装置,其特征在于,所述NMI获取单元,包括:
第二获取单元,用于响应于用户对交互设备的中断操作,生成不可屏蔽中断NMI。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810962131.6A CN109144873B (zh) | 2018-08-22 | 2018-08-22 | 一种linux内核处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810962131.6A CN109144873B (zh) | 2018-08-22 | 2018-08-22 | 一种linux内核处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109144873A true CN109144873A (zh) | 2019-01-04 |
CN109144873B CN109144873B (zh) | 2022-05-06 |
Family
ID=64791082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810962131.6A Active CN109144873B (zh) | 2018-08-22 | 2018-08-22 | 一种linux内核处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109144873B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918251A (zh) * | 2019-03-20 | 2019-06-21 | 浪潮商用机器有限公司 | 处理器中断的触发方法及装置 |
CN110990229A (zh) * | 2019-12-17 | 2020-04-10 | 北京天融信网络安全技术有限公司 | 一种系统信息采集方法及装置 |
CN112383414A (zh) * | 2020-10-28 | 2021-02-19 | 北京中科网威信息技术有限公司 | 双机热备份快速切换方法及装置 |
CN112559057A (zh) * | 2020-11-17 | 2021-03-26 | 新华三技术有限公司成都分公司 | 一种关机处理方法和装置 |
CN114706708A (zh) * | 2022-05-24 | 2022-07-05 | 北京拓林思软件有限公司 | 一种用于Linux操作系统的故障分析方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1779652A (zh) * | 2004-11-24 | 2006-05-31 | 中兴通讯股份有限公司 | 一种调试操作系统内核态程序的方法及装置 |
US20120036341A1 (en) * | 2008-07-10 | 2012-02-09 | Cambridge Consultants Ltd. | Data processing apparatus, for example using modes |
CN102469474A (zh) * | 2010-11-15 | 2012-05-23 | 中兴通讯股份有限公司 | 一种通信设备异常信息的处理方法及装置 |
CN102708015A (zh) * | 2012-05-15 | 2012-10-03 | 江苏中科梦兰电子科技有限公司 | 基于cpu不可屏蔽中断系统问题诊断的调试方法 |
US20150067655A1 (en) * | 2013-08-29 | 2015-03-05 | Stmicroelectronics (Grenoble 2) Sas | Dynamic Debugging Method of a Software Module and Corresponding Device |
CN105159819A (zh) * | 2015-09-01 | 2015-12-16 | 汉柏科技有限公司 | 一种记录内核异常栈及调试信息的方法及系统 |
CN107506638A (zh) * | 2017-08-09 | 2017-12-22 | 南京大学 | 一种基于硬件机制的内核控制流异常检测方法 |
-
2018
- 2018-08-22 CN CN201810962131.6A patent/CN109144873B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1779652A (zh) * | 2004-11-24 | 2006-05-31 | 中兴通讯股份有限公司 | 一种调试操作系统内核态程序的方法及装置 |
US20120036341A1 (en) * | 2008-07-10 | 2012-02-09 | Cambridge Consultants Ltd. | Data processing apparatus, for example using modes |
CN102469474A (zh) * | 2010-11-15 | 2012-05-23 | 中兴通讯股份有限公司 | 一种通信设备异常信息的处理方法及装置 |
CN102708015A (zh) * | 2012-05-15 | 2012-10-03 | 江苏中科梦兰电子科技有限公司 | 基于cpu不可屏蔽中断系统问题诊断的调试方法 |
US20150067655A1 (en) * | 2013-08-29 | 2015-03-05 | Stmicroelectronics (Grenoble 2) Sas | Dynamic Debugging Method of a Software Module and Corresponding Device |
CN105159819A (zh) * | 2015-09-01 | 2015-12-16 | 汉柏科技有限公司 | 一种记录内核异常栈及调试信息的方法及系统 |
CN107506638A (zh) * | 2017-08-09 | 2017-12-22 | 南京大学 | 一种基于硬件机制的内核控制流异常检测方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918251A (zh) * | 2019-03-20 | 2019-06-21 | 浪潮商用机器有限公司 | 处理器中断的触发方法及装置 |
CN110990229A (zh) * | 2019-12-17 | 2020-04-10 | 北京天融信网络安全技术有限公司 | 一种系统信息采集方法及装置 |
CN110990229B (zh) * | 2019-12-17 | 2023-07-18 | 北京天融信网络安全技术有限公司 | 一种系统信息采集方法及装置 |
CN112383414A (zh) * | 2020-10-28 | 2021-02-19 | 北京中科网威信息技术有限公司 | 双机热备份快速切换方法及装置 |
CN112383414B (zh) * | 2020-10-28 | 2023-09-29 | 北京中科网威信息技术有限公司 | 双机热备份快速切换方法及装置 |
CN112559057A (zh) * | 2020-11-17 | 2021-03-26 | 新华三技术有限公司成都分公司 | 一种关机处理方法和装置 |
CN112559057B (zh) * | 2020-11-17 | 2022-05-27 | 新华三技术有限公司成都分公司 | 一种关机处理方法和装置 |
CN114706708A (zh) * | 2022-05-24 | 2022-07-05 | 北京拓林思软件有限公司 | 一种用于Linux操作系统的故障分析方法及系统 |
CN114706708B (zh) * | 2022-05-24 | 2022-08-30 | 北京拓林思软件有限公司 | 一种用于Linux操作系统的故障分析方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109144873B (zh) | 2022-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109144873A (zh) | 一种linux内核处理方法及装置 | |
EP3093768B1 (en) | Debugging systems | |
US10761966B2 (en) | Generating program analysis data for analysing the operation of a computer program | |
Randell | System structure for software fault tolerance | |
US5630049A (en) | Method and apparatus for testing software on a computer network | |
US8090989B2 (en) | System and method for bi-directional debugging of computer | |
Claessen et al. | Finding race conditions in Erlang with QuickCheck and PULSE | |
US20040268317A1 (en) | Method and apparatus for controlling execution of a child process generated by a modified parent process | |
CN102193778A (zh) | 用于生成时间戳的方法、设备和跟踪模块 | |
US8843910B1 (en) | Identifying a set of functionally distinct reorderings in a multithreaded program | |
CN101339581A (zh) | 基于中断通讯的嵌入式系统的在线调试仿真方法 | |
Fu et al. | MPISE: Symbolic execution of MPI programs | |
US9146758B2 (en) | Simultaneous probing of multiple software modules of a computer system | |
US11366740B2 (en) | Debugging shared memory errors | |
Weaver et al. | perf fuzzer: Targeted fuzzing of the perf event open () system call | |
CN102866951B (zh) | 嵌入式系统内存越界错误快速定位方法 | |
CN110516445A (zh) | 反检测恶意代码的识别方法、装置及存储介质 | |
Amani et al. | Static analysis of device drivers: we can do better! | |
CN112740187A (zh) | 调试程序的方法和系统 | |
CN106095631B (zh) | 一种基于有限状态机实现的多周期非流水线cpu动态调试方法 | |
Schuppan et al. | JVM independent replay in Java | |
US8695000B1 (en) | Data transfer protection in a multi-tasking modeling environment having a protection mechanism selected by user via user interface | |
Rajotte et al. | Real‐Time Linux Analysis Using Low‐Impact Tracer | |
EP2600252B1 (en) | System and method for debugging of computer programs | |
Hurfin et al. | Debugging tool for distributed Estelle programs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |