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

文档序号:9672995阅读:来源:国知局
别是异常处理函数eXp_analySiS的原理图和伪代码图。
[0047]异常处理函数exp_analysis将异常按严重程度分为3类。即第一类异常、第二类异常和第三类异常。所述异常处理函数exp_analysis首先调用函数eXp_type获取异常类型,然后对不同异常做不同的处理,与系统相关的操作由内核通过函数abort_app或wake_up进行,需要根据用户需求而变化的操作,通过eXp_put_node提交给异常处理流程,方便用户修改异常处理方法。
[0048]所述第一类异常与当前应用程序高度关联,并且已经或即将破坏应用程序的数据,因此必须通过函数abort_app终止当前应用程序。
[0049]所述第二类异常与当前应用程序相关联,需要通过函唤醒相关的睡眠应用程序,并且应用程序的系统调用会以出错的形式返回,相关的代码检查到这个出错退出后,可以选择退出应用程序或重新执行系统调用,然后通过函数eXp_put_node把异常放在异常节点表中。
[0050]所述第三类异常与当前应用程序无关,只是刚好发生应用程序运行时,因此可以直接通过函数exp_put_node把异常放在异常节点表。
[0051]请参考图4所示,其是异常处理流程eXp_task的伪代码流程图。
[0052]所述异常处理流程exp_process循环处理异常节点表中的节点。首先通过函数exp_get_node取出异常节点,再由函数exp_get_func查找对应的异常处理函数,然后通过(*func)()运行查找到的函数。
[0053]下面是本发明方案具体实施例之一的整体实现方式,具体请参见图1所示。本发明提供的一种基于Linux的软件异常处理系统100,该异常处理系统100在整体上可以分为异常分析模块101、异常处理模块102两部分。所述异常分析模块101,开启新的运行于实时优先级的异常处理流程运行异常处理系统,设置各种异常处理函数形成异常处理函数表;异常处理流程从所述异常分析模块的异常节点表中取得异常节点后,查找所述异常处理函数表,并调用执行异常处理函数;所述异常处理模块102,检测系统异常时对所述异常进行分析并将分析后的异常节点存放在异常节点表中。
[0054]下面具体结合基于Linux的软件异常处理系统100,详细表述本发明基于Linux的软件异常处理方法的具体执行步骤:
[0055]执行步骤S21,系统在启用应用程序app_task之前,通过库函数pthread创建新的执行流程expjaskdxpjask运行于实时优先级,当异常分析模块101异常处理模块102提交异常后,异常处理流程expjask会及时运行,保证异常事件被及时处理;
[0056]执行步骤S22,应用程序app_task根据用户自身的需求,通过函数exp_set_func给各种异常设置异常处理函数。异常处理流程exp_task从异常分析模块101取得异常节点后,会查找异常处理函数表,并调用这里设置的异常处理函数;
[0057]执行步骤S23,异常分析模块101通过函数exp_analysis对函数做具体分析后,将异常通过函数exp_put_node放入异常节点表,异常处理函数exp_analysis的原理参考图2和图3。该异常节点会被异常处理流程exp_task通过函数exp_get_node取得;
[0058]执行步骤S24,异常处理流程eXp_task运行于实时优先级,可以保证异常事件被及时处理。当异常分析模块101将异常添加到异常节点表后,系统会及时通过函数eXp_get_node取得该异常;
[0059]执行步骤S25,异常处理流程exp_task取得异常节点后,会调用函数exp_get_func在异常处理函数表中查找该异常对应的异常处理函数并运行。
[0060]总之,本发明提供一种基于Linux的软件异常处理方法及系统,其通过异常处理代码在独立的执行流程中运行,在异常处理模块中启动新的执行流程处理异常,并以实时优先级运行;并且,在异常分析模块中对异常按严重程度分别处理,系统相关的操作在内核运行,应用相关的操作交由异常处理模块运行;如此,充分利用了多核CPU的优势,同时可以有效避免污染应用程序的高速缓存。
[0061]上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
【主权项】
1.一种基于Linux的软件异常处理系统,其特征在于,其至少包括: 异常分析模块,检测系统异常时对所述异常进行分析并将分析后的异常节点存放在异常节点表中; 异常处理模块,开启新的运行于实时优先级的异常处理流程运行异常处理系统,设置各种异常处理函数形成异常处理函数表;异常处理流程从所述异常分析模块的异常节点表中取得异常节点后,查找所述异常处理函数表,并调用执行异常处理函数。2.根据权利要求1所述的基于Linux的软件异常处理系统,其特征在于:所述异常处理函数表是由用户根据自身需求设置的。3.根据权利要求1所述的基于Linux的软件异常处理系统,其特征在于:所述异常处理函数将异常按严重程度分为三类,即第一类异常、第二类异常和第三类异常;所述异常处理函数首先获取异常类型,然后对不同异常做不同的处理,与系统相关的操作由内核进行,需要根据用户需求而变化的操作提交给异常处理流程。4.根据权利要求3所述的基于Linux的软件异常处理系统,其特征在于: 所述第一类异常与当前应用程序高度关联,并且已经或即将破坏应用程序的数据,必须终止当前应用程序; 所述第二类异常与当前应用程序相关联,需唤醒相关的睡眠应用程序,并以出错的形式返回,相关的代码检查到这个出错退出后,选择退出应用程序或重新执行系统调用,然后把异常放在异常节点表中; 所述第三类异常与当前应用程序无关,只是刚好发生应用程序运行时,因此直接把异常放在异常节点表。5.根据权利要求4所述的基于Linux的软件异常处理系统,其特征在于:所述异常处理流程循环处理异常节点表中的节点,首先取出异常节点,再查找对应的异常处理函数,然后运行查找到的异常处理函数。6.一种基于Linux的软件异常处理方法,其特征在于,其至少包括如下步骤: 检测系统异常时对所述异常进行分析并将分析后的异常节点存放在异常节点表中; 在系统运行应用程序前,开启新的运行于实时优先级的异常处理流程运行异常处理系统; 设置各种异常处理函数形成异常处理函数表; 异常处理流程从所述异常节点表中取得异常节点后,查找所述异常处理函数表,并调用执行异常处理函数。7.根据权利要求6所述的基于Linux的软件异常处理方法,其特征在于:所述异常处理函数表是由用户根据自身需求设置的。8.根据权利要求6所述的基于Linux的软件异常处理方法,其特征在于:所述异常处理函数将异常按严重程度分为三类,即第一类异常、第二类异常和第三类异常;所述异常处理函数首先获取异常类型,然后对不同异常做不同的处理,与系统相关的操作由内核进行,需要根据用户需求而变化的操作提交给异常处理流程。9.根据权利要求8所述的基于Linux的软件异常处理方法,其特征在于: 所述第一类异常与当前应用程序高度关联,并且已经或即将破坏应用程序的数据,必须终止当前应用程序; 所述第二类异常与当前应用程序相关联,需唤醒相关的睡眠应用程序,并以出错的形式返回,相关的代码检查到这个出错退出后,选择退出应用程序或重新执行系统调用,然后把异常放在异常节点表中; 所述第三类异常与当前应用程序无关,只是刚好发生应用程序运行时,因此直接把异常放在异常节点表。10.根据权利要求9所述的基于Linux的软件异常处理方法,其特征在于:所述异常处理流程循环处理异常节点表中的节点,首先取出异常节点,再查找对应的异常处理函数,然后运行查找到的异常处理函数。
【专利摘要】本发明提供一种基于Linux的软件异常处理系统及方法,所述系统包括:异常分析模块,检测系统异常时对所述异常进行分析并将分析后的异常节点存放在异常节点表中;异常处理模块,开启新的运行于实时优先级的异常处理流程运行异常处理系统,设置各种异常处理函数形成异常处理函数表;异常处理流程从所述异常分析模块的异常节点表中取得异常节点后,查找所述异常处理函数表,并调用执行异常处理函数。本发明通过异常处理代码在独立的执行流程中运行,在异常处理模块中启动新的执行流程处理异常,并以实时优先级运行;并且,充分利用了多核CPU的优势,有效避免污染应用程序的高速缓存。
【IPC分类】G06F11/07
【公开号】CN105446822
【申请号】CN201510779683
【发明人】黄金钰
【申请人】上海斐讯数据通信技术有限公司
【公开日】2016年3月30日
【申请日】2015年11月13日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1