访问监测方法、装置、电子设备及存储介质制造方法及图纸

技术编号:39423271 阅读:10 留言:0更新日期:2023-11-19 16:11
本发明专利技术实施例提供了一种访问监测方法和装置,所述方法包括:获取当前线程访问内存的目标地址,确定所述目标地址属于其他线程的线程栈;其中,所述当前线程和所述其他线程同属于一个线程组,所述线程栈为每个线程独享的内存空间,通知所述当前线程的线程栈非法访问的监测结果,使得对于同一线程组内,线程栈被破坏的情况进行有效监测,保证了线程运行的稳定性,继而保证了操作系统运行的稳定性。继而保证了操作系统运行的稳定性。继而保证了操作系统运行的稳定性。

【技术实现步骤摘要】
访问监测方法、装置、电子设备及存储介质


[0001]本专利技术涉及数据处理
,特别是涉及一种访问监测方法、一种访问监测装置、一种电子设备以及一种可读存储介质。

技术介绍

[0002]线程(thread)是Linux操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack,也称为线程栈),自己的寄存器环境(register context),自己的线程本地存储(thread

local storage)。一个进程可以有很多线程,每条线程并行执行不同的任务。
[0003]线程组(ThreadGroup)简单来说就是一个线程集合。线程组的出现是为了更方便地管理线程。线程组是父子结构的,一个线程组可以集成其他线程组,同时也可以拥有其他子线程组。从结构上看,线程组是一个树形结构,每个线程都隶属于一个线程组,线程组又有父线程组,这样追溯下去,可以追溯到一个根线程组——System线程组。一个线程可以访问其所属线程组的信息,但不能访问其所属线程组的父线程组或者其他线程组的信息。线程组和线程关系如图1所示。
[0004]每个线程都会拥有一个线程栈(线程独享的地址空间),用来跟踪线程运行中的一系列方法调用过程,栈中的每一个元素被称为栈帧,每当线程调用一个方法的时候会向线程栈中压入一个新帧。这里的帧用来存储方法的参数、局部变量、方法的返回地址、和运算过程中的临时数据。目前的操作系统缺少一个监测线程栈的非法访问的有效方法。

技术实现思路

[0005]本专利技术实施例所要解决的技术问题是提供一种访问监测方法、装置、电子设备及可读存储介质,以便解决操作系统缺少一个监测线程栈的非法访问的有效方法的问题。
[0006]为了解决上述问题,本专利技术提供了一种访问监测方法,包括:
[0007]获取当前线程访问内存的目标地址;
[0008]确定所述目标地址属于其他线程的线程栈;其中,所述当前线程和所述其他线程同属于一个线程组,所述线程栈为每个线程独享的内存空间;
[0009]通知所述当前线程的线程栈非法访问的监测结果。
[0010]可选地,在所述获取当前线程访问内存的目标地址之前,所述方法还包括:
[0011]在所述当前线程访问内存时,响应于地址转换缓冲器中不存在所述目标地址对应的表项,触发未命中异常的处理过程;
[0012]在所述未命中异常的处理过程中,启动所述访问监测方法。
[0013]可选地,所述确定所述目标地址属于其他线程的线程栈包括:
[0014]获取所述其他线程的线程栈对应的第一子地址范围;
[0015]确定所述目标地址是否在所述第一子地址范围内;
[0016]若所述目标地址在所述第一子地址范围内,则确定所述目标地址属于其他线程的线程栈。
[0017]可选地,所述方法还包括:
[0018]确定所述目标地址不属于所述线程组所占内存空间;
[0019]通知所述当前线程的地址非法访问的监测结果。
[0020]可选地,所述确定所述目标地址不属于所述线程组所占内存空间包括:
[0021]获取所述线程组所占内存空间对应的线程组地址范围;其中,所述线程组地址范围包括所述其他线程的线程栈对应的第一子地址范围,所述当前线程的线程栈对应的第二子地址范围和多个线程共享的内存空间对应的第三子地址范围;
[0022]确定所述目标地址是否在所述线程组地址范围内;
[0023]若所述目标地址不在所述线程组地址范围内,则确定所述目标地址不属于所述线程组所占内存空间。
[0024]相应的,本专利技术还提供了一种访问监测装置,包括:
[0025]地址获取模块,用于获取当前线程访问内存的目标地址;
[0026]线程栈确定模块,用于确定所述目标地址属于其他线程的线程栈;其中,所述当前线程和所述其他线程同属于一个线程组,所述线程栈为每个线程独享的内存空间;
[0027]第一结果通知模块,用于通知所述当前线程的线程栈非法访问的监测结果。
[0028]可选地,所述装置还包括:
[0029]触发模块,用于在所述获取当前线程访问内存的目标地址之前,在所述当前线程访问内存时,响应于地址转换缓冲器中不存在所述目标地址对应的表项,触发未命中异常的处理过程;
[0030]启动模块,用于在所述未命中异常的处理过程中,启动所述访问监测方法。
[0031]可选地,所述线程栈确定模块包括:
[0032]第一范围获取子模块,用于获取所述其他线程的线程栈对应的第一子地址范围;
[0033]第一确定子模块,用于确定所述目标地址是否在所述第一子地址范围内;
[0034]线程栈确定子模块,用于若所述目标地址在所述第一子地址范围内,则确定所述目标地址属于其他线程的线程栈。
[0035]可选地,所述装置还包括:
[0036]空间确定模块,用于确定所述目标地址不属于所述线程组所占内存空间;
[0037]第二结果通知模块,用于通知所述当前线程的地址非法访问的监测结果。
[0038]可选地,所述空间确定模块包括:
[0039]第二范围获取子模块,用于获取所述线程组所占内存空间对应的线程组地址范围;其中,所述线程组地址范围包括所述其他线程的线程栈对应的第一子地址范围,所述当前线程的线程栈对应的第二子地址范围和多个线程共享的内存空间对应的第三子地址范围;
[0040]第二确定子模块,用于确定所述目标地址是否在所述线程组地址范围内;
[0041]空间确定子模块,用于若所述目标地址不在所述线程组地址范围内,则确定所述
目标地址不属于所述线程组所占内存空间。
[0042]本专利技术实施例还公开了一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
[0043]存储器,用于存放计算机程序;
[0044]处理器,用于执行存储器上所存放的程序时,实现如上所述的方法步骤。
[0045]本专利技术实施例还公开了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本专利技术实施例中一个或多个所述的方法。
[0046]依据本专利技术实施例,通过获取当前线程访问内存的目标地址,确定所述目标地址属于其他线程的线程栈;其中,所述当前线程和所述其他线程同属于一个线程组,所述线程栈为每个线程独享的内存空间,通知所述当前线程的线程栈非法访问的监测结果,使得对于同一线程组内,线程栈被破坏的情况进行有效监测,保证了线程运行的稳定性,继而保证了操作系统运行的稳定性。...

【技术保护点】

【技术特征摘要】
1.一种访问监测方法,其特征在于,包括:获取当前线程访问内存的目标地址;确定所述目标地址属于其他线程的线程栈;其中,所述当前线程和所述其他线程同属于一个线程组,所述线程栈为每个线程独享的内存空间;通知所述当前线程的线程栈非法访问的监测结果。2.根据权利要求1所述的方法,其特征在于,在所述获取当前线程访问内存的目标地址之前,所述方法还包括:在所述当前线程访问内存时,响应于地址转换缓冲器中不存在所述目标地址对应的表项,触发未命中异常的处理过程;在所述未命中异常的处理过程中,启动所述非法访问监测方法。3.根据权利要求1所述的方法,其特征在于,所述确定所述目标地址属于其他线程的线程栈包括:获取所述其他线程的线程栈对应的第一子地址范围;确定所述目标地址是否在所述第一子地址范围内;若所述目标地址在所述第一子地址范围内,则确定所述目标地址属于其他线程的线程栈。4.根据权利要求1

3任一项所述的方法,其特征在于,所述方法还包括:确定所述目标地址不属于所述线程组所占内存空间;通知所述当前线程的地址非法访问的监测结果。5.根据权利要求4所述的方法,其特征在于,所述确定所述目标地址不属于所述线程组所占内存空间包括:获取所述线程组所占内存空间对应的线程组地址范围;其中,所述线程组地址范围包括所述其他线程的线程栈对应的第一子地址范围,所述当前线程的线程栈对应的第二子地址范围和多个线程共享的内存空间对应的第三子地址范围;确定所述目标地址是否在所述线程组地址范围内;若所述目标地址不在所述线程组...

【专利技术属性】
技术研发人员:袁俊卿薛雨
申请(专利权)人:龙芯中科技术股份有限公司
类型:发明
国别省市:

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

1