一种栈溢出处理的方法及装置制造方法及图纸

技术编号:20025215 阅读:28 留言:0更新日期:2019-01-06 04:16
本申请实施例提供了一种栈溢出处理的方法及装置,其中所述方法包括:采用内存管理器件检测指定栈是否发生栈溢出;当检测到所述指定栈发生栈溢出时,由所述内存管理器件触发内存访问中断。通过内存管理器件来检测栈溢出,可以有效提高栈溢出检测的时效性,及时发现栈溢出等偶现性问题,缩短栈溢出问题排查时间。

【技术实现步骤摘要】
一种栈溢出处理的方法及装置
本申请涉及内存处理
,特别是涉及一种栈溢出处理的方法以及一种栈溢出处理的装置。
技术介绍
在操作系统的运行过程中,栈溢出是导致操作系统不稳定的重要原因,由于栈溢出具有偶现的特点,往往很难找到导致问题的原因,导致产品研发周期的不确定性。在现有技术中,通常采用如下方式进行栈溢出检测:在进程的栈初始化的时候,按预设的字节对齐方式,用特定魔数(比如0x9527)将栈元素依次完成初始化;在系统运行的时候,通过守护进程,依次遍历各个进程的栈,检测栈元素的值是否等于初始化的魔数,求得被污染的元素个数所占栈大小的比例,即为栈使用量,根据栈使用量来判定是否发生栈溢出。通过这种方法,虽然能检测到是否出现栈溢出,但由于需要在系统运行的时候通过检测魔数有没有改变来判定是否出现溢出,此时距离栈溢出已经有一段时间,因此,现有方案不能及时的检测出栈溢出,导致栈溢出的排查时间较长。
技术实现思路
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种栈溢出处理的方法和相应的一种栈溢出处理的装置。为了解决上述问题,本申请实施例公开了一种栈溢出处理的方法,所述方法包括:采用内存管理器件检测指定栈是否发生栈溢出;当检测到所述指定栈发生栈溢出时,由所述内存管理器件触发内存访问中断。优选地,在所述采用所述内存管理器件检测指定栈是否发生栈溢出的步骤之前,还包括:获取所述指定栈的栈信息,所述栈信息包括所述指定栈的起始地址以及栈大小;基于所述指定栈的起始地址以及栈大小,确定所述指定栈的栈底地址;采用所述内存管理器件,设置所述栈底地址的访问权限。优选地,所述指定栈包括任务栈,所述获取所述指定栈的栈信息的步骤包括:当检测到所述任务栈进行任务切换时,获取所述任务栈的栈信息。优选地,所述指定栈包括中断栈,所述获取所述指定栈的栈信息的步骤包括:从编译链接脚本程序中获取所述中断栈的栈信息。优选地,所述采用所述内存管理器件检测指定栈是否发生栈溢出的步骤包括:当检测到对栈底的访问操作时,判定所述指定栈发生栈溢出。优选地,所述方法还包括:获取所述栈溢出对应的上下文信息;基于所述上下文信息,进行栈溢出问题排查。优选地,所述内存管理器件包括内存保护单元MPU或内存管理单元MMU。本申请实施例还公开了一种栈溢出处理的装置,所述装置包括:栈溢出检测模块,用于采用内存管理器件检测指定栈是否发生栈溢出;中断处理模块,用于当检测到所述指定栈发生栈溢出时,由所述内存管理器件触发内存访问中断。优选地,所述装置还包括:栈信息获取模块,用于获取所述指定栈的栈信息,所述栈信息包括所述指定栈的起始地址以及栈大小;栈底地址确定模块,用于基于所述指定栈的起始地址以及栈大小,确定所述指定栈的栈底地址;访问权限设置模块,用于采用所述内存管理器件,设置所述栈底地址的访问权限。优选地,所述指定栈包括任务栈,所述栈信息获取模块还用于:当检测到所述任务栈进行任务切换时,获取所述任务栈的栈信息。优选地,所述指定栈包括中断栈,所述栈信息获取模块还用于:从编译链接脚本程序中获取所述中断栈的栈信息。优选地,所述栈溢出检测模块还用于:当检测到对栈底的访问操作时,判定所述指定栈发生栈溢出。优选地,所述装置还包括:上下文信息获取模块,用于获取所述栈溢出对应的上下文信息;问题排查模块,用于基于所述上下文信息,进行栈溢出问题排查。优选地,所述内存管理器件包括内存保护单元MPU或内存管理单元MMU。本申请实施例还公开了一种装置,包括:一个或多个处理器;和其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行上述的方法。本申请实施例还公开了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行上述的方法。本申请实施例包括以下优点:本申请实施例可以通过内存管理器件来检测任务栈或中断栈是否发生溢出。当内存管理器件检测到任务栈或中断栈发生溢出时,内存管理器件立刻触发内存访问中断,通过内存管理器件这种硬件的方式来检测栈溢出,可以有效提高栈溢出检测的时效性,及时发现栈溢出等偶现性问题,缩短栈溢出问题排查时间。附图说明图1是本申请的一种栈溢出处理的方法实施例一的步骤流程图;图2是本申请的一种栈溢出处理的方法实施例二的步骤流程图;图3是本申请的一种栈溢出处理的装置实施例的结构框图;图4本申请一种智能终端实施例的结构框图。具体实施方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。本申请实施例可以应用于安装有操作系统的计算设备中,该计算设备可以包括终端或服务器,该计算设备中可以包括内存管理器件。具体的,该内存管理器件可以用于对计算设备的内存进行管理,例如设置内存的访问权限、检测内存是否溢出、触发内存访问异常中断、进行内存异常处理等。在本申请实施例中,该内存管理器件可以包括硬件器件和/或软件程序。例如,该内存管理器件可以包括MPU(MemoryProtectionUnit,内存保护单元),MPU中一个域就是一些属性值以及其对应的一片内存,这些属性包括:起始地址、长度、读写权限以及缓存等。又如,该内存管理器件可以包括MMU(MemoryManagementUnit,内存管理单元),MMU是中央处理器CPU中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址、以及提供硬件机制的内存访问授权、多用户多进程操作系统。在一种实施方式中,该内存管理可以包括栈的管理,其中,栈是操作系统中抽象出来的一种先进后出的内存区域,主要用于局部变量和接口调用参数的自动存取。作为一种示例,栈可以包括任务栈和中断栈。任务栈可以用于在任务切换时保存上下文信息。中断栈可以用于产生中断时保存上下文信息。本申请实施例可以应用于互联网中的内存管理,也可以应用于物联网(InternetofThings,简称IoT)中的内存管理。以下以物联网的内存管理为例,对本申请实施例进行详细说明:参照图1,示出了本申请的一种栈溢出处理的方法实施例一的步骤流程图,本申请实施例具体可以包括如下步骤:步骤101,采用内存管理器件检测指定栈是否发生栈溢出;在本申请实施例中,计算设备所使用的操作系统可以包括RTOS(RealTimeOperatingSystem,实时操作系统)。在一种实施方式中,本申请实施例所说的指定栈可以包括RTOS系统中任务栈或中断栈。步骤102,当检测到指定栈发生栈溢出时,由所述内存管理器件触发内存访问中断。本申请实施例可以通过内存管理器件来检测任务栈或中断栈是否发生溢出。当内存管理器件检测到任务栈或中断栈发生溢出时,内存管理器件立刻触发内存访问中断,通过内存管理器件这种硬件的方式来检测栈溢出,可以有效提高栈溢出检测的时效性,及时发现栈溢出等偶现性问题,缩短栈溢出问题排查时间。参照图2,示出了本申请的一种栈溢出处理的方法实施例二的步骤流程图,本申请实施例具体可以包括如下步骤:步骤201,获取指定栈的栈信息;在具体实现中,RTOS系统可以获取指定栈的栈信息,作为一种示例,该栈信息可以包括但不限于:指定栈的起始地址、栈大小、栈名称、任务名称等。在本申请实施例的一种优选实施例中,本文档来自技高网...

【技术保护点】
1.一种栈溢出处理的方法,其特征在于,所述方法包括:采用内存管理器件检测指定栈是否发生栈溢出;当检测到所述指定栈发生栈溢出时,由所述内存管理器件触发内存访问中断。

【技术特征摘要】
1.一种栈溢出处理的方法,其特征在于,所述方法包括:采用内存管理器件检测指定栈是否发生栈溢出;当检测到所述指定栈发生栈溢出时,由所述内存管理器件触发内存访问中断。2.根据权利要求1所述的方法,其特征在于,在所述采用所述内存管理器件检测指定栈是否发生栈溢出的步骤之前,还包括:获取所述指定栈的栈信息,所述栈信息包括所述指定栈的起始地址以及栈大小;基于所述指定栈的起始地址以及栈大小,确定所述指定栈的栈底地址;采用所述内存管理器件,设置所述栈底地址的访问权限。3.根据权利要求2所述的方法,其特征在于,所述指定栈包括任务栈,所述获取所述指定栈的栈信息的步骤包括:当检测到所述任务栈进行任务切换时,获取所述任务栈的栈信息。4.根据权利要求2所述的方法,其特征在于,所述指定栈包括中断栈,所述获取所述指定栈的栈信息的步骤包括:从编译链接脚本程序中获取所述中断栈的栈信息。5.根据权利要求2-4任一项所述的方法,其特征在于,所述采用所述内存管理器件检测指定栈是否发生栈溢出的步骤包括:当检测到对栈底的访问操作时,判定所述指定栈发生栈溢出。6.根据权利要求1-4任一项所述的方法,其特征在于,还包括:获取所述栈溢出对应的上下文信息;基于所述上下文信息,进行栈溢出问题排查。7.根据权利要求1所述的方法,其特征在于,所述内存管理器件包括内存保护单元MPU或内存管理单元MMU。8.一种栈溢出处理的装置,其特征在于,所述装置包括:栈溢出检测模块,用于采用内存管理器件检测指定栈是否发生栈溢出;中断处理模块,用于当检测到所述指定栈发生栈溢出时,由...

【专利技术属性】
技术研发人员:刘自龙朱亮亮曾旭陈凌君王斌蔡俊杰
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1