一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于硬件页保护机制的指令级别内存访问监控方法

2022-11-12 10:55:22 来源:中国专利 TAG:


1.本发明涉及内存访问监控技术领域,尤其涉及一种基于硬件页保护机制的指令级别内存访问监控方法。


背景技术:

2.内存访问监控通常被应用于程序调试、性能分析、检查点构建等场景。硬件页保护机制,是处理器内存管理单元控制虚拟内存页面访问权限的一种硬件机制。借助处理器提供的硬件页保护机制,软件层面可以构建对被监控程序透明的内存访问监控系统,即在不修改被监控程序和不要求获得被监控程序源代码的前提下,获取到被监控程序的内存访问行为。
3.以监控内存写访问操作为例,现有技术中基于硬件页保护机制的内存访问监控方法下主要是采用以下方式:内存访问监控系统首先将被监控内存区域的访问权限初始化为只读,即对被监控内存区域实施页写保护;当被监控程序试图执行写操作到被监控内存区域时,处理器内存控制单元将因页面访问权限违例而触发页错误;进一步,被监控程序被中断,并将程序控制权转移至页错误处理函数;页错误处理函数记录被访问到的内存页面的虚拟地址,并将该内存页面的访问权限设置为可写;页错误处理函数执行结束后,被监控程序重新获得程序控制权;被监控程序重新获得程序控制权后,从被中断的写指令处起恢复执行。
4.但是上述页面访问监控方法会存在以下问题:
5.1.使用上述内存访问监控方法,内存访问监控系统只能获取到以虚拟内存页面为单位的内存访问记录,而无法实施更细粒度的内存访问监控,应用范围相对受限。
6.2.使用上述方法执行内存访问监控,内存访问监控系统在监控到对某一内存页面的访问后,需要解除针对被访问内存页面的页保护使得被监控程序能够恢复执行被中断的内存访问操作。而针对被监控内存区域的页保护一旦被解除,内存访问监控系统将无法继续监控到对相应页面的后续访问。


技术实现要素:

7.本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现方法简单、监控精度高、灵活性和易用性强的基于硬件页保护机制的指令级别内存访问监控方法。
8.为解决上述技术问题,本发明提出的技术方案为:
9.一种基于硬件页保护机制的指令级别内存访问监控方法,步骤包括:
10.s01.内存访问监控系统对内存池施加页保护;
11.s02.被监控程序执行过程中,如果被监控程序执行的指令触发页错误,在触发页错误后被监控程序被中断时,被监控程序执行上下文保存在内存中,转步骤s03;若被监控程序执行的指令未触发页错误,则返回步骤s02继续执行;
12.s03.页错误处理函数获得程序控制权限,由所述页错误处理函数执行页错误处理操作;
13.s04.被监控程序在处理器的单步执行模式下恢复执行被中断的内存访问指令;
14.s05.当被监控程序因触发调试异常而中断执行时,调试异常处理函数获得程序控制权限,由所述调试异常处理函数执行调试异常处理操作。
15.进一步的,所述步骤s01中,当只监控写访问时,所述内存访问监控系统对内存池施加页保护具体为将内存池中的所有内存页面的访问权限设置为只允许读访问。
16.进一步的,所述步骤s01中,当同时监控读访问和写访问时,所述内存访问监控系统对内存池施加页保护具体将内存池中的所有内存页面的访问权限设置为不可访问。
17.进一步的,所述步骤s02中,所述被监控程序执行的指令触发页错误包括由于页面访问权限违例触发页错误。
18.进一步的,所述步骤s03中所述页错误处理函数执行页错误处理操作的步骤包括:
19.s301.记录触发页错误的内存访问指令需要访问的虚拟内存地址,即被监控程序正在访问的内存地址;
20.s302.解除针对被监控程序正在访问的内存页面的页保护,将访问权限设置为允许读写操作;
21.s303.修改保存在被中断程序执行上下文中的处理器标志位,配置单步执行模式为有效;
22.s304.页错误处理函数执行结束后,操作系统执行中断恢复,中断恢复结束后,处理器开始进入到单步执行模式。
23.进一步的,所述步骤s304中,中断恢复过程使用中断触发时保存的被中断程序的执行上下文,恢复处理器的寄存器内容和标志位状态;中断恢复结束后,处理器开始进入到单步执行模式。
24.进一步的,所述步骤s05中,所述调试异常处理函数执行调试异常处理操作的步骤包括:
25.s501.修改保存在被中断程序执行上下文中的处理器标志位,配置单步模式标志为无效
26.s502.对被监控程序正在访问的内存页面重新施加页保护;
27.s503.所述调试异常处理处理函数执行结束后,操作系统执行中断恢复,处理器退出单步执行模式。
28.进一步的,所述步骤s05后还包括步骤s06:若被监控程序退出则结束当前监控,否则返回执行步骤s02。
29.与现有技术相比,本发明的优点在于:
30.1、本发明基于硬件页保护机制的指令级别内存访问监控方法,构建的内存访问监控系统能够获取到被监控程序中每一条内存访问指令所访问的虚拟内存地址,且针对监控到的每一次内存访问,能够在访问结束后自动对被访问到的内存页面再次施加页保护以监控到被监控程序对该内存页面的后续访问。
31.2、本发明基于硬件页保护机制的指令级别内存访问监控方法,可以收集指令级别的内存访问行为,监控精度更高;且不要求内存访问监控系统显式地重新保护被监控内存
页面,灵活性和易用性更强。
附图说明
32.图1是本实施例基于硬件页保护机制的指令级别内存访问监控方法的实现流程示意图。
具体实施方式
33.以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
34.本发明核心思想是通过融合处理器硬件层面提供的页保护机制和单步执行模式,构建一种更加灵活且更细粒度的内存访问监控机制。考虑在单步执行模式下,处理器每执行一条指令,便会中断正在被执行的程序,并触发调试异常。本发明利用处理器单步执行模式的上述特性,实现针对被访问内存页面的自动重保护。
35.如图1所示,本实施例基于硬件页保护机制的指令级别内存访问监控方法的步骤包括:
36.s01.内存访问监控系统对内存池施加页保护;
37.s02.被监控程序执行过程中,如果被监控程序执行的指令触发页错误,在触发页错误后被监控程序被中断时,被监控程序执行上下文保存在内存中,转步骤s03;若被监控程序执行的指令未触发页错误,则返回步骤s02继续执行;
38.s03.页错误处理函数获得程序控制权限,由所述页错误处理函数执行页错误处理操作;
39.s04.被监控程序在处理器的单步执行模式下恢复执行被中断的内存访问指令;
40.s05.当被监控程序因触发调试异常而中断执行时,调试异常处理函数获得程序控制权限,由所述调试异常处理函数执行调试异常处理操作;
41.s06.若被监控程序退出则结束当前监控,否则返回执行步骤s02。
42.上述步骤s01中,当只监控写访问时,内存访问监控系统对内存池施加页保护具体为将内存池中的所有内存页面的访问权限设置为只允许读访问。当同时监控读访问和写访问时,所述内存访问监控系统对内存池施加页保护具体将内存池中的所有内存页面的访问权限设置为不可访问。即针对只监控写访问的情形,施加页保护具体通过将内存池中的所有内存页面的访问权限设置为只允许读访问。针对同时监控读访问和写访问的情形,施加页保护则具体通过为将内存池中的所有内存页面的访问权限设置为不可访问,以针对只监控写访问、同时监控读访问和写访问的不同情形,对内存池采用不同的施加页保护方式。
43.本实施例步骤s03中,页错误处理函数执行页错误处理操作的步骤包括:
44.s301.记录触发页错误的内存访问指令需要访问的虚拟内存地址,即被监控程序正在访问的内存地址;
45.s302.解除针对被监控程序正在访问的内存页面的页保护,将访问权限设置为允许读写操作;
46.s303.修改保存在被中断程序执行上下文中的处理器标志位,配置单步执行模式为有效(具体配置为1);
47.s304.页错误处理函数执行结束后,操作系统执行中断恢复,中断恢复结束后,处理器开始进入到单步执行模式。
48.本实施例通过上述步骤,在页错误处理函数获取授权后,执行页错误处理操作,记录被监控程序正在访问的内存地址,同时解除针对被监控程序正在访问的内存页面的页保护,以及修改处理器标志位以在中断恢复后进入单步执行模式,直至页错误处理函数执行结束后,操作系统执行中断恢复,使得能够获取到被监控程序中每一条内存访问指令所访问的虚拟内存地址。
49.上述步骤s304中,具体中断恢复过程使用中断触发时保存的被中断程序的执行上下文,恢复处理器的寄存器内容和标志位状态,中断恢复结束后,处理器开始进入到单步执行模式。
50.本实施例步骤s05中,调试异常处理函数执行调试异常处理操作的步骤包括:
51.s501.修改保存在被中断程序执行上下文中的处理器标志位,配置单步模式标志为无效(具体配置为0);
52.s502.对被监控程序正在访问的内存页面重新施加页保护;
53.s503.调试异常处理处理函数执行结束后,操作系统执行中断恢复,处理器退出单步执行模式。
54.本实施例通过上述步骤,在调试异常处理函数获得授权后,执行调试异常处理操作,修改处理器标志位以在操作系统执行中断恢复后处理器退出单步执行模式,同时对被监控程序正在访问的内存页面重新施加页保护,使得针对监控到的每一次内存访问,能够在访问结束后自动对被访问到的内存页面再次施加页保护以监控到被监控程序对该内存页面的后续访问。
55.在具体应用实施例中,本发明基于硬件页保护机制的指令级别内存访问监控方法的详细步骤:
56.第一步,内存访问监控系统对内存池施加页保护:针对只监控写访问的情形,为将内存池中的所有内存页面的访问权限设置为只允许读访问,以施加页保护;针对同时监控读访问和写访问的情形,将内存池中的所有内存页面的访问权限设置为不可访问,以施加页保护。
57.第二步,被监控程序执行过程中,若被监控程序访问到被保护的内存页面,将因页面访问权限违例而触发页错误,触发页错误后,被监控程序将被中断,被监控程序执行上下文将保存在内存中,转第四步;若被监控程序执行的指令未触发页错误,则转第二步继续执行。
58.第三步,页错误处理函数获得程序控制权限,由页错误处理函数页错误处理操作,包括:
59.3.1)记录触发页错误的内存访问指令试图访问的虚拟内存地址,即被监控程序正在访问的内存地址;
60.3.2)解除针对被监控程序正在访问的内存页面的页保护,将其访问权限设置为允许读写操作;
61.3.3)修改保存在被中断程序执行上下文中的处理器标志位,将单步模式标志置1;
62.3.4)页错误处理函数执行结束,操作系统执行中断恢复;中断恢复过程使用中断
触发时保存的被中断程序的执行上下文,恢复处理器的寄存器内容和标志位状态;中断恢复结束后,处理器开始进入到单步执行模式。
63.第四步,被监控程序在处理器的单步执行模式下恢复执行被中断的内存访问指令。
64.第五步,被监控程序因触发调试异常而被中断执行后,调试异常处理函数获得程序控制权限,由调试异常处理函数执行调试异常处理操作,包括:
65.5.1)修改保存在被中断程序执行上下文中的处理器标志位,将单步模式标志置0;
66.5.2)对被监控程序正在访问的内存页面,重新施加页保护;
67.5.3)调试异常处理函数执行结束,操作系统执行中断恢复,处理器退出单步执行模式。
68.第六步,若被监控程序退出,步骤结束;否则,转第二步。
69.本发明通过上述方法实现基于硬件页保护机制的指令级别内存访问监控,对内存访问监控过程中,能够获取到被监控程序中每一条内存访问指令所访问的虚拟内存地址,且针对监控到的每一次内存访问,能够在访问结束后自动对被访问到的内存页面再次施加页保护以监控到被监控程序对该内存页面的后续访问;同时还可以收集指令级别的内存访问行为,监控精度更高,且不要求内存访问监控系统显式地重新保护被监控内存页面,可以基于硬件页保护机制实现灵活、高效的指令级别内存访问监控。
70.上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献