修复异常任务的方法及装置制造方法及图纸

技术编号:30903533 阅读:14 留言:0更新日期:2021-11-22 23:48
本说明书实施例提供了修复异常任务的方法及装置。该方法通过搭载有实时操作系统RTOS的设备执行,该设备中配置有异常处理函数和调试组件,该方法包括:响应于确定该设备当前执行的任务将要从第一任务切换到第二任务,检测第一任务是否发生缓冲区溢出;若检测结果为是,则将第一任务确定为异常任务;利用异常处理函数调用调试组件,使得调试组件将异常任务的第一任务函数替换为目标函数。的第一任务函数替换为目标函数。的第一任务函数替换为目标函数。

【技术实现步骤摘要】
修复异常任务的方法及装置


[0001]本说明书实施例涉及计算机
,具体地,涉及修复异常任务的方法及装置。

技术介绍

[0002]RTOS(Real Time Operating System,实时操作系统)一般是指具有如下功能或特点的操作系统,即,当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行。
[0003]RTOS相比其他操作系统更加注重实时与轻量,但在设计时并未考虑安全问题。近年来随着搭载有RTOS的设备(可简称为RTOS设备)的数量增多,安全漏洞的威胁也被放大。
[0004]因此,迫切需要一种合理、可靠的方案,可以提升RTOS设备的安全性。

技术实现思路

[0005]本说明书实施例提供了修复异常任务的方法及装置,能有效提升RTOS设备的安全性。
[0006]第一方面,本说明书实施例提供了修复异常任务的方法,通过搭载有实时操作系统RTOS的设备执行,所述设备中配置有异常处理函数和调试组件,所述方法包括:响应于确定所述设备当前执行的任务将要从第一任务切换到第二任务,检测所述第一任务是否发生缓冲区溢出;若检测结果为是,则将所述第一任务确定为异常任务;利用所述异常处理函数调用所述调试组件,使得所述调试组件将所述异常任务的第一任务函数替换为目标函数。
[0007]在一些实施例中,在所述将所述异常任务的第一任务函数替换为目标函数之前,还包括:从预设的函数集合中选取出一个函数作为目标函数。
[0008]在一些实施例中,所述函数集合包括无限循环函数和/或与所述异常任务有关的第二任务函数。
[0009]在一些实施例中,所述从预设的函数集合中选取出一个函数作为目标函数,包括:当所述函数集合包括所述无限循环函数时,选取所述无限循环函数作为目标函数。
[0010]在一些实施例中,所述从预设的函数集合中选取出一个函数作为目标函数,包括:当所述函数集合包括所述第二任务函数时,若所述异常任务包括多个子任务,并且所述第二任务函数是所述多个子任务之一的任务函数,则选取所述第二任务函数作为目标函数。
[0011]在一些实施例中,所述从预设的函数集合中选取出一个函数作为目标函数,包括:当所述函数集合包括所述无限循环函数和所述第二任务函数时,确定所述第一任务函数是否与所述第二任务函数相同;若确定结果为是,则选取所述无限循环函数作为目标函数;若确定结果为否,则选取所述第二任务函数作为目标函数。
[0012]在一些实施例中,所述设备包括ARM处理器,所述ARM处理器包括所述调试组件和闪存地址重载及断点单元FPB,所述FPB包括重映射函数;以及所述将所述异常任务的第一任务函数替换为目标函数,包括:利用所述重映射函数,将所述第一任务函数重映射为所述
目标函数。
[0013]在一些实施例中,在将所述无限循环函数作为目标函数的情况下,在所述将所述异常任务的第一任务函数替换为目标函数之后,还包括:向所述设备所属的用户呈现用于进行异常提示的提示信息。
[0014]在一些实施例中,在将所述无限循环函数作为目标函数的情况下,在所述将所述异常任务的第一任务函数替换为目标函数之后,还包括:响应于检测到所述第二任务执行完成,控制所述设备重启。
[0015]在一些实施例中,所述异常处理函数包括所述RTOS自带的HOOK函数,或者开发人员编写的中断处理函数。
[0016]在一些实施例中,所述检测所述第一任务是否发生缓冲区溢出,包括:检测所述第一任务是否发生栈溢出,和/或检测所述第一任务是否发生堆溢出。
[0017]在一些实施例中,所述检测所述第一任务是否发生栈溢出,包括:根据所述第一任务的栈空间的生长方向,修改所述栈空间的栈顶指针;确定修改后的所述栈顶指针指向的地址是否包含在所述栈空间的地址范围内;若确定结果为是,则确定所述第一任务未发生栈溢出;若确定结果为否,则确定所述第一任务发生栈溢出。
[0018]在一些实施例中,所述生长方向为从高地址向低地址生长;以及所述修改所述栈空间的栈顶指针,包括:将所述栈顶指针递减1。
[0019]在一些实施例中,所述检测所述第一任务是否发生栈溢出,包括:确定栈空间栈底第一预设字节的内容是否与第一标记信息相同;其中,所述第一标记信息是所述栈空间进行初始化时,针对栈底第一预设字节的内容进行初始化的信息;
[0020]若确定结果为是,则确定所述第一任务未发生栈溢出;若确定结果为否,则确定所述第一任务发生栈溢出。
[0021]在一些实施例中,所述检测所述第一任务是否发生堆溢出,包括:确定堆空间底部第二预设字节的内容是否与第二标记信息相同;其中,所述第二标记信息是所述第一任务的堆空间进行初始化时,针对底部第二预设字节的内容进行初始化的信息;若确定结果为是,则确定所述第一任务未发生堆溢出;若确定结果为否,则确定所述第一任务发生堆溢出。
[0022]第二方面,本说明书实施例提供了一种修复异常任务的装置,应用于搭载有实时操作系统RTOS的设备,所述设备中配置有异常处理函数和调试组件,所述装置包括:检测单元,被配置成响应于确定所述设备当前执行的任务将要从第一任务切换到第二任务,检测所述第一任务是否发生缓冲区溢出;确定单元,被配置成若所述检测单元的检测结果为是,则将所述第一任务确定为异常任务;修复单元,被配置成利用所述异常处理函数调用所述调试组件,使得所述调试组件将所述异常任务的第一任务函数替换为目标函数。
[0023]第三方面,本说明书实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其中,当该计算机程序在计算机中执行时,令该计算机执行如第一方面中任一实现方式描述的方法。
[0024]第四方面,本说明书实施例提供了一种计算设备,包括存储器和处理器,其中,该存储器中存储有可执行代码,该处理器执行该可执行代码时,实现如第一方面中任一实现方式描述的方法。
[0025]第五方面,本说明书实施例提供了一种计算机程序,其中,当该计算机程序在计算机中执行时,令该计算机执行如第一方面中任一实现方式描述的方法。
[0026]本说明书的上述实施例提供的修复异常任务的方法及装置,可以在确定RTOS设备当前执行的任务将要从第一任务切换到第二任务时,检测第一任务是否发生缓冲区溢出,并在检测到第一任务发生缓冲区溢出时,将第一任务确定为异常任务,以及利用异常处理函数调用调试组件,使得调试组件将该异常任务的第一任务函数替换为目标函数。由此,可以在无须人为干预的情况下在线修复异常任务,使得RTOS设备继续执行能正常执行的任务(如第二任务等),避免RTOS设备一旦检测到缓冲区溢出就直接崩溃,整机重启。这样,能有效提高RTOS设备的安全性。
附图说明
[0027]为了更清楚地说明本说明书披露的多个实施例的技术方案,下面将对实施例描述中所需要使用的附图作简本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种修复异常任务的方法,通过搭载有实时操作系统RTOS的设备执行,所述设备中配置有异常处理函数和调试组件,所述方法包括:响应于确定所述设备当前执行的任务将要从第一任务切换到第二任务,检测所述第一任务是否发生缓冲区溢出;若检测结果为是,则将所述第一任务确定为异常任务;利用所述异常处理函数调用所述调试组件,使得所述调试组件将所述异常任务的第一任务函数替换为目标函数。2.根据权利要求1所述的方法,其中,在所述将所述异常任务的第一任务函数替换为目标函数之前,还包括:从预设的函数集合中选取出一个函数作为目标函数。3.根据权利要求2所述的方法,其中,所述函数集合包括无限循环函数和/或与所述异常任务有关的第二任务函数。4.根据权利要求3所述的方法,其中,所述从预设的函数集合中选取出一个函数作为目标函数,包括:当所述函数集合包括所述无限循环函数时,选取所述无限循环函数作为目标函数。5.根据权利要求3所述的方法,其中,所述从预设的函数集合中选取出一个函数作为目标函数,包括:当所述函数集合包括所述第二任务函数时,若所述异常任务包括多个子任务,并且所述第二任务函数是所述多个子任务之一的任务函数,则选取所述第二任务函数作为目标函数。6.根据权利要求3所述的方法,其中,所述从预设的函数集合中选取出一个函数作为目标函数,包括:当所述函数集合包括所述无限循环函数和所述第二任务函数时,确定所述第一任务函数是否与所述第二任务函数相同;若确定结果为是,则选取所述无限循环函数作为目标函数;若确定结果为否,则选取所述第二任务函数作为目标函数。7.根据权利要求1所述的方法,其中,所述设备包括ARM处理器,所述ARM处理器包括所述调试组件和闪存地址重载及断点单元FPB,所述FPB包括重映射函数;以及所述将所述异常任务的第一任务函数替换为目标函数,包括:利用所述重映射函数,将所述第一任务函数重映射为所述目标函数。8.根据权利要求3所述的方法,其中,在将所述无限循环函数作为目标函数的情况下,在所述将所述异常任务的第一任务函数替换为目标函数之后,还包括:向所述设备所属的用户呈现用于进行异常提示的提示信息。9.根据权利要求3所述的方法,其中,在将所述无限循环函数作为目标函数的情况下,在所述将所述异常任务的第一任务函数替换为目标函数之后,还包括:响应于检测到所述第二任务执行完成,控制所述设备重启。10.根据权利要求1所述的方法,其中,所述异常处理函数包括所述RTOS自带的HOOK函数,或者开发人员编写的中断处理函数...

【专利技术属性】
技术研发人员:刘宇佳黄琳简云定伏伟曹鸿健张婉桥
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1