堆栈检测方法技术

技术编号:39812652 阅读:8 留言:0更新日期:2023-12-22 19:30
本发明专利技术公开了一种堆栈检测方法

【技术实现步骤摘要】
堆栈检测方法、装置、多核处理器及计算设备


[0001]本专利技术涉及堆栈检测
,尤其涉及一种堆栈检测方法

装置

多核处理器及计算设备


技术介绍

[0002]随着处理器技术的发展,多核处理器目前在消费

工业

汽车等领域应用越来越广,主要是因为随着技术发展,各类应用系统越来越复杂,对于处理器的性能要求越来越高,多核处理器从硬件架构上实现了多核并行运行的机制,从而大大提升了整体系统的运行性能

在处理器内部,堆栈是其运行过程中一个比较重要的资源,一般用来存储一些临时数据,如局部变量

函数传递参数

函数返回值等这些函数调用或者任务切换时需要保存的现场数据

对于多核处理器,一般对于每个内核都会分配自己独立的堆栈资源,每个内核独立管理和使用自己的堆栈空间

[0003]在单核处理器系统里,关于堆栈的检测一般有硬件和软件两种处理方式,即堆栈限制寄存器方法(硬件)

内存保护方法(硬件)和软件预设数据检测方法

发展到多核处理器系统,虽然处理器架构变化很大,但是在堆栈检测方法方面目前还是沿用了单核处理器的方式,没有特别的变化,即采用每个内核自己检测自己堆栈的方式

但在一个内核同时运行堆栈检测任务和应用任务的情况下,可能会出现任务冲突,导致堆栈检测失败或延迟,降低了堆栈检测的实时性
>。

技术实现思路

[0004]为此,本专利技术提出了一种堆栈检测方法,还提出了一种堆栈检测装置

一种多核处理器

一种计算设备和一种计算机可读存储介质,旨在至少在一定程度上解决相关技术中堆栈检测的实时性降低的技术问题

[0005]为达到上述目的,本专利技术第一方面实施例提出了一种堆栈检测方法,应用于多核处理器的检测内核,该方法包括:确定处理内核的堆栈中当前堆栈指针指示的当前检测区域,其中,处理内核与检测内核相互独立;从当前检测区域开始对堆栈的多个检测区域进行风险检测,确定目标检测区域;在根据目标检测区域确定堆栈存在溢出风险的情况下,向处理内核发送预警信息,以便处理内核对堆栈进行管理

[0006]根据本专利技术的一个实施例,向处理内核发送预警信息之后,方法还包括:若指定时间内未接收到处理内核响应于预警信息反馈的确认信息,则重启处理内核

[0007]根据本专利技术的一个实施例,确定处理内核的堆栈中当前堆栈指针指示的当前检测区域之前,方法还包括:接收处理内核的堆栈检测请求,以便检测内核响应于堆栈检测请求,确定处理内
核的堆栈中当前堆栈指针指示的当前检测区域,其中,堆栈检测请求是处理内核在特定情况下生成的

[0008]根据本专利技术的一个实施例,根据目标检测区域确定堆栈存在溢出风险,包括:确定目标检测区域是否处于堆栈的堆栈顶部,其中,目标检测区域是特征数据未改变且距离堆栈底部最近的检测区域,堆栈底部先于堆栈顶部被写入数据;若是,则确定堆栈存在溢出风险

[0009]根据本专利技术的一个实施例,从当前检测区域开始对堆栈的多个检测区域进行风险检测,确定目标检测区域,包括:以当前检测区域为第一检测区域,获取第一检测区域当前存储的第一数据;在第一数据与第一检测区域预先存储的特征数据不同的情况下,重新以第一检测区域与末位检测区域的中位检测区域为新的第一检测区域,返回执行获取第一检测区域当前存储的第一数据的步骤,直至第一数据与第一检测区域预先存储的特征数据相同,其中,第一检测区域先于第一检测区域的下一个检测区域和末位检测区域被写入数据;以第一检测区域的下一个检测区域为第二检测区域,获取第二检测区域当前存储的第二数据;在第二数据与第二检测区域预先存储的特征数据相同的情况下,重新以上一个第一检测区域与当前的第一检测区域的中位检测区域为新的第一检测区域,返回执行获取第一检测区域当前存储的第一数据的步骤,直至第二数据与第二检测区域预先存储的特征数据不同,确定第一检测区域是目标检测区域

[0010]为达到上述目的,本专利技术第二方面实施例提出了一种堆栈检测方法,应用于多核处理器的处理内核,该方法包括:接收检测内核发送的预警信息,其中,预警信息是检测内核确定处理内核的堆栈中当前堆栈指针指示的当前检测区域,从当前检测区域开始对堆栈的多个检测区域进行风险检测,确定目标检测区域,在根据目标检测区域确定堆栈存在溢出风险的情况下发送的,检测内核与处理内核相互独立;响应于预警信息,对堆栈进行管理

[0011]为达到上述目的,本专利技术第三方面实施例提出了一种堆栈检测装置,应用于多核处理器的检测内核,该装置包括:第一确定模块,被配置为确定处理内核的堆栈中当前堆栈指针指示的当前检测区域,其中,处理内核与检测内核相互独立;第二确定模块,被配置为从当前检测区域开始对堆栈的多个检测区域进行风险检测,确定目标检测区域;发送模块,被配置为在根据目标检测区域确定堆栈存在溢出风险的情况下,向处理内核发送预警信息,以便处理内核对堆栈进行管理

[0012]根据本专利技术的一个实施例,发送模块进一步被配置为:若指定时间内未接收到处理内核响应于预警信息反馈的确认信息,则重启处理内核

[0013]根据本专利技术的一个实施例,第一确定模块,还被配置为:接收处理内核的堆栈检测请求,以便检测内核响应于堆栈检测请求,确定处理内
核的堆栈中当前堆栈指针指示的当前检测区域,其中,堆栈检测请求是处理内核在特定情况下生成的

[0014]根据本专利技术的一个实施例,发送模块进一步被配置为:确定目标检测区域是否处于堆栈的堆栈顶部,其中,目标检测区域是特征数据未改变且距离堆栈底部最近的检测区域,堆栈底部先于堆栈顶部被写入数据;若是,则确定堆栈存在溢出风险

[0015]根据本专利技术的一个实施例,第二确定模块,进一步被配置为:以当前检测区域为第一检测区域,获取第一检测区域当前存储的第一数据;在第一数据与第一检测区域预先存储的特征数据不同的情况下,重新以第一检测区域与末位检测区域的中位检测区域为新的第一检测区域,返回执行获取第一检测区域当前存储的第一数据的步骤,直至第一数据与第一检测区域预先存储的特征数据相同,其中,第一检测区域先于第一检测区域的下一个检测区域和末位检测区域被写入数据;以第一检测区域的下一个检测区域为第二检测区域,获取第二检测区域当前存储的第二数据;在第二数据与第二检测区域预先存储的特征数据相同的情况下,重新以上一个第一检测区域与当前的第一检测区域的中位检测区域为新的第一检测区域,返回执行获取第一检测区域当前存储的第一数据的步骤,直至第二数据与第二检测区域预先存储的特征数据不同,确定第一检测区域是目标检测区域

[0016]为达到上述目的,本专利技术第四方面实施例提出了本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.
一种堆栈检测方法,其特征在于,应用于多核处理器的检测内核,所述方法包括:确定处理内核的堆栈中当前堆栈指针指示的当前检测区域,其中,所述处理内核与所述检测内核相互独立;从所述当前检测区域开始对所述堆栈的多个检测区域进行风险检测,确定目标检测区域;在根据所述目标检测区域确定所述堆栈存在溢出风险的情况下,向所述处理内核发送预警信息,以便所述处理内核对所述堆栈进行管理
。2.
根据权利要求1所述的堆栈检测方法,其特征在于,所述向所述处理内核发送预警信息之后,所述方法还包括:若指定时间内未接收到所述处理内核响应于所述预警信息反馈的确认信息,则重启所述处理内核
。3.
根据权利要求1所述的堆栈检测方法,其特征在于,所述确定处理内核的堆栈中当前堆栈指针指示的当前检测区域之前,所述方法还包括:接收所述处理内核的堆栈检测请求,以便所述检测内核响应于所述堆栈检测请求,确定处理内核的堆栈中当前堆栈指针指示的当前检测区域,其中,所述堆栈检测请求是所述处理内核在特定情况下生成的
。4.
根据权利要求1‑3任一项所述的堆栈检测方法,其特征在于,所述根据所述目标检测区域确定所述堆栈存在溢出风险,包括:确定所述目标检测区域是否处于所述堆栈的堆栈顶部,其中,所述目标检测区域是特征数据未改变且距离堆栈底部最近的检测区域,所述堆栈底部先于所述堆栈顶部被写入数据;若是,则确定所述堆栈存在溢出风险
。5.
根据权利要求1所述的堆栈检测方法,其特征在于,所述从所述当前检测区域开始对所述堆栈的多个检测区域进行风险检测,确定目标检测区域,包括:以所述当前检测区域为第一检测区域,获取所述第一检测区域当前存储的第一数据;在所述第一数据与所述第一检测区域预先存储的特征数据不同的情况下,重新以所述第一检测区域与末位检测区域的中位检测区域为新的第一检测区域,返回执行获取所述第一检测区域当前存储的第一数据的步骤,直至所述第一数据与所述第一检测区域预先存储的特征数据相同,其中,所述第一检测区域先于所述第一检测区域的下一个检测区域和所述末位检测区域被写入数据;以所述第一检测区域的下一个检测区域为第二检测区域,获取所述第二检测区域当前存储的第二数据;在所述第二数据与所述第二检测区域预先存储的特征数据相同的情况下,重新以上一个第一检测区域与当前的第一检测区域的中位检测区域为新的第一检测区域,返回执行获取所述第一检测区域当前存储的第一数据的步骤,直至所述第二数据与所述第二检测区域预先存储的特征数据不同,确定所述第一检测区域是目标检测区域
。...

【专利技术属性】
技术研发人员:张恩勤程雯
申请(专利权)人:上海萨沙迈半导体有限公司天津智芯半导体科技有限公司合肥智芯半导体有限公司
类型:发明
国别省市:

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

1