一种基于内核模块异常信息处理的系统及方法与流程

文档序号:14156970阅读:314来源:国知局

本发明涉及计算机技术领域,具体地说是一种实用性强的基于内核模块异常信息处理的系统及方法。



背景技术:

随着计算机技术的高速发展,数据量的剧增,计算机得到广泛的有应用。在linux系统中,计算机出现异常时,linux内核部分会记录详细的异常信息,异常就是可以打断cpu正常运行的事件,比如,外部中断、未定义的指令、软中断等。当这些异常发生时,就打断cpu的正常运行,跳到相应的异常处理程序去处理这些异常要求的一些操作。

但用户空间不能直接获取内核空间信息,因而需要捕获异常信息,并保存异常信息,增强系统宕机状态的可追溯性。但是在现在的技术方案中,没有很好的异常信息保存方法。

基于此,亟需一种内核模块异常信息处理技术,来解决该问题。



技术实现要素:

本发明的技术任务是针对以上不足之处,提供一种实用性强的基于内核模块异常信息处理的系统及方法。

一种基于内核模块异常信息处理的系统,包括:

核心模块,用于提供并注册回调函数;

异常信息收集模块,用于系统出现内核异常时收集该异常信息,并通过上述回调函数返回收集的信息,核心模块将返回的信息保存。

所述异常信息收集模块包括panic模块、死锁模块,用于根据内核异常信息的不同类型,分类收集内核异常信息。

所述核心模块与异常信息收集模块之间的通信采用内核通知链机制,相对应的,核心模块注册回调函数是通过向panic模块、死锁模块的通知链注册实现的。

在异常信息收集模块中,当内核异常发生时,核心模块的回调函数被调用,核心模块首先确定异常信息类型,根据内核错误或内核死锁调用panic模块或死锁模块收集信息,并保存异常信息。

所述内核异常的不同类型包括与panic模块对应的异常,该异常为操作系统在监测到内部的致命错误,无法安全处理此错误时采取的动作,包括外部中断、未定义的指令、软中断;与死锁模块对应的异常,即内核死锁。

一种基于内核模块异常信息处理的方法,基于上述系统,其实现过程为:首先向内核注册不同的异常信息回调函数,即通过核心模块向异常信息收集模块完成注册,然后在系统内核发生异常时,通过该回调函数获取并分类记录异常信息,信息搜集完毕后保存信息。

所述注册不同的异常信息回调函数通过异常信息收集模块中的panic模块、死锁模块实现,该panic模块、死锁模块用于根据内核异常信息的不同类型,分类收集内核异常信息。

在进行回调函数注册步骤中,核心模块与异常信息收集模块之间的通信采用内核通知链机制,即:核心模块注册回调函数是通过向panic模块、死锁模块的通知链注册实现的。

当内核异常发生时,核心模块的回调函数被调用,核心模块首先确定异常信息类型,根据内核错误或内核死锁调用panic模块或死锁模块收集信息,并保存异常信息。

分类记录异常信息的步骤是指将内核异常分为:

与panic模块对应的异常,该异常为操作系统在监测到内部的致命错误,无法安全处理此错误时采取的动作,包括外部中断、未定义的指令、软中断;

与死锁模块对应的异常,即内核死锁。

本发明的一种基于内核模块异常信息处理的系统及方法和现有技术相比,具有以下有益效果:

本发明的一种基于内核模块异常信息处理的系统及方法,通过向内核注册不同的异常信息回调函数,分类记录异常信息,信息搜集完毕后保存信息,供后续系统分析使用,解决现有技术中无法很好的保存异常信息的缺陷,实现异常信息的可追溯性,实用性强,适用范围广泛,易于推广。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

附图1是本发明的系统示意图。

附图2为本发明的方法实现流程图。

具体实施方式

为了使本技术领域的人员更好地理解本发明的方案,下面结合具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如附图1所示,一种基于内核模块异常信息处理的系统,包括:

核心模块,用于提供并注册回调函数;

异常信息收集模块,用于系统出现内核异常时收集该异常信息,并通过上述回调函数返回收集的信息,核心模块将返回的信息保存。

所述异常信息收集模块包括panic模块、死锁模块,用于根据内核异常信息的不同类型,分类收集内核异常信息。

panic模块一般是指panic()函数,是当系统发现无法继续运行下去的故障时将调用它,会导致程序中止,然后由系统显示错误号。内核的panic函数(即panic())的程序代码,就放在内核源码树里的kernel/panic.c文件中。

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

所述核心模块与异常信息收集模块之间的通信采用内核通知链机制,相对应的,核心模块注册回调函数是通过向panic模块、死锁模块的通知链注册实现的。

在异常信息收集模块中,当内核异常发生时,核心模块的回调函数被调用,核心模块首先确定异常信息类型,根据内核错误或内核死锁调用panic模块或死锁模块收集信息,并保存异常信息。

所述内核异常的不同类型包括与panic模块对应的异常,该异常为操作系统在监测到内部的致命错误,无法安全处理此错误时采取的动作,包括外部中断、未定义的指令、软中断;与死锁模块对应的异常,即内核死锁。

如附图2所示,一种基于内核模块异常信息处理的方法,基于上述系统,核心模块和内核异常场景通信采用内核通知链机制。核心模块向panic模块,死锁模块的通知链注册callback函数(notifier_call),当panic发生时,异常核心模块的callback函数被调用;异常核心模块根据异常信息类型调用panic模块或死锁模块收集信息,并保存异常信息。

具体的实现过程为:首先向内核注册不同的异常信息回调函数,即通过核心模块向异常信息收集模块完成注册,然后在系统内核发生异常时,通过该回调函数获取并分类记录异常信息,信息搜集完毕后保存信息。

所述注册不同的异常信息回调函数通过异常信息收集模块中的panic模块、死锁模块实现,该panic模块、死锁模块用于根据内核异常信息的不同类型,分类收集内核异常信息。

在进行回调函数注册步骤中,核心模块与异常信息收集模块之间的通信采用内核通知链机制,即:核心模块注册回调函数是通过向panic模块、死锁模块的通知链注册实现的。

当内核异常发生时,核心模块的回调函数被调用,核心模块首先确定异常信息类型,根据内核错误或内核死锁调用panic模块或死锁模块收集信息,并保存异常信息。

分类记录异常信息的步骤是指将内核异常分为:

与panic模块对应的异常,该异常为操作系统在监测到内部的致命错误,无法安全处理此错误时采取的动作,包括外部中断、未定义的指令、软中断;

与死锁模块对应的异常,即内核死锁。

通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1