内存地址信息的检测方法及其装置、电子设备及存储介质与流程

文档序号:37433458发布日期:2024-03-25 19:28阅读:10来源:国知局
内存地址信息的检测方法及其装置、电子设备及存储介质与流程

本发明涉及数据处理,具体而言,涉及一种内存地址信息的检测方法及其装置、电子设备及存储介质。


背景技术:

1、程序(例如,linux(即一种操作系统)可执行文件)在运行过程中,需要按需申请内存,即程序的任一进程的信息调入内存后,从cpu发出的访问地址并非是这些外设在地址总线上的物理地址,而是一个虚拟地址,由mmu(memory management unit,即内存管理单元)将虚拟地址转换成物理地址再从地址总线上发出,mmu上的这种虚拟地址和物理地址的转换关系会产生缺页异常。

2、相关技术中,对进程的内存地址信息进行度量检测时,采用的度量检测策略是在遇到进程内存地址缺页时一直等待,直到该内存缺页找回后才继续进行检测,整个检测过程按照内存地址顺序进行,直到进程最后一个内存地址度量检测完毕,该进程内存地址的度量检测才结束。由于进程内存地址分配时会产生大量的缺页异常,因此,相关技术中的度量检测策略在检测过程中将耗费很多内存和计算资源。

3、图1是根据相关技术中的一种可选的度量检测策略的示意图,如图1所示,度量检测模块依据内存地址顺序进行逐个依次度量,并且在遇到进程内存地址缺页时一直等待,直到该内存缺页找回后才继续进行检测,例如,内存地址v1映射有物理地址pg,则立即度量;内存地址v2缺页(该内存地址v2的找回时间为t1),则等待找回后继续度量(等待时长为t1);内存地址v3映射有物理地址pa,则立即度量;内存地址v4缺页(该内存地址v42的找回时间为t2),则等待找回后继续度量(等待时长为t2);内存地址vn映射有物理地址pm,则立即度量。

4、针对上述的问题,目前尚未提出有效的解决方案。


技术实现思路

1、本发明实施例提供了一种内存地址信息的检测方法及其装置、电子设备及存储介质,以至少解决相关技术中在进行内存地址信息检测时,资源消耗较大以及检测效率较低的技术问题。

2、根据本发明实施例的一个方面,提供了一种内存地址信息的检测方法,包括:在运行目标程序的任一进程的情况下,确定所述进程的虚拟内存地址顺序,其中,所述目标程序包括:多个进程,每个所述进程依据所述目标程序的进程运行顺序运行;基于所述虚拟内存地址顺序,依次判断每个虚拟内存地址是否处于缺页状态,并在所述虚拟内存地址处于所述缺页状态的情况下,跳过所述虚拟内存地址,生成度量检测地址表以及缺页找回队列表,其中,所述度量检测地址表包括:多个正常虚拟内存地址,所述正常虚拟内存地址是指实际映射有物理地址的所述虚拟内存地址,所述缺页找回队列表包括:多个找回虚拟内存地址,所述找回虚拟内存地址是指已经找回所述物理地址的缺页虚拟内存地址,所述缺页虚拟内存地址是指缺失所述物理地址的所述虚拟内存地址;基于所述度量检测地址表,检测每个所述正常虚拟内存地址对应的内存地址信息,并在所有所述正常虚拟内存地址都检测完成的情况下,确定当前度量周期结束;在所述当前度量周期结束之后与下次度量周期开始之前,基于所述缺页找回队列表,检测每个所述找回虚拟内存地址对应的所述内存地址信息,直到所述下次度量周期开始或者所述缺页找回队列表中所有所述找回虚拟内存地址都检测完成。

3、进一步地,在运行目标程序的任一进程的情况下,确定所述进程的虚拟内存地址顺序的步骤,包括:在运行所述进程的情况下,为所述进程的对象信息分配所述虚拟内存地址;基于所有所述虚拟内存地址,生成所述进程的进程页表;基于所述进程页表,确定所述进程的所述虚拟内存地址顺序。

4、进一步地,生成度量检测地址表的步骤,包括:基于所述虚拟内存地址顺序,检查每个所述虚拟内存地址是否映射有所述物理地址;在所述虚拟内存地址实际映射有所述物理地址的情况下,基于所述物理地址读取所述虚拟内存地址对应的所述内存地址信息;基于所有映射有所述物理地址的所述虚拟内存地址以及与所述虚拟内存地址对应的所述内存地址信息,生成所述度量检测地址表。

5、进一步地,生成缺页找回队列表的步骤,包括:基于所述虚拟内存地址顺序,检查每个所述虚拟内存地址是否映射有所述物理地址;在所述虚拟内存地址未映射有所述物理地址的情况下,将所述虚拟内存地址表征为所述缺页虚拟内存地址,并放入至缺页找回队列;基于所述缺页找回队列,找回所述缺页虚拟内存地址映射的所述物理地址;在所述缺页虚拟内存地址找回所述物理地址的情况下,将所述缺页虚拟内存地址表征为所述找回虚拟内存地址,并基于所述物理地址,读取所述找回虚拟内存地址对应的所述内存地址信息;基于所有所述找回虚拟内存地址以及与所述找回虚拟内存地址对应的所述内存地址信息,生成所述缺页找回队列表。

6、进一步地,在基于所述缺页找回队列,找回所述缺页虚拟内存地址映射的所述物理地址之后,还包括:在所述缺页虚拟内存地址找回所述物理地址的情况下,确定当前检查的所述正常虚拟内存地址;基于所述虚拟内存地址顺序,判断所述缺页虚拟内存地址是否位于所述正常虚拟内存地址之后;在所述缺页虚拟内存地址位于所述正常虚拟内存地址之后的情况下,基于所述虚拟内存地址顺序,将所述缺页虚拟内存地址放入至所述度量检测地址表。

7、进一步地,在基于所述缺页找回队列,找回所述缺页虚拟内存地址映射的所述物理地址之后,还包括:在所述缺页虚拟内存地址找回所述物理地址的情况下,将所述缺页虚拟内存地址从所述缺页找回队列中删除;判断所述找回虚拟内存地址是否检测完成且所述找回虚拟内存地址所属的所述进程是否关闭;在所述找回虚拟内存地址未检测完成且所述找回虚拟内存地址所属的所述进程未关闭的情况下,将所述找回虚拟内存地址记录至所述缺页找回队列表。

8、进一步地,检测每个所述正常虚拟内存地址对应的内存地址信息的步骤,包括:确定所述正常虚拟内存地址映射的所述物理地址;从所述物理地址指示的物理存储空间中获取所述正常虚拟内存地址对应的内存地址信息;将所述内存地址信息读取至内存空间,并在所述内存空间中计算所述内存地址信息的哈希值;从预设哈希基准库中获取与所述正常虚拟内存地址对应的哈希基准值,其中,所述预设哈希基准库预先存储有所述虚拟内存地址对应的所述哈希基准值;对比所述哈希值与所述哈希基准值,并在所述哈希值与所述哈希基准值相等的情况下,确定对所述内存地址信息检测通过。

9、根据本发明实施例的另一方面,还提供了一种内存地址信息的检测装置,包括:确定单元,用于在运行目标程序的任一进程的情况下,确定所述进程的虚拟内存地址顺序,其中,所述目标程序包括:多个进程,每个所述进程依据所述目标程序的进程运行顺序运行;生成单元,用于基于所述虚拟内存地址顺序,依次判断每个虚拟内存地址是否处于缺页状态,并在所述虚拟内存地址处于所述缺页状态的情况下,跳过所述虚拟内存地址,生成度量检测地址表以及缺页找回队列表,其中,所述度量检测地址表包括:多个正常虚拟内存地址,所述正常虚拟内存地址是指实际映射有物理地址的所述虚拟内存地址,所述缺页找回队列表包括:多个找回虚拟内存地址,所述找回虚拟内存地址是指已经找回所述物理地址的缺页虚拟内存地址,所述缺页虚拟内存地址是指缺失所述物理地址的所述虚拟内存地址;第一检测单元,用于基于所述度量检测地址表,检测每个所述正常虚拟内存地址对应的内存地址信息,并在所有所述正常虚拟内存地址都检测完成的情况下,确定当前度量周期结束;第二检测单元,用于在所述当前度量周期结束之后与下次度量周期开始之前,基于所述缺页找回队列表,检测每个所述找回虚拟内存地址对应的所述内存地址信息,直到所述下次度量周期开始或者所述缺页找回队列表中所有所述找回虚拟内存地址都检测完成。

10、进一步地,所述确定单元包括:第一分配模块,用于在运行所述进程的情况下,为所述进程的对象信息分配所述虚拟内存地址;第一生成模块,用于基于所有所述虚拟内存地址,生成所述进程的进程页表;第一确定模块,用于基于所述进程页表,确定所述进程的所述虚拟内存地址顺序。

11、进一步地,所述生成单元包括:第一检查模块,用于基于所述虚拟内存地址顺序,检查每个所述虚拟内存地址是否映射有所述物理地址;第一读取模块,用于在所述虚拟内存地址实际映射有所述物理地址的情况下,基于所述物理地址读取所述虚拟内存地址对应的所述内存地址信息;第二生成模块,用于基于所有映射有所述物理地址的所述虚拟内存地址以及与所述虚拟内存地址对应的所述内存地址信息,生成所述度量检测地址表。

12、进一步地,所述生成单元还包括:第二检查模块,用于基于所述虚拟内存地址顺序,检查每个所述虚拟内存地址是否映射有所述物理地址;第一放入模块,用于在所述虚拟内存地址未映射有所述物理地址的情况下,将所述虚拟内存地址表征为所述缺页虚拟内存地址,并放入至缺页找回队列;第一找回模块,用于基于所述缺页找回队列,找回所述缺页虚拟内存地址映射的所述物理地址;第二读取模块,用于在所述缺页虚拟内存地址找回所述物理地址的情况下,将所述缺页虚拟内存地址表征为所述找回虚拟内存地址,并基于所述物理地址,读取所述找回虚拟内存地址对应的所述内存地址信息;第三生成模块,用于基于所有所述找回虚拟内存地址以及与所述找回虚拟内存地址对应的所述内存地址信息,生成所述缺页找回队列表。

13、进一步地,所述检测装置还包括:第二确定模块,用于在基于所述缺页找回队列,找回所述缺页虚拟内存地址映射的所述物理地址之后,在所述缺页虚拟内存地址找回所述物理地址的情况下,确定当前检查的所述正常虚拟内存地址;第一判断模块,用于基于所述虚拟内存地址顺序,判断所述缺页虚拟内存地址是否位于所述正常虚拟内存地址之后;第二放入模块,用于在所述缺页虚拟内存地址位于所述正常虚拟内存地址之后的情况下,基于所述虚拟内存地址顺序,将所述缺页虚拟内存地址放入至所述度量检测地址表。

14、进一步地,所述检测装置还包括:第一删除模块,用于在基于所述缺页找回队列,找回所述缺页虚拟内存地址映射的所述物理地址之后,在所述缺页虚拟内存地址找回所述物理地址的情况下,将所述缺页虚拟内存地址从所述缺页找回队列中删除;第二判断模块,用于判断所述找回虚拟内存地址是否检测完成且所述找回虚拟内存地址所属的所述进程是否关闭;第一记录模块,用于在所述找回虚拟内存地址未检测完成且所述找回虚拟内存地址所属的所述进程未关闭的情况下,将所述找回虚拟内存地址记录至所述缺页找回队列表。

15、进一步地,所述第一检测单元包括:第三确定模块,用于确定所述正常虚拟内存地址映射的所述物理地址;第一获取模块,用于从所述物理地址指示的物理存储空间中获取所述正常虚拟内存地址对应的内存地址信息;第三读取模块,用于将所述内存地址信息读取至内存空间,并在所述内存空间中计算所述内存地址信息的哈希值;第二获取模块,用于从预设哈希基准库中获取与所述正常虚拟内存地址对应的哈希基准值,其中,所述预设哈希基准库预先存储有所述虚拟内存地址对应的所述哈希基准值;第一对比模块,用于对比所述哈希值与所述哈希基准值,并在所述哈希值与所述哈希基准值相等的情况下,确定对所述内存地址信息检测通过。

16、根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述任意一项内存地址信息的检测方法。

17、根据本发明实施例的另一方面,还提供了一种电子设备,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述任意一项内存地址信息的检测方法。

18、在本发明中,在运行目标程序的任一进程的情况下,确定进程的虚拟内存地址顺序,基于虚拟内存地址顺序,依次判断每个虚拟内存地址是否处于缺页状态,并在虚拟内存地址处于缺页状态的情况下,跳过虚拟内存地址,生成度量检测地址表以及缺页找回队列表,基于度量检测地址表,检测每个正常虚拟内存地址对应的内存地址信息,并在所有正常虚拟内存地址都检测完成的情况下,确定当前度量周期结束,在当前度量周期结束之后与下次度量周期开始之前,基于缺页找回队列表,检测每个找回虚拟内存地址对应的内存地址信息,直到下次度量周期开始或者缺页找回队列表中所有找回虚拟内存地址都检测完成。

19、在本发明中,可以先确定运行中的进程的虚拟内存地址顺序,然后根据虚拟内存地址顺序,依次判断每个虚拟内存地址是否处于缺页状态,如果虚拟内存地址处于缺页状态,则跳过该虚拟内存地址,以进行下一个非缺页状态的虚拟内存地址的度量,能够根据非缺页状态的虚拟内存地址,生成度量检测地址表以及根据缺页状态的虚拟内存地址,生成缺页找回队列表,之后根据度量检测地址表,检测每个正常虚拟内存地址对应的内存地址信息,并在所有正常虚拟内存地址都检测完成后,确定当前度量周期结束,并在当前度量周期结束之后与下次度量周期开始之前,根据缺页找回队列表,检测每个找回虚拟内存地址对应的内存地址信息,直到下次度量周期开始或者缺页找回队列表中所有找回虚拟内存地址都检测完成,通过遇到缺页项跳过的周期检测和对找回缺页项地址补充度量的触发检测相结合的方式,能够减少资源消耗以及提高检测效率,进而解决了相关技术中在进行内存地址信息检测时,资源消耗较大以及检测效率较低的技术问题。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1