基于Linux的软件异常处理系统及方法

文档序号:9672995阅读:284来源:国知局
基于Linux的软件异常处理系统及方法
【技术领域】
[0001]本发明涉及一种软件异常处理系统,特别是涉及一种基于Linux的软件异常处理系统及方法。
【背景技术】
[0002]随着科技的迅猛发展,现代化计算机技术的更是日新月异的快速发展,CPU早已迈入了多核时代,操作系统也已经最大程度地支持多执行流程并行运行,但是,众所周知传统的应用程序至今仍然是基于单处理流程设计的,软件异常系统更是如此,并没有充分利用前述多核CPU所带来的性能上的提升。
[0003]S卩,传统应用程序是基于单处理流程设计,操作系统的软件异常系统也是单处理流程的,异常处理代码与应用程序代码在同一个流程中运行会损害高速缓存,因而并没能充分利用多核CHJ所带来的性能提升。
[0004]鉴于上述问题的存在,一种新的、便捷而有效的改善软件异常处理的方法和系统的发明是势在必行的,以此可以充分利用前述多核CHJ所带来的性能上的提升。

【发明内容】

[0005]鉴于以上所述现有技术的缺点,本发明的目的在于提供一种异常处理代码在独立的执行流程中运行,以此充分利用多核CPU的优势,同时可以有效避免污染应用程序的高速缓存。
[0006]为实现上述目的及其他相关目的,本发明提供一种基于Linux的软件异常处理系统,其至少包括:
[0007]异常分析模块,检测系统异常时对所述异常进行分析并将分析后的异常节点存放在异常节点表中;
[0008]异常处理模块,开启新的运行于实时优先级的异常处理流程运行异常处理系统,设置各种异常处理函数形成异常处理函数表;异常处理流程从所述异常分析模块的异常节点表中取得异常节点后,查找所述异常处理函数表,并调用执行异常处理函数。
[0009]于本发明的一实施例中,所述的基于Linux的软件异常处理系统,所述异常处理函数表是由用户根据自身需求设置的。
[0010]于本发明的一实施例中,所述的基于Linux的软件异常处理系统,其所述异常处理函数将异常按严重程度分为三类,即第一类异常、第二类异常和第三类异常;所述异常处理函数首先获取异常类型,然后对不同异常做不同的处理,与系统相关的操作由内核进行,需要根据用户需求而变化的操作,提交给异常处理流程。
[0011]于本发明的一实施例中,所述的基于Linux的软件异常处理系统,其所述第一类异常与当前应用程序高度关联,并且已经或即将破坏应用程序的数据,因此必须终止当前应用程序;
[0012]所述第二类异常与当前应用程序相关联,需唤醒相关的睡眠应用程序,并以出错的形式返回,相关的代码检查到这个出错退出后,选择退出应用程序或重新执行系统调用,然后把异常放在异常节点表中;
[0013]所述第三类异常与当前应用程序无关,只是刚好发生应用程序运行时,因此可以直接把异常放在异常节点表。
[0014]于本发明的一实施例中,所述的基于Linux的软件异常处理系统,其所述异常处理流程循环处理异常节点表中的节点,首先取出异常节点,再由查找对应的异常处理函数,然后运行查找到的函数。
[0015]为实现上述目的及其他相关目的,本发明还提供一种基于Linux的软件异常处理方法,其至少包括如下步骤:
[0016]检测系统异常时对所述异常进行分析并将分析后的异常节点存放在异常节点表中;
[0017]在系统运行应用程序前,开启新的运行于实时优先级的异常处理流程运行异常处理系统,设置各种异常处理函数形成异常处理函数表;异常处理流程从所述异常节点表中取得异常节点后,查找所述异常处理函数表,并调用执行异常处理函数。
[0018]于本发明的一实施例中,所述的基于Linux的软件异常处理方法,其所述异常处理函数表是由用户根据自身需求设置的。
[0019]于本发明的一实施例中,所述的基于Linux的软件异常处理方法,其所述异常处理函数将异常按严重程度分为三类,即第一类异常、第二类异常和第三类异常;所述异常处理函数首先获取异常类型,然后对不同异常做不同的处理,与系统相关的操作由内核进行,需要根据用户需求而变化的操作,提交给异常处理流程。
[0020]于本发明的一实施例中,所述的基于Linux的软件异常处理方法,其所述第一类异常与当前应用程序高度关联,并且已经或即将破坏应用程序的数据,因此必须终止当前应用程序;
[0021 ]所述第二类异常与当前应用程序相关联,需唤醒相关的睡眠应用程序,并以出错的形式返回,相关的代码检查到这个出错退出后,选择退出应用程序或重新执行系统调用,然后把异常放在异常节点表中;
[0022]所述第三类异常与当前应用程序无关,只是刚好发生应用程序运行时,因此可以直接把异常放在异常节点表。
[0023]于本发明的一实施例中,所述的基于Linux的软件异常处理方法,其所述异常处理流程循环处理异常节点表中的节点,首先取出异常节点,再由查找对应的异常处理函数,然后运行查找到的函数。
[0024]如上所述,本发明的一种基于Linux的软件异常处理系统及方法,具有以下有益效果:
[0025]本发明通过异常处理代码在独立的执行流程中运行,在异常处理模块中启动新的执行流程处理异常,并以实时优先级运行;并且,在异常分析模块中对异常按严重程度分别处理,系统相关的操作在内核运行,应用相关的操作交由异常处理模块运行;如此,充分利用了多核CHJ的优势,同时可以有效避免污染应用程序的高速缓存。
【附图说明】
[0026]图1显示为本发明基于Linux的软件异常处理系统的框架结构示意图。
[0027]图2显示为本发明基于Linux的软件异常处理方法的异常处理函数对三种异常按严重程度分别处理的原理示意图。
[0028]图3显示为本发明基于Linux的软件异常处理方法的异常处理函数的伪代码示意图。
[0029]图4显示为本发明基于Linux的软件异常处理方法的异常处理流程的伪代码流程示意图。
[0030]元件标号说明
[0031]100 异常处理系统
[0032]101 异常分析模块
[0033]102 异常处理模块
[0034]S21-S25 步骤 S21-S25
[0035]S11-S15 步骤 S11-S15
【具体实施方式】
[0036]以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
[0037]需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0038]请参阅图1至图4所示,本发明提供一种基于Linux的软件异常处理方法及系统,本发明通过异常处理代码在独立的执行流程中运行,在异常处理模块中启动新的执行流程处理异常,并以实时优先级运行;并且,在异常分析模块中对异常按严重程度分别处理,系统相关的操作在内核运行,应用相关的操作交由异常处理模块运行;如此,充分利用了多核CHJ的优势,同时可以有效避免污染应用程序的高速缓存。
[0039]本发明提供的一种基于Linux的软件异常处理方法,在实施过程中大致包括以下执行步骤:
[0040]执行步骤S11,系统在运行应用程序前,开启一个新的执行流程,运行异常处理系统,并运行于实时优先级,保证异常事件被及时处理。
[0041]执行步骤S12,在应用程序中,用户根据自身需求设置各种异常处理函数。异常处理流程从异常分析模块取得异常节点后,会查找异常处理函数表,并调用这里设置的异常处理函数。
[0042]执行步骤S13,内核检测到异常时,调用上述异常分析模块,所述异常分析模块将分析后的结果存放在异常节点表中;
[0043]执行步骤S14,异常处理流程运行于实时优先级,如此可以保证异常事件被及时处理。当异常分析模块将异常添加到异常节点表后,系统会及时取得该异常;
[0044]执行步骤S15,查询异常处理函数表,并执行查找到的异常处理函数。所述异常处理函数表是由用户根据自身需求设置的。
[0045]参考上述处理方法的执行步骤S11-S15,当内核检测到异常事件会调用异常处理函数exp_analysis,该函数对异常事件做具体分析后,会通过exp_put_node将异常事件存放在异常节点表中,异常处理流程exp_task会具体处理该异常事件。
[0046]请参考附图2、附图3所示,其分
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1