CN111552608A - 一种驱动内存监控方法及系统 - Google Patents
一种驱动内存监控方法及系统 Download PDFInfo
- Publication number
- CN111552608A CN111552608A CN202010274603.6A CN202010274603A CN111552608A CN 111552608 A CN111552608 A CN 111552608A CN 202010274603 A CN202010274603 A CN 202010274603A CN 111552608 A CN111552608 A CN 111552608A
- Authority
- CN
- China
- Prior art keywords
- memory
- driver
- target monitoring
- release
- allocation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
Abstract
本发明公开了一种驱动内存监控方法及系统,涉及通信技术领域,该方法包括以下步骤:识别目标监控驱动,遍历目标监控驱动的函数地址符号表,构建对应目标监控驱动的内存分配和释放行为的分类和过滤规则;在内核对应的内存分配接口和内存释放接口添加监控动作,当目标监控驱动运行至监控动作时,匹配内存分配和释放行为的分类和过滤规则来记录目标监控驱动内存的分配和释放特征;输出目标监控驱动的分配和释放信息。本发明能够监控内核内存接口的内存调用情况,从而准确获得驱动的内存使用情况,为对驱动间的内存竞争情况进行有效分析提供数据依据,为后期工作人员进行有效调控提供便利。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种驱动内存监控方法及系统。
背景技术
对于Linux内核内存分配出现失败的情况,引起的原因主要是各驱动之间竞争内核空间的内存导致的,受限当前技术手段,内核空间的内存竞争情况无法得到掌控,故而内核内存分配工作中的分析难点。
为了解决上述问题,需要对内存的调用情况进行监控,从而了解各驱动的内存调用情况。
因此,急需一种新的驱动内存监控方法,能够解决上述问题,满足技术需求。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种驱动内存监控方法及系统,能够监控内核内存接口的内存调用情况,从而准确获得驱动的内存使用情况,为对驱动间的内存竞争情况进行有效分析提供数据依据,为后期工作人员进行有效调控提供便利。
为达到以上目的,本发明采取的技术方案是:
第一方面,本发明公开一种驱动内存监控方法,所述方法包括以下步骤:
识别目标监控驱动,遍历目标监控驱动的函数地址符号表,构建对应所述目标监控驱动的内存分配和释放行为的分类和过滤规则;
在内核对应的内存分配接口和内存释放接口添加监控动作,当所述目标监控驱动运行至所述监控动作时,匹配所述内存分配和释放行为的分类和过滤规则来记录所述目标监控驱动内存的分配和释放特征;
输出所述目标监控驱动的分配和释放信息。
具体的,所述识别目标监控驱动具体包括以下步骤:
根据所述目标监控驱动的驱动名称,遍历驱动链表,判断是否存在所述目标监控驱动。
具体的,所述识别目标监控驱动具体包括以下步骤:
监测驱动加载进程,将正在加载的驱动与所述目标监控驱动比对,判断所述正在加载的驱动是否为所述目标监控驱动。
具体的,所述遍历目标监控驱动的函数地址符号表,构建目标监控驱动内存分配和释放行为的分类和过滤规则,具体包括以下步骤:
使用所述目标监控驱动的函数地址符号表中函数地址值的上限值和下限值作为基础的匹配单元,并将所有匹配单元按照大小顺序进行组织。
具体的,所述当所述目标监控驱动运行至所述监控动作时,匹配所述内存分配和释放行为的分类和过滤规则来记录所述目标监控驱动内存的分配和释放特征,具体包括以下步骤:
逐层识别所述内存分配接口或所述内存释放接口根据回溯函数调用的调用子函数对应的函数地址值;
根据各所述调用子函数的函数地址值匹配所述目标监控驱动内存分配和释放行为的分类和过滤规则;
记录所述目标监控驱动内存的分配和释放特征。
第二方面,本发明还公开一种驱动内存监控系统,所述系统包括:
驱动识别单元,其用于识别目标监控驱动,遍历目标监控驱动的函数地址符号表,构建对应所述目标监控驱动的内存分配和释放行为的分类和过滤规则;
内存监控单元,其用于在内核对应的内存分配接口和内存释放接口添加监控动作,当所述目标监控驱动运行至所述监控动作时,匹配所述内存分配和释放行为的分类和过滤规则来记录所述目标监控驱动内存的分配和释放特征;
调用上报单元,其用于输出所述目标监控驱动的分配和释放信息。
具体的,所述驱动识别单元,其具体用于根据所述目标监控驱动的驱动名称,遍历驱动链表,判断是否存在所述目标监控驱动。
具体的,所述驱动识别单元,其具体用于监测驱动加载进程,将正在加载的驱动与所述目标监控驱动比对,判断所述正在加载的驱动是否为所述目标监控驱动。
具体的,所述内存监控单元,其具体用于使用所述目标监控驱动的函数地址符号表中函数地址值的上限值和下限值作为基础的匹配单元,并将所有匹配单元按照大小顺序进行组织。
具体的,所述内存监控单元,其具体用于逐层识别所述内存分配接口或所述内存释放接口根据回溯函数调用的调用子函数对应的函数地址值;
所述内存监控单元,其具体用于根据各所述调用子函数的函数地址值匹配所述目标监控驱动内存分配和释放行为的分类和过滤规则,记录所述目标监控驱动内存的分配和释放特征。
与现有技术相比,本发明的优点在于:
本发明能够监控内核内存接口的内存调用情况,从而准确获得驱动的内存使用情况,为对驱动间的内存竞争情况进行有效分析提供数据依据,为后期工作人员进行有效调控提供便利。
附图说明
图1为本发明实施例一中驱动内存监控方法的步骤流程图;
图2为本发明实施例一中驱动内存监控方法中步骤A1~A3的步骤流程图;
图3为本发明实施例二中驱动内存监控系统的结构框图;
图中:1、驱动识别单元;2、内存监控单元;3、调用上报单元。
具体实施方式
以下结合附图对本发明的实施例作进一步详细说明。
本发明实施例提供一种驱动内存监控方法及系统,能够监控内核内存接口的内存调用情况,从而准确获得驱动的内存使用情况,为对驱动间的内存竞争情况进行有效分析提供数据依据,为后期工作人员进行有效调控提供便利。
为达到上述技术效果,本申请的总体思路如下:
一种驱动内存监控方法,该方法包括以下步骤:
S1、识别目标监控驱动,遍历目标监控驱动的函数地址符号表,构建对应目标监控驱动的内存分配和释放行为的分类和过滤规则;
S2、在内核对应的内存分配接口和内存释放接口添加监控动作,当目标监控驱动运行至监控动作时,匹配内存分配和释放行为的分类和过滤规则来记录目标监控驱动内存的分配和释放特征;
S3、输出目标监控驱动的分配和释放信息。
以下结合附图对本发明的实施例作进一步详细说明。
实施例一
参见图1、2所示,本发明实施例一提供一种驱动内存监控方法,该方法包括以下步骤:
S1、识别目标监控驱动,遍历目标监控驱动的函数地址符号表,构建对应目标监控驱动的内存分配和释放行为的分类和过滤规则;
S2、在内核对应的内存分配接口和内存释放接口添加监控动作,当目标监控驱动运行至监控动作时,匹配内存分配和释放行为的分类和过滤规则来记录目标监控驱动内存的分配和释放特征;
S3、输出目标监控驱动的分配和释放信息。
本发明实施例中,首先识别需要监控的目标监控驱动,并遍历目标监控驱动的函数地址符号表,即可获得目标监控驱动对应的函数地址区间,即获取了该目标监控驱动对应的调用函数的函数地址值的上限值和下限值,并按照大小顺序对各调用函数进行组织,优选地按照二叉树进行组织;
构建对应目标监控驱动的内存分配和释放行为的分类和过滤规则的具体情况为:在发生内存分配或者释放行为时,判定该行为归属的驱动以及对应的调用函数,当未调用对应目标监控驱动的内存调用函数时,即该行为对应的调用函数不在目标监控驱动的函数地址值的上限值和下限值之间,则判断该次调用不属于当前内存监控范围,不进行监控对应的操作,而如果调用了对应目标监控驱动的内存调用函数时,即该行为对应的调用函数在目标监控驱动的函数地址值的上限值和下限值之间,则判断该次调用属于当前内存监控范围;
进而,在内核对应的内存分配接口和内存释放接口添加监控动作,当目标监控驱动运行至监控动作时,匹配内存分配和释放行为的分类和过滤规则来记录目标监控驱动内存的分配和释放特征;
最后,输出目标监控驱动的分配和释放信息
需要说明的是,函数地址符号表具体是对应内存调用函数的函数地址符号表,而内存调用函数则包括内存分配函数和内存释放函数。
本发明能够监控内核内存接口的内存调用情况,从而准确获得驱动的内存使用情况,为对驱动间的内存竞争情况进行有效分析提供数据依据,为后期工作人员进行有效调控提供便利。
更具体的,目标监控驱动的分配和释放信息可以包括当前驱动分配的内存大小、分配每种页大小的次数、驱动函数名称和地址值以及分配函数或者释放函数处理的内存大小;
而目标监控驱动进行内存调用或内存释放的用户指令包括输出的各类形式,可以是按照驱动名称排序输出、按照当前驱动分配的内存大小排序输出、单独输出指定的目标驱动的分配和释放特征,其分配和释放函数按照内存大小或者名称排序输出。
本发明实施例中的另一种实施方式中,该方法在识别目标监控驱动时,具体包括以下步骤:
根据目标监控驱动的驱动名称,遍历驱动链表,判断是否存在目标监控驱动。
本发明实施例中的另一种实施方式中,该方法在识别目标监控驱动时,具体包括以下步骤:
监测驱动加载进程,将正在加载的驱动与目标监控驱动比对,判断正在加载的驱动是否为目标监控驱动。
本发明实施例中的另一种实施方式中,该方法中,遍历目标监控驱动的函数地址符号表,构建目标监控驱动内存分配和释放行为的分类和过滤规则,具体包括以下步骤:
使用目标监控驱动的函数地址符号表中函数地址值的上限值和下限值作为基础的匹配单元,并将所有匹配单元按照大小顺序进行组织。
本发明实施例中的另一种实施方式中,当目标监控驱动运行至监控动作时,匹配内存分配和释放行为的分类和过滤规则来记录目标监控驱动内存的分配和释放特征,具体包括以下步骤:
A1、逐层识别内存分配接口或内存释放接口根据回溯函数调用的调用子函数对应的函数地址值;
A2、根据各调用子函数的函数地址值匹配目标监控驱动内存分配和释放行为的分类和过滤规则;
A3、记录目标监控驱动内存的分配和释放特征。
本发明实施例中,在内核对应的内存分配接口和内存释放接口添加监控动作时,具体工作情况包括:当前分配或者释放的驱动名称、当前驱动分配或者释放的内存总体大小、利用伙伴系统分配或释放各类不同大小页面时的次数或当前调用的目标驱动中的函数地址符号。
另外,在对目标驱动进行监控时,根据当前的内存分配接口或者内存释放接口合理选择回溯层数,按照回溯层次查找其函数调用栈;将回溯的函数调用地址与驱动内存调用函数的函数地址进行比对,确认当前的函数分配行为归属的驱动。
需要说明的是,内存调用信息包括当前驱动已分配内存大小、驱动函数名称、当前内存调用函数地址。
具体的,内存分配接口包括slab系统内存分配接口以及伙伴系统内存分配接口;
内存释放接口包括slab系统内存释放接口以及伙伴系统内存释放接口。
本发明实施例中,给出一种具体的实施方式,具体操作实例如下:
通常情况下,在系统启动过程中,存在各类可加载和可卸载的驱动模块运行,Linux内核中存在驱动描述对象与加载的驱动一一对应,并且驱动对象的组织形态是链表形式,在其描述的对象属性中存在驱动名称,可以用来辨识驱动。驱动的函数地址符号表随驱动文件自生携带,在加载过程,各函数符号在的内核空间生成的唯一内核虚拟地址,因而各个加载驱动的函数地址符号表对应的函数区间不同。本发明实施例中的监控方法可以运行在加载的各个驱动模块之前,从而全面的监控目标驱动从初始化过程到运行流程的内存分配和释放行为。
步骤Q1,解析程序内部缺省的配置值或者外部配置文件作为输入目标项,由此确认需要进行监控的各类驱动名称,即确认目标监控驱动的驱动名称,
当用于监控驱动的监控程序在被监控启动加载之前已被加载,则利用kprobe技术,驱动遍历配置项构成名称的表,命中配置表,监控程序创建相关的信息,
当用于监控驱动的监控程序在被监控启动加载之后才被加载,则无需利用kprobe技术,根据名称配置项遍历内核的驱动链表,命中驱动链表,监控程序创建相关的信息,
步骤Q1中,利用内核的kprobe技术在驱动加载过程中完成驱动的动态识别。kprobe技术是动态插桩技术,通过在内核的指定函数中添加探测点,利用探测点来收集信息而不影响内核的运行流程。Kprobe首先保存函数探测点位置的原始指令,然后替换原始指令为异常指令,当内核运行到探测点时,异常指令触发系统跳转进入kprobe自定义的函数中,执行函数定义的信息收集和处理行为,当执行完毕时,恢复原始指令及其上下文,内核按照既有流程运行。Linux驱动的加载流程是统一的,故而在驱动加载过程的最后函数位置加入探测点。通过注册自定义的kprobe函数辨识驱动,在该函数中获取当前的驱动名称,与目标驱动名称列表进行比对,确认当前加载的驱动是否是监控的目标驱动;
步骤Q1中,通过遍历内核的驱动链表来完成驱动的动态识别,在该场景下,暂时还没有监控程序的加载流程,此时内核已经生成相关的加载驱动链表,可按照配置的驱动名称列表逐个匹配内核中已加载驱动列表,确认已加载的驱动是否是监控的目标驱动。
步骤Q2,在驱动调用的内核内存分配和释放函数接口中添加监控动作,可以利用内核的tracepoint技术实现。tracepoint技术是部分内核函数中既有的探测函数,未注册关联函数时,探测函数为空函数,没有任何行为;当注册自定义的关联函数,则该探测函数会调用关联函数,执行相关动作。slab分配和释放接口和伙伴系统分配和释放接口中都存在tracepoint。对每个tracepoint都注册自定义关联函数,当内核运行到tracepoint时,即可执行指定的监控动作。本发明实施例中的监控动作可以通过tracepoint自定义函数控制实现。
步骤Q2中,内核内存分配或者内存释放接口选择回溯函数调用栈层数时,是根据tracepoint在内核内存分配或者释放函数中的位置决定的。slab系统接口kmalloc中的tracepoint探测函数在kmalloc在一级子函数或者二级子函数中,即子函数的子函数中,回溯函数调用栈选择回溯1层至3层,即逐个查找探测函数的调用者,探测函数调用者的调用者,依次类推。伙伴系统接口alloc_pages中的tracepoint函数在其子函数中,但是其他模块常该伙伴系统接口进行封装,所以回溯函数调用栈选择回溯1层至4层。
步骤Q2中,根据获取的的各层调用函数地址值查找前述建立的函数地址值的二叉树,当其中一个调用函数地址值在二叉树的某个节点中时,即确认该分配行为是由该函数地址值区间对应的驱动引起的。
另外,步骤Q2中,tracepoint自定义关联函数同时在查找二叉树命中后,会记录该驱动内存的分配和释放特征。tracepoint的关联函数可以接受该探测函数传入的参数。kmalloc的tracepoint可以传入分配的分配字节大小。alloc_pages的tracepoint可以传入分配的页面大小。分配内存时的内存大小将在驱动统计信息中记录和累加计算;传入的页面大小参数将使得驱动统计信息中该分配页面大小次数增1。命中的函数地址值及其名称也同时进行记录,由于调用函数具备多次重复调用的特征,统计项也记录和累加计算该调用函数的分配大小。释放的函数特征统计方式同理。
步骤Q3,用户指令可以通过debugfs文件接口输出驱动的分配和释放特征。debugfs是内核中伪文件系统,通过读取或者写入文件节点获取内核中的信息。监控程序中会在debugfs文件系统中创建一个文件节点,并向该节点注册读写文件接口的处理函数。当向创建的文件节点写入不同的数值时控制输出驱动分配和释放的信息。在输入特定命令后,可以按照驱动分配总体内存大小进行排序,并输出该驱动的名称、当前分配的内存的总体大小、当前分配的每种页面的次数,驱动分配和释放函数名称,以及各个驱动函数分配和释放函数处理的内存大小。也可以使用其他命令使得统计信息按照驱动名称进行排序输出。在输入特定命令后,可以单独指定驱动的分配和释放特征,并且按照分配内存大小和释放内存大小排序输出。同理,也可以按照函数名称排序输出。
需要说明的是,在驱动动态识别过程中,当驱动名称相符时,便开始增加驱动的内存分配函数和内存释放函数的分类和过滤规则。每个函数地址符号表对应的地址值是唯一的,同时存在不连续的现象,通过逐个遍历,来获取该驱动的函数地址值大小的上限值和下限值。可利用驱动的上限值或者下限值建立函数地址值的二叉树,形成驱动运行过程中分配调用函数的过滤和分类规则。内核运行过程中,当驱动内存分配和释放时查找该二叉树,分配或释放的函数地址值在二叉树中的某个节点时,则是监控的驱动之一引起;而不在二叉树中的某个节点时,该分配行为不是监控的目标驱动引起。
基于同一发明构思,本申请提供了实施例一对应的驱动内存监控系统的实施例,详见实施例二
实施例二
参见图3所示,本发明实施例二提供一种驱动内存监控系统,该系统包括:
驱动识别单元1,其用于识别目标监控驱动,遍历目标监控驱动的函数地址符号表,构建对应目标监控驱动的内存分配和释放行为的分类和过滤规则;
内存监控单元2,其用于在内核对应的内存分配接口和内存释放接口添加监控动作,当目标监控驱动运行至监控动作时,匹配内存分配和释放行为的分类和过滤规则来记录目标监控驱动内存的分配和释放特征;
调用上报单元3,其用于输出目标监控驱动的分配和释放信息。
本发明实施例中,首先识别需要监控的目标监控驱动,并遍历目标监控驱动的函数地址符号表,即可获得目标监控驱动对应的函数地址区间,即获取了该目标监控驱动对应的调用函数的函数地址值的上限值和下限值,并按照大小顺序对各调用函数进行组织,优选地按照二叉树进行组织;
构建对应目标监控驱动的内存分配和释放行为的分类和过滤规则的具体情况为:在发生内存分配或者释放行为时,判定该行为归属的驱动以及对应的调用函数,当未调用对应目标监控驱动的内存调用函数时,即该行为对应的调用函数不在目标监控驱动的函数地址值的上限值和下限值之间,则判断该次调用不属于当前内存监控范围,不进行监控对应的操作,而如果调用了对应目标监控驱动的内存调用函数时,即该行为对应的调用函数在目标监控驱动的函数地址值的上限值和下限值之间,则判断该次调用属于当前内存监控范围;
进而,在内核对应的内存分配接口和内存释放接口添加监控动作,当目标监控驱动运行至监控动作时,匹配内存分配和释放行为的分类和过滤规则来记录目标监控驱动内存的分配和释放特征;
最后,输出目标监控驱动的分配和释放信息
需要说明的是,函数地址符号表具体是对应内存调用函数的函数地址符号表,而内存调用函数则包括内存分配函数和内存释放函数。
本发明能够监控内核内存接口的内存调用情况,从而准确获得驱动的内存使用情况,为对驱动间的内存竞争情况进行有效分析提供数据依据,为后期工作人员进行有效调控提供便利。
更具体的,目标监控驱动的分配和释放信息可以包括当前驱动分配的内存大小、分配每种页大小的次数、驱动函数名称和地址值以及分配函数或者释放函数处理的内存大小;
而目标监控驱动进行内存调用或内存释放的用户指令包括输出的各类形式,可以是按照驱动名称排序输出、按照当前驱动分配的内存大小排序输出、单独输出指定的目标驱动的分配和释放特征,其分配和释放函数按照内存大小或者名称排序输出。
本发明实施例中的另一种实施方式中,驱动识别单元,其具体用于根据目标监控驱动的驱动名称,遍历驱动链表,判断是否存在目标监控驱动。
本发明实施例中的另一种实施方式中,驱动识别单元1,其具体用于监测驱动加载进程,将正在加载的驱动与目标监控驱动比对,判断正在加载的驱动是否为目标监控驱动。
本发明实施例中的另一种实施方式中,内存监控单元2,其具体用于使用目标监控驱动的函数地址符号表中函数地址值的上限值和下限值作为基础的匹配单元,并将所有匹配单元按照大小顺序进行组织。
本发明实施例中的另一种实施方式中,内存监控单元2,其具体用于逐层识别内存分配接口或内存释放接口根据回溯函数调用的调用子函数对应的函数地址值;
内存监控单元2,其具体用于根据各调用子函数的函数地址值匹配目标监控驱动内存分配和释放行为的分类和过滤规则,记录目标监控驱动内存的分配和释放特征。
基于同一发明构思,本申请提供了实施例一对应的存储介质的实施例,详见实施例三
实施例三
本发明第三实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现第一实施例中的所有方法步骤或部分方法步骤。
本发明实现上述第一实施例中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
基于同一发明构思,本申请提供了实施例一对应的设备的实施例,详见实施例四
实施例四
本发明第四实施例还提供一种设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,处理器执行计算机程序时实现第一实施例中的所有方法步骤或部分方法步骤。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、服务器或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、服务器和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种驱动内存监控方法,其特征在于,所述方法包括以下步骤:
识别目标监控驱动,遍历目标监控驱动的函数地址符号表,构建对应所述目标监控驱动的内存分配和释放行为的分类和过滤规则;
在内核对应的内存分配接口和内存释放接口添加监控动作,当所述目标监控驱动运行至所述监控动作时,匹配所述内存分配和释放行为的分类和过滤规则来记录所述目标监控驱动内存的分配和释放特征;
输出所述目标监控驱动的分配和释放信息。
2.如权利要求1所述的方法,其特征在于,所述识别目标监控驱动具体包括以下步骤:
根据所述目标监控驱动的驱动名称,遍历驱动链表,判断是否存在所述目标监控驱动。
3.如权利要求1所述的方法,其特征在于,所述识别目标监控驱动具体包括以下步骤:
监测驱动加载进程,将正在加载的驱动与所述目标监控驱动比对,判断所述正在加载的驱动是否为所述目标监控驱动。
4.如权利要求1所述的方法,其特征在于,所述遍历目标监控驱动的函数地址符号表,构建目标监控驱动内存分配和释放行为的分类和过滤规则,具体包括以下步骤:
使用所述目标监控驱动的函数地址符号表中函数地址值的上限值和下限值作为基础的匹配单元,并将所有匹配单元按照大小顺序进行组织。
5.如权利要求4所述的方法,其特征在于,所述当所述目标监控驱动运行至所述监控动作时,匹配所述内存分配和释放行为的分类和过滤规则来记录所述目标监控驱动内存的分配和释放特征,具体包括以下步骤:
逐层识别所述内存分配接口或所述内存释放接口根据回溯函数调用的调用子函数对应的函数地址值;
根据各所述调用子函数的函数地址值匹配所述目标监控驱动内存分配和释放行为的分类和过滤规则;
记录所述目标监控驱动内存的分配和释放特征。
6.一种驱动内存监控系统,其特征在于,所述系统包括:
驱动识别单元,其用于识别目标监控驱动,遍历目标监控驱动的函数地址符号表,构建对应所述目标监控驱动的内存分配和释放行为的分类和过滤规则;
内存监控单元,其用于在内核对应的内存分配接口和内存释放接口添加监控动作,当所述目标监控驱动运行至所述监控动作时,匹配所述内存分配和释放行为的分类和过滤规则来记录所述目标监控驱动内存的分配和释放特征;
调用上报单元,其用于输出所述目标监控驱动的分配和释放信息。
7.如权利要求6所述的系统,其特征在于:
所述驱动识别单元,其具体用于根据所述目标监控驱动的驱动名称,遍历驱动链表,判断是否存在所述目标监控驱动。
8.如权利要求6所述的系统,其特征在于:
所述驱动识别单元,其具体用于监测驱动加载进程,将正在加载的驱动与所述目标监控驱动比对,判断所述正在加载的驱动是否为所述目标监控驱动。
9.如权利要求6所述的系统,其特征在于:
所述内存监控单元,其具体用于使用所述目标监控驱动的函数地址符号表中函数地址值的上限值和下限值作为基础的匹配单元,并将所有匹配单元按照大小顺序进行组织。
10.如权利要求9所述的系统,其特征在于:
所述内存监控单元,其具体用于逐层识别所述内存分配接口或所述内存释放接口根据回溯函数调用的调用子函数对应的函数地址值;
所述内存监控单元,其具体用于根据各所述调用子函数的函数地址值匹配所述目标监控驱动内存分配和释放行为的分类和过滤规则,记录所述目标监控驱动内存的分配和释放特征。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010274603.6A CN111552608B (zh) | 2020-04-09 | 2020-04-09 | 一种驱动内存监控方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010274603.6A CN111552608B (zh) | 2020-04-09 | 2020-04-09 | 一种驱动内存监控方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111552608A true CN111552608A (zh) | 2020-08-18 |
CN111552608B CN111552608B (zh) | 2022-11-18 |
Family
ID=72002970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010274603.6A Active CN111552608B (zh) | 2020-04-09 | 2020-04-09 | 一种驱动内存监控方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111552608B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112817986A (zh) * | 2021-02-26 | 2021-05-18 | 北京易捷思达科技发展有限公司 | 适用于Linux生产环境的数据结构修复方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101414339A (zh) * | 2007-10-15 | 2009-04-22 | 北京瑞星国际软件有限公司 | 保护进程内存及确保驱动程序加载的安全性的方法 |
US20100211754A1 (en) * | 2009-02-13 | 2010-08-19 | Crosby Peter Anthony | Memory utilization analysis |
CN104915151A (zh) * | 2015-06-02 | 2015-09-16 | 杭州电子科技大学 | 多虚拟机系统中一种主动共享的内存超量分配方法 |
WO2016091078A1 (zh) * | 2014-12-11 | 2016-06-16 | 北京奇虎科技有限公司 | 在Linux驱动中绑定内核符号的方法及装置 |
CN107436845A (zh) * | 2017-07-27 | 2017-12-05 | 南京华飞数据技术有限公司 | 一种动态内存监测系统及其监测方法 |
CN110908865A (zh) * | 2019-11-15 | 2020-03-24 | 珠海豹趣科技有限公司 | 内存泄漏监控方法、装置及电子设备 |
-
2020
- 2020-04-09 CN CN202010274603.6A patent/CN111552608B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101414339A (zh) * | 2007-10-15 | 2009-04-22 | 北京瑞星国际软件有限公司 | 保护进程内存及确保驱动程序加载的安全性的方法 |
US20100211754A1 (en) * | 2009-02-13 | 2010-08-19 | Crosby Peter Anthony | Memory utilization analysis |
WO2016091078A1 (zh) * | 2014-12-11 | 2016-06-16 | 北京奇虎科技有限公司 | 在Linux驱动中绑定内核符号的方法及装置 |
CN104915151A (zh) * | 2015-06-02 | 2015-09-16 | 杭州电子科技大学 | 多虚拟机系统中一种主动共享的内存超量分配方法 |
CN107436845A (zh) * | 2017-07-27 | 2017-12-05 | 南京华飞数据技术有限公司 | 一种动态内存监测系统及其监测方法 |
CN110908865A (zh) * | 2019-11-15 | 2020-03-24 | 珠海豹趣科技有限公司 | 内存泄漏监控方法、装置及电子设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112817986A (zh) * | 2021-02-26 | 2021-05-18 | 北京易捷思达科技发展有限公司 | 适用于Linux生产环境的数据结构修复方法及装置 |
CN112817986B (zh) * | 2021-02-26 | 2022-03-22 | 北京易捷思达科技发展有限公司 | 适用于Linux生产环境的数据结构修复方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111552608B (zh) | 2022-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9678858B2 (en) | Test coverage analysis | |
CN106933733B (zh) | 一种确定内存泄露位置的方法和装置 | |
US9317400B2 (en) | Code coverage rate determination method and system | |
CN110309051B (zh) | 管理测试用例的方法、系统、设备及存储介质 | |
US20080222501A1 (en) | Analyzing Test Case Failures | |
CN106997316B (zh) | 内存异常增长的检测系统及方法 | |
KR101979329B1 (ko) | 바이너리의 취약점을 유발하는 입력데이터 위치 추적 방법 및 그 장치 | |
CN113342685A (zh) | 精准测试方法、装置、计算机设备和存储介质 | |
CN110928777B (zh) | 测试用例的处理方法、装置、设备及存储介质 | |
CN111913878A (zh) | 基于程序分析结果的字节码插桩方法、装置及存储介质 | |
CN111008192A (zh) | 一种数据管理方法、装置、设备及介质 | |
CN111552608B (zh) | 一种驱动内存监控方法及系统 | |
CN111125697B (zh) | 基于缺陷摘要的智能合约缺陷可触发性检测方法及系统 | |
CN106054813B (zh) | 分类显示履历加工程序的数值控制装置 | |
CN114328168A (zh) | 异常检测方法、装置、计算机设备和存储介质 | |
CN111783094A (zh) | 一种数据分析方法、装置、服务器及可读存储介质 | |
CN114500249B (zh) | 一种根因定位方法和装置 | |
CN107656849B (zh) | 一种软件系统性能问题定位方法以及装置 | |
CN111124791A (zh) | 一种系统测试方法及装置 | |
CN110727565A (zh) | 一种网络设备平台信息收集方法及系统 | |
US7203707B2 (en) | System and method for knowledge asset acquisition and management | |
CN111143229A (zh) | 软件测试方法及装置、计算机设备及计算机可读存储介质 | |
CN114048488B (zh) | 漏洞检测方法及系统 | |
US10489428B2 (en) | Existing system processing specification extractor | |
CN115221031A (zh) | 异常信息处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |