软件异常处理系统及方法转让专利

申请号 : CN201510713896.2

文献号 : CN105354105B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李小庆

申请人 : 上海斐讯数据通信技术有限公司

摘要 :

本发明公开了一种软件异常处理系统及方法,包括异常处理模块以及异常分析模块;异常处理模块还包括;异常任务设置单元、异常任务处理单元以及异常函数表单元;异常分析模块还包括;异常分析单元以及异常节点表单元;所述异常任务设置单元分别与异常任务处理单元以及异常函数表单元连接;所述异常任务处理单元分别与异常函数表单元以及异常节点表单元连接;所述异常分析单元与异常节点表单元连接。本发明主要通过将异常任务处理单元运行在不同于应用程序运行的执行流程中的技术方案,能够实现降低高速缓存的损害以及提高CPU使用率的技术效果。

权利要求 :

1.软件异常处理系统,其特征在于,包括异常处理模块以及异常分析模块;其中,异常处理模块还包括:异常任务设置单元、异常任务处理单元以及异常函数表单元;异常分析模块还包括:异常分析单元以及异常节点表单元;

所述异常任务设置单元,用于设置异常函数表单元以及在异常任务处理单元中创建执行流程;

所述异常任务处理单元,用于获取异常节点表单元中内容并通过异常函数表单元对异常进行处理;

所述异常函数表单元,用于保存处理异常的函数;

所述异常分析单元,用于分析异常并将异常分析信息存入异常节点表单元;

所述异常节点表单元,用于保存异常分析信息;

所述异常任务设置单元分别与异常任务处理单元以及异常函数表单元连接;

所述异常任务处理单元分别与异常函数表单元以及异常节点表单元连接;所述异常分析单元与异常节点表单元连接。

2.如权利要求1所述的软件异常处理系统,其特征在于,所述异常节点表是队列式表单。

3.如权利要求1或2中任一所述的软件异常处理系统,其特征在于,所述异常函数表单元是键值对表,其中键值(key)列保存异常标号;值(value)列保存与异常标号相对应的异常处理函数。

4.软件异常处理方法,其特征在于,所述软件异常处理方法应用于如权利要求1-3中任一所述的软件异常处理系统,包括如下步骤:步骤S1:异常任务设置单元开启一个新执行流程,在该执行流程中运行异常任务处理单元,并设置执行流程优先级为实时优先级;

步骤S2:通过异常任务设置单元在异常函数表单元中设置异常处理函数;

步骤S3:异常分析单元对异常进行分析,并执行步骤S301;

异常任务处理模块对异常节点表单元进行查询,并执行步骤S302;

步骤S301:当异常发生时,异常分析单元对异常进行分析,并将异常保存进异常节点表单元;

步骤S302:异常任务处理单元查询异常节点表单元是否有异常;

当有异常时,执行步骤S30204;

当没有异常时,执行步骤S302;

步骤S30204:异常任务处理单元将异常从异常节点表单元中取出;

步骤S30205:异常任务处理单元将异常与异常函数表单元中设置的异常进行比较,并找出对应的异常处理函数;

步骤S30206:异常任务处理单元根据步骤S30205中找出的异常处理函数对异常进行处理;

步骤S30207:异常任务处理单元对异常处理完成后,执行步骤S302。

5.如权利要求4所述的软件异常处理方法,其特征在于,所述步骤S301中异常分析单元对异常进行分析包括如下步骤:步骤S30101:异常分析单元判断异常类型;

当异常属于重度异常时,则执行步骤S3010101;

当异常属于中度异常时,则执行步骤S3010102;

当异常属于轻度异常时,则执行步骤S3010103;

步骤S3010101:终止当前运行的应用程序;

步骤S3010102:唤醒和/或关闭相关应用程序,并将异常保存进异常节点表单元;

步骤S3010103:将异常保存进异常节点表单元。

说明书 :

软件异常处理系统及方法

技术领域

[0001] 本发明涉一种软件异常处理系统及方法。

背景技术

[0002] CPU早已迈入了多核时代,操作系统也已经最大程度地支持多执行流程并行运行,但是传统应用程序仍然是基于单处理流程设计的,软件异常系统更是如此,并没有充分利用多核CPU带来的性能提升。
[0003] 传统应用程序是基于单处理流程设计,操作系统的软件异常系统也是单处理流程的,异常处理代码与应用程序代码在同一个流程中运行会损害高速缓存,也没能充分利用多核CPU带来的性能提升。

发明内容

[0004] 本发明的目的是提供一种软件异常处理系统及方法,以解决异常处理代码与应用程序代码在同一个流程中运行损害高速缓存以及未充分利用多核CPU提高性能的技术问题。
[0005] 为实现以上发明目的,一方面,本发明提供一种软件异常处理系统,包括异常处理模块以及异常分析模块;其中,异常处理模块还包括;异常任务设置单元、异常任务处理单元以及异常函数表单元;异常分析模块还包括;异常分析单元以及异常节点表单元;
[0006] 所述异常任务设置单元,用于设置异常函数表单元以及在异常任务处理单元中创建执行流程;
[0007] 所述异常任务处理单元,用于获取异常节点表单元中内容并通过异常函数表单元对异常进行处理;
[0008] 所述异常函数表单元,用于保存处理异常的函数;
[0009] 所述异常分析单元,用于分析异常并将异常分析信息存入异常节点表单元;
[0010] 所述异常节点表单元,用于保存异常分析信息。
[0011] 所述异常任务设置单元分别与异常任务处理单元以及异常函数表单元连接;所述异常任务处理单元分别与异常函数表单元以及异常节点表单元连接;所述异常分析单元与异常节点表单元连接。
[0012] 进一步地,所述异常节点表是队列式表单。
[0013] 进一步地,所述异常函数表单元是键值对表,其中键值(key)列保存异常标号;值(value)列保存与异常标号相对应的异常处理函数。
[0014] 另一方面,本发明还提供了一种软件异常处理方法,包括如下步骤:
[0015] 步骤S1:异常任务设置单元开启一个新执行流程,在该执行流程中运行异常任务处理单元,并设置执行流程优先级为实时优先级;
[0016] 步骤S2:通过异常任务设置单元在异常函数表单元中设置异常处理函数;
[0017] 步骤S3:异常分析单元对异常进行分析,并执行步骤S301;
[0018] 异常任务处理模块对异常节点表单元进行查询,并执行步骤302;
[0019] 步骤S301:当异常发生时,异常分析单元对异常进行分析,并将异常保存进异常节点表单元;
[0020] 步骤S302:异常任务处理单元查询异常节点表单元是否有异常;
[0021] 当有异常时,执行不走S30205;
[0022] 当没有异常时,执行步骤S302;
[0023] 步骤S30204:异常任务处理单元将异常从异常节点表单元中取出;
[0024] 步骤S30205:异常任务处理单元将异常与异常函数表单元中设置的异常进行比较,并找出对应的异常处理函数;
[0025] 步骤S30206:异常任务处理单元根据步骤S30205中找出的异常处理函数对异常进行处理;
[0026] 步骤S30207:异常任务处理单元对异常处理完成后,执行步骤S302。
[0027] 进一步地,所述步骤S301中异常分析单元对异常进行分析包括如下步骤:
[0028] 步骤S30101:异常分析单元判断异常类型;
[0029] 当异常属于重度异常时,则执行步骤S3010101;
[0030] 当异常属于中度异常时,则执行步骤S3010102;
[0031] 当异常属于轻度异常时,则执行步骤S3010103;
[0032] 步骤S3010101:终止当前运行的应用程序;
[0033] 步骤S3010102:唤醒和/或关闭相关应用程序,并将异常保存进异常节点表单元;
[0034] 步骤S3010103:将异常保存进异常节点表单元。
[0035] 与现有技术相比,本发明的有益效果是:
[0036] 1.本发明运用新建执行流程运行异常任务处理单元,并以实时优先级运行的技术方案,获得了降低高速缓存的损害以及提高CPU使用率的技术效果。
[0037] 2.本发明运用对异常分类的技术方案,获得了系统相关的操作在核内运行,应用相关的操作交由异常处理模块运行的技术效果。

附图说明

[0038] 图1是本发明的软件异常处理系统的框图;
[0039] 图2是本发明的软件异常处理方法的流程图;
[0040] 图3是本发明的软件异常处理方法的具体实施例的流程图。
[0041] 图中,
[0042] 异常处理模块1;异常任务设置单元101、异常任务处理单元102、异常函数表单元103
[0043] 异常分析模块2;异常分析单元201、异常节点表单元202。

具体实施方式

[0044] 下面结合附图和具体实施例对本发明作进一步说明。
[0045] 具体实施例1:
[0046] 如图1所示,本发明提供了一种软件异常处理系统,包括异常处理模块1以及异常分析模块2;其中,异常处理模块1还包括;异常任务设置单元101、异常任务处理单元102以及异常函数表单元103;异常分析模块2还包括;异常分析单元201以及异常节点表单元202;
[0047] 异常任务设置单元101,用于设置异常函数表单元103以及在异常任务处理单元102中创建执行流程;
[0048] 异常任务处理单元102,用于获取异常节点表单元202中内容并通过异常函数表单元103对异常进行处理;
[0049] 异常函数表单元103,用于保存处理异常的函数;
[0050] 异常分析单元201,用于分析异常并将异常分析信息存入异常节点表单元202;
[0051] 异常节点表单元202,用于保存异常分析信息。
[0052] 异常任务设置单元101分别与异常任务处理单元102以及异常函数表单元103连接;异常任务处理单元102分别与异常函数表单元103以及异常节点表单元202连接;异常分析单元201与异常节点表单元202连接。
[0053] 具体实施例2:
[0054] 如图2所示,本发明提供了一种软件异常处理方法,包括如下步骤:
[0055] 步骤S1:异常任务设置单元101开启一个新执行流程,在该执行流程中运行异常任务处理单元102,并设置执行流程优先级为实时优先级;
[0056] 步骤S2:通过异常任务设置单元101在异常函数表单元103中设置异常处理函数;
[0057] 步骤S3:异常分析单元201对异常进行分析,并执行步骤S301;
[0058] 异常任务处理模块102对异常节点表单元进行查询,并执行步骤S302;
[0059] 步骤S301:当异常发生时,异常分析单元201对异常进行分析,并将异常保存进异常节点表单元202;
[0060] 步骤S302:异常任务处理单元102查询异常节点表单元202是否有异常;
[0061] 当有异常时,执行不走S30205;
[0062] 当没有异常时,执行步骤S302;
[0063] 步骤S30204:异常任务处理单元102将异常从异常节点表单元202中取出;
[0064] 步骤S30205:异常任务处理单元102将异常与异常函数表单元103中设置的异常进行比较,并找出对应的异常处理函数;
[0065] 步骤S30206:异常任务处理单元102根据步骤S30205中找出的异常处理函数对异常进行处理;
[0066] 步骤S30207:异常任务处理单元102对异常处理完成后,执行步骤S302。
[0067] 结合具体实施例1与具体实施例2具体来说,当应用程序启动前异常任务设置单元新建立一个与提供应用程序运行的执行流程不同的执行流程,供给异常任务处理单元进行运行。此时应用程序与异常任务处理单元在CPU中属于并行状态。设计人员可以根据要求,通过异常任务设置单元在异常函数表单元中设置异常处理函数。当应用程序出现异常时,异常分析单元对异常进行分析,并将异常保存进异常节点表单元。由于异常任务处理单元是在时刻查询异常节点表单元中是否有异常存在的,同时,在设置执行流程时设置了执行流程是实时优先级的执行流程,即优先其他流程执行的执行流程,所以,当异常被保存进异常节点表单元中时,异常任务处理单元就能实时获知有异常出现,并及时处理异常。异常任务处理单元将异常从异常节点表单元中取出,并在异常函数表单元中查询相应的处理函数,根据处理函数对异常进行处理。
[0068] 具体实施例3:
[0069] 如图3所示,本发明提供了一种软件异常处理方法,包括如下步骤:
[0070] 步骤A1:异常任务设置单元101开启一个新执行流程,在该执行流程中运行异常任务处理单元102,并设置执行流程优先级为实时优先级;
[0071] 步骤A2:通过异常任务设置单元101在异常函数表单元103中设置异常处理函数;
[0072] 步骤A3:异常分析单元201对异常进行分析,并执行步骤A30101;
[0073] 异常任务处理模块102对异常节点表单元进行查询,并执行步骤A302;
[0074] 步骤A30101:异常分析单元201判断异常类型;
[0075] 当异常属于重度异常时,则执行步骤A3010101;
[0076] 当异常属于中度异常时,则执行步骤A3010102;
[0077] 当异常属于轻度异常时,则执行步骤A3010103;
[0078] 步骤A3010101:终止当前运行的应用程序;
[0079] 步骤A3010102:唤醒和/或关闭相关应用程序,并将异常保存进异常节点表单元202;
[0080] 步骤A3010103:将异常保存进异常节点表单元202;
[0081] 步骤A302:异常任务处理单元102查询异常节点表单元202是否有异常;
[0082] 当有异常时,执行不走A30205;
[0083] 当没有异常时,执行步骤A302;
[0084] 步骤A30204:异常任务处理单元102将异常从异常节点表单元202中取出;
[0085] 步骤A30205:异常任务处理单元102将异常与异常函数表单元103中设置的异常进行比较,并找出对应的异常处理函数;
[0086] 步骤A30206:异常任务处理单元102根据步骤A30205中找出的异常处理函数对异常进行处理;
[0087] 步骤A30207:异常任务处理单元102对异常处理完成后,执行步骤A302。
[0088] 其中,将具体实施例2中的步骤S301具体化为步骤A301、A3010101、A3010102以及A3010103。
[0089] 本具体实施例以键值对表作为异常函数表单元的具体化实施,以队列表作为异常节点表单元的具体化实施。
[0090] 具体来说,当应用程序启动前异常任务设置单元新建立一个与提供应用程序运行的执行流程不同的执行流程,供给异常任务处理单元进行运行。此时应用程序与异常任务处理单元在CPU中属于并行状态。设计人员可以根据要求,通过异常任务设置单元在键值对表中设置异常处理函数,将异常标号作为键值对表中的键值(key)列,将异常函数作为键值对表中的值(vaule)列,例如:异常标号“0”;对应异常函数“记录报错信息”,异常标号“1”;对应异常函数“显示报错”等。当应用程序出现异常时,异常分析单元对异常进行分析,此时,将异常分成三类异常:
[0091] 第一类异常与当前应用程序高度关联,并且已经或即将破坏应用程序的数据;
[0092] 第二类异常与当前应用程序相关联,需要唤醒相关的睡眠应用程序,并且应用程序的系统调用会以出错的形式返回,相关的代码检查到这个出错退出后,可以选择退出应用程序或重新执行系统调用;
[0093] 第三类异常与当前应用程序无关,只是刚好发生在应用程序运行时;
[0094] 异常分析单元对第一类异常做出终止应用程序的操作;对第二类异常做出唤醒和/或关闭相关应用程序,并将异常标号保存进队列表队尾;对第三类异常标号做出直接保存进队列表队尾。
[0095] 由于异常任务处理单元是在时刻查询队列表中是否有异常存在的,同时,在设置执行流程时设置了执行流程是实时优先级的执行流程,即优先其他流程执行的执行流程,所以,当异常被保存进队列表中时,异常任务处理单元就能实时获知有异常出现,并及时处理异常。异常任务处理单元将异常从队列表队首中取出,并在键值对表中查询相应的处理函数,例如:当异常分析单元分析出异常标号是“0”时,异常任务处理单元根据异常标号“0”在键值对表中查询出异常处理函数“记录报错信息”,根据处理函数对异常进行处理。
[0096] 除上述实施例外,本发明还可以有其他实施方式,凡采用等同替换或等效变换形成的技术方案,均落在本发明要求的保护范围内。