CN110955546B - 一种内存地址监控方法、装置及电子设备 - Google Patents

一种内存地址监控方法、装置及电子设备 Download PDF

Info

Publication number
CN110955546B
CN110955546B CN201811128905.1A CN201811128905A CN110955546B CN 110955546 B CN110955546 B CN 110955546B CN 201811128905 A CN201811128905 A CN 201811128905A CN 110955546 B CN110955546 B CN 110955546B
Authority
CN
China
Prior art keywords
thread
monitored
memory address
memory
threads
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.)
Active
Application number
CN201811128905.1A
Other languages
English (en)
Other versions
CN110955546A (zh
Inventor
姜先绪
向和礼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maipu Communication Technology Co Ltd
Original Assignee
Maipu Communication Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Maipu Communication Technology Co Ltd filed Critical Maipu Communication Technology Co Ltd
Priority to CN201811128905.1A priority Critical patent/CN110955546B/zh
Publication of CN110955546A publication Critical patent/CN110955546A/zh
Application granted granted Critical
Publication of CN110955546B publication Critical patent/CN110955546B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例提供一种内存地址监控方法、装置及电子设备,属于计算机技术领域。该方法包括:获取当前被调度的待运行线程,读取所述待运行线程所对应进程的所有线程共享的待监控内存地址;将所述待监控内存地址写入处理器中的地址监控寄存器。从而实现多线程进程中的任何线程运行时都能对本进程的同一地址进行监控,进而能够有效解决现有技术中存在的在进行进程切换时,容易导致误检和漏检,使得不同进程和线程间无法有效进行地址监控的技术问题。

Description

一种内存地址监控方法、装置及电子设备
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种内存地址监控方法、装置及电子设备。
背景技术
当今的计算机系统越来越庞大和复杂,一个具备某种复杂功能的程序往往是多人合作开发的结果。在系统正常运行过程中,可能会由于编码或其它原因导致的程序缺陷会随意修改不应该修改的内存地址,如越界修改和飞指针修改等。此时就需要用到内存地址监控功能,将可能会被改写的地址监控起来,后面一旦有人再对该地址进行改写则会触发异常,将改写者的现场记录下来,获得非法改写者的信息。
目前内存地址监控在VxWorks(一种实时操作系统)等所有任务都运行在同一地址空间的系统中比较容易实现。可以直接将需要监控的地址写入CPU的监控寄存器即可,由于所有任务都是同一地址空间,那么无论是谁修改了该地址都会准确的触发异常得到我们想要的效果。但是在linux等进程间地址空间隔离的系统中,实现起来就要复杂得多,以及在多线程进程中,容易导致误检和漏检,使得不同线程间无法有效进行地址监控。
发明内容
为解决上述问题,本发明实施例提供一种内存地址监控方法、装置及电子设备。
第一方面,本发明实施例提供了一种内存地址监控方法,所述方法包括:获取当前被调度的待运行线程,读取所述待运行线程所对应进程的所有线程共享的待监控内存地址;将所述待监控内存地址写入处理器中的地址监控寄存器。
进一步地,在所述获取当前被调度的待运行线程之前,所述方法还包括:将所述待监控内存地址写入所述所有线程共享的内存结构中的预设字段。
进一步地,将所述待监控内存地址写入处理器中的地址监控寄存器,包括:将所述预设字段中的所述待监控内存地址写入所述处理器中的所述地址监控寄存器。
进一步地,所述将所述待监控内存地址写入处理器中的地址监控寄存器,包括:将所述预设字段中的所述待监控内存地址写入所述处理器中的所述地址监控寄存器。
进一步地,所述所有线程共享的内存结构包括所述进程的所有线程共享的用户空间虚拟内存结构,所述用户空间虚拟内存结构中包括一个记录所述待监控内存地址的预设字段。
第二方面,本发明实施例提供了一种内存地址监控方法,所述方法包括:获取申请内存地址监控的线程所对应进程的领导线程;根据所述领导线程获取所述进程中的所有线程;将待监控内存地址依次写入所述所有线程分别对应的现场信息中;获取当前正在运行或当前被调度待运行的线程,读取所述正在运行或当前被调度待运行的线程的现场信息中的待监控内存地址;将所述待监控内存地址写入处理器中的地址监控寄存器。
第三方面,本发明实施例提供一种内存地址监控装置,所述装置包括:数据处理模块,用于获取当前被调度的待运行线程,读取所述待运行线程所对应进程的所有线程共享的待监控内存地址;第一数据写入模块,用于将所述待监控内存地址写入处理器中的地址监控寄存器。
进一步地,在所述数据处理模块之前,还包括:第二数据写入模块,用于将所述待监控内存地址写入所述所有线程共享的内存结构中的预设字段。
进一步地,所述第一数据写入模块还用于:将所述预设字段中的所述待监控内存地址写入所述处理器中的所述地址监控寄存器。
第四方面,本发明实施例提供一种内存地址监控装置,所述装置包括:第一数据处理模块,用于获取申请内存地址监控的线程所对应进程的领导线程;第二数据处理模块,用于根据所述领导线程获取所述进程中的所有线程;数据写入模块,用于将待监控内存地址依次写入所述所有线程分别对应的现场信息中;第三数据处理模块,用于获取当前正在运行或当前被调度待运行的线程,读取所述正在运行或当前被调度待运行的线程的现场信息中的待监控内存地址;存储模块,用于将所述待监控内存地址写入处理器中的地址监控寄存器。
第五方面,本发明实施例提供一种电子设备,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如上述第一方面提供的方法;或者,当所述计算机可读取指令由所述处理器执行时,运行如上述第二方面提供的方法。
与现有技术相比,本发明实施例提供的一种内存地址监控方法、装置及电子设备带来了以下有益效果:通过获取当前被调度的待运行线程,读取所述待运行线程所对应进程的所有线程共享的待监控内存地址,以通过将所述待监控内存地址写入处理器中的地址监控寄存器。从而实现多线程进程中的任何线程运行时都能对本进程的同一地址进行监控,进而能够有效解决现有技术中存在的在进程内进行线程切换时,容易导致误检和漏检,使得不同线程间无法有效进行地址监控的技术问题。
本发明的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明第一实施例提供的一种内存地址监控方法的流程图;
图2为本发明第二实施例提供的一种内存地址监控方法的流程图;
图3为本发明第三实施例提供的一种内存地址监控装置的结构框图;
图4为本发明第四实施例提供的一种内存地址监控装置的结构框图;
图5示出了一种可应用于本发明实施例中的电子设备的结构框图;
图6为本发明实施例提供的一种电子设备的另一种结构示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
第一实施例
由于现有的内存地址监控在多线程进程进行线程切换时,容易导致误检和漏检,使得不同线程间无法有效进行地址监控,为了在不同线程间有效进行地址监控,本实施例提供了一种内存地址监控方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。以下对本实施例进行详细介绍。
请参照图1,图1为本发明实施例提供的一种内存地址监控方法的流程图,所述方法包括如下步骤:
步骤S101:获取当前被调度的待运行线程,读取所述待运行线程所对应进程的所有线程共享的待监控内存地址。
可选地,该进程包括多个线程。
所有线程共享的内存结构包括所述进程的所有线程共享的用户空间虚拟内存结构,所述用户空间虚拟内存结构中包括一个记录所述待监控内存地址的预设字段。
可选地,预设字段可以是根据配置操作,在所述内存结构中增加的一个用于记录所述待监控内存地址的字段。
在本实施例中,根据用户输入的配置操作,从而实现在内存结构中增加一个用于记录所述待监控内存地址的预设字段。以通过该预设字段来专门存储待监控内存地址,便于后期通过查看该预设字段中存储的内容来快速准确判断是否需要进行内存地址监控。
其中,用户为工作人员或开发人员,用于在前期对内存结构进行配置。
在实际使用中,通过修改内核,将CPU的地址监控寄存器作为进程的寄存器现场,不再只是线程的寄存器现场。例如,在linux内核中是使用tast_struct结构来作为任务控制块(Task Control Block,TCB)的,无论是进程还是线程,只要是可执行的实体都是使用该结构描述。Linux中定义的任务有三种类型,一种是内核线程,一种是用户线程,一种则是用户进程。内核线程是没有用户空间的,用户线程如果有独立的用户空间则称之为用户进程。用户线程如果有共享的用户空间则称之为用户线程,所有共享同一个用户空间的线程共同组成一个用户进程。
内核的tast_struct结构使用VM(虚拟内存)域指向线程的用户空间,如果该指针是空则认为是内核线程,如果该指针不空则认为是用户线程。而VM指针所指向的用户空间也是一个结构,该结构可以被多个线程指向形成共享用户空间即所有线程共享的内存结构。在本实施例中,修改内核的调度器,当发生线程调度新切入待运行的线程现场时,通过新的TCB找到新线程的VM结构(即用户空间的虚拟内存结构)。
作为一种实施方式,步骤S101包括:根据所述待运行线程的标识信息找到所对应进程的所有线程共享的待监控内存地址。
可选地,标识信息可以进程的ID或者是进程的名称。
作为另一种实施方式,在同一进程中,若两个线程运行在不同的处理器上时,根据两个线程中的每个线程的标识信息找到其所在进程的所有线程共享的待监控内存地址;以通过将所述待监控内存地址写入处理器中的地址监控寄存器,以实现多核分别进行内存地址监控。
在本实施例中,通过分别将运行在不同处理器上的线程的待监控内存地址写入其运行的处理器的地址监控寄存器中,从而实现在不同核同时监控相同地址的目的。进而完全达到在同一个进程中监控一个地址的技术效果。
举例来说,假设进程D创建了两个线程,分别为第一线程b和第二线程c。第一线程b和第二线程c的tast_struct中的VM指针都会指向同一个VM结构(即用户空间的虚拟内存结构)。当第一线程b要监控的内存地址为0x100时,第一线程b会通过第一线程b的tast_struct找到所有线程共享的VM结构,并将0x100记录到虚拟内存中,同时写入CPU(CentralProcessingUnit,中央处理器)的地址监控寄存器,之后在第一线程b运行的过程中0x100是处于被监控状态的。当发生进程调度,即调度第二线程c运行前,修改后的调度器会通过第二线程c的TCB找到内存结构,同时会将内存结构记录的待监控内存地址0x100写入CPU的地址监控寄存器中,那么此后在线程b运行过程中0x100也是受到监控的。而如果是调度了不属于进程D的其它线程来运行时,如果其它进程的内存结构中没有需要监控的地址,那么就会清除的地址监控寄存器,从而不影响地址空间隔离的其它进程的运行。
在一可选的实施例中,在步骤S101之前,所述方法还包括:将所述待监控内存地址写入所述所有线程共享的内存结构中的预设字段。所述所有线程共享的用户空间的虚拟内存结构是所述所有线程共享的内存结构的一种具体实施例;本领域技术人员很容易想到所述所有线程共享的内存结构也可以单独申请用来保存相关信息的内存空间。在本实施例中通过将待监控内存地址写入预设字段中,从而通过该预设字段来专门存储待监控内存地址,便于后期通过查看该预设字段中存储的内容来快速准确判断是否需要进行内存地址监控。
步骤S102:将所述待监控内存地址写入处理器中的地址监控寄存器。
在本实施例中,通过将待监控内存地址写入地址监控寄存器,从而实现多线程进程中的任何线程运行时都能对本进程的同一地址进行监控,进而能够有效解决现有技术中存在的在多线程进程中进行进程切换时,容易导致误检和漏检,使得不同进程和线程间无法有效进行地址监控的技术问题。
作为一种实施方式,步骤S102,包括:将所述预设字段中的所述待监控内存地址写入所述处理器中的所述地址监控寄存器。
本发明实施例提供的内存地址监控方法,通过获取当前被调度的待运行线程,读取所述待运行线程所对应进程的所有线程共享的待监控内存地址,以通过将所述待监控内存地址写入处理器中的地址监控寄存器。从而实现多线程进程中的任何线程运行时都能对本进程的同一地址进行监控,进而能够有效解决现有技术中存在的在多线程进程中进行进程切换时,容易导致误检和漏检,使得不同进程和线程间无法有效进行地址监控的技术问题。
第二实施例
请参照图2,图2为本发明实施例提供的一种内存地址监控方法的流程图,所述方法包括如下步骤:
步骤S201:获取申请内存地址监控的线程所对应进程的领导线程。
可选地,根据线程的标识信息获取申请内存地址监控的线程所对应进程的领导线程。
其中,领导线程用于管理进程中的其他线程。
步骤S202:根据所述领导线程获取所述进程中的所有线程。
例如,通过领导线程遍历该进程中的所有线程,以找到该进程中的所有线程。
步骤S203:将待监控内存地址依次写入所述所有线程分别对应的现场信息中。
可选地,将待监控内存地址依次写入所述所有线程分别对应的现场信息中,包括:将待监控内存地址依次写入所述所有线程分别对应的线程寄存器现场中。以通过将待监控内存地址依次写入每个线程的线程寄存器现场中,使得该进程中所有线程都知道了要监控哪个内存地址,从而实现在同一个进程中对不同线程中的内存地址实现监控,进而能够有效解决现有技术中存在的在进程内进行线程切换时,容易导致误检和漏检,使得不同线程间无法有效进行地址监控的技术问题。
步骤S204:获取当前正在运行或当前被调度待运行的线程,读取所述正在运行或当前被调度待运行的线程的现场信息中的待监控内存地址。
在本实施例中,通过读取当前正在运行或当前被调度待运行的线程的待监控内存地址,从而使得所有运行或待运行的线程均能够被监控,进一步提高了监控的力度,进而能够有效避免误检和漏检。
步骤S205,将所述待监控内存地址写入处理器中的地址监控寄存器。
在本实施例中,通过将现场信息中存储的待监控内存地址写入处理器中的地址监控寄存器中,从而使得每个线程所对应的待监控内存地址均被记载,从而使得即使在进行线程切换或者是在线程运行时,被切换为工作状态的线程或正在运行的线程的待监控内存地址依然是受到监控的,进一步实现在同一个进程中对不同线程中的内存地址实现监控。
本发明实施例提供的内存地址监控方法,通过找到多线程进程中的领导线程,以找到本进程中的所有线程,将待监控内存地址依次写入所有线程分别对应的现场信息中,以及将待监控内存地址写入处理器中的地址监控寄存器,从而使得本进程中所有线程都知道了要监控哪个地址,进而实现在同一个进程中对不同线程中的待监控内存地址实现监控。
第三实施例
对应于第一实施例中的内存地址监控方法,图3示出了采用第一实施例所示的内存地址监控方法一一对应的内存地址监控装置。如图3所示,所述内存地址监控装置400包括数据处理模块410和第一数据写入模块420。其中,数据处理模块410和第一数据写入模块420的实现功能与第一实施例中对应的步聚一一对应,为避免赘述,本实施例不一一详述。
数据处理模块410,用于获取当前被调度的待运行线程,读取所述待运行线程所对应进程的所有线程共享的待监控内存地址。
在一可选地实施例中,在所述数据处理模块410之前,所述内存地址监控装置400还包括:第二数据写入模块,用于将所述待监控内存地址写入所述所有线程共享的内存结构中的预设字段。
第一数据写入模块420,用于将所述待监控内存地址写入处理器中的地址监控寄存器。
可选地,所述第一数据写入模块420还用于:将所述预设字段中的所述待监控内存地址写入所述处理器中的所述地址监控寄存器。
可选地,所述所有线程共享的内存结构包括所述进程的所有线程共享的用户空间虚拟内存结构,所述用户空间虚拟内存结构中包括一个记录所述待监控内存地址的预设字段。
第四实施例
对应于第二实施例中的内存地址监控方法,图4示出了采用第二实施例所示的内存地址监控方法一一对应的内存地址监控装置。如图4所示,所述内存地址监控装置500包括第一数据处理模块510、第二数据处理模块520、数据写入模块530、第三数据处理模块540和存储模块550。其中,第一数据处理模块510、第二数据处理模块520、数据写入模块530、第三数据处理模块540和存储模块550的实现功能与第二实施例中对应的步聚一一对应,为避免赘述,本实施例不一一详述。
第一数据处理模块510,用于获取申请内存地址监控的线程所对应进程的领导线程。
第二数据处理模块520,用于根据所述领导线程获取所述进程中的所有线程。
数据写入模块530,用于将待监控内存地址依次写入所述所有线程分别对应的现场信息中。
第三数据处理模块540,用于获取当前正在运行或当前被调度待运行的线程,读取所述正在运行或当前被调度待运行的线程的现场信息中的待监控内存地址。
存储模块550,用于将所述待监控内存地址写入处理器中的地址监控寄存器。
第五实施例
如图5所示,是终端设备300的示意图。所述终端设备300包括存储器302、处理器304以及存储在所述存储器302中并可在所述处理器304上运行的计算机可读取指令303。当所述计算机可读取指令303由所述处理器304执行时,运行如第一实施例中的所述内存地址监控方法,为避免重复,此处不再赘述。或者,当所述计算机可读取指令303由所述处理器304执行时,运行如第二实施例中的所述内存地址监控方法,为避免重复,此处不再赘述。或者,当所述计算机可读取指令303由所述处理器304执行时,实现如第三实施例所述内存地址监控装置中各模型/单元的功能,为避免重复,此处不再赘述。或者,当所述计算机可读取指令303由所述处理器304执行时,实现如第四实施例所述内存地址监控装置中各模型/单元的功能,为避免重复,此处不再赘述。
示例性的,计算机可读取指令303可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器302中,并由处理器304执行,以完成本发明。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机可读取指令303在终端设备300中的执行过程。例如,计算机可读取指令303可以被分割成第三实施例中的数据处理模块410和第一数据写入模块420,各模块的具体功能如第一实施例或第三实施例所述,在此不一一赘述。
其中,存储器302可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器302用于存储程序,所述处理器304在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流程定义的方法可以应用于处理器304中,或者由处理器304实现。
处理器304可能是一种集成电路芯片,具有信号的处理能力。上述的处理器304可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
可以理解的是,图5所示的结构仅为终端设备300的一种结构示意图,终端设备300还可以包括比图5所示更多或更少的组件。图5中所示的各组件可以采用硬件、软件或其组合实现。
请参照图6,图6为本发明实施例提供的一种电子设备的另一种结构示意图,所述电子设备可以包括:至少一个处理器110,例如CPU,至少一个通信接口120,至少一个存储器130和至少一个通信总线140。其中,通信总线140用于实现这些组件直接的连接通信。其中,本发明实施例中设备的通信接口120用于与其他节点设备进行信令或数据的通信。存储器130可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器130可选的还可以是至少一个位于远离前述处理器的存储装置。存储器130中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器110执行时,电子设备执行上述图1或图2所示方法过程。或者是电子设备实现上述图3或图4所示装置的功能。
综上所述,本发明实施例提供一种内存地址监控方法、装置及电子设备,通过获取当前被调度的待运行线程,读取所述待运行线程所对应进程的所有线程共享的待监控内存地址,以通过将所述待监控内存地址写入处理器中的地址监控寄存器。从而实现多线程进程中的任何线程运行时都能对本进程的同一地址进行监控,进而能够有效解决现有技术中存在的在多线程进程中进行进程切换时,容易导致误检和漏检,使得不同进程和线程间无法有效进行地址监控的技术问题。进一步地,通过找到多线程进程中的领导线程,找到本进程中的所有线程,将预设内存监控地址依次写入本进程中所有线程的地址监控寄存器中,从而使得本进程中所有线程都知道了要监控哪个地址,进而实现在同一个进程中对不同线程中的内存地址实现监控。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,也可以通过其它的方式实现。以上所描述的系统实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者电子设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

Claims (8)

1.一种内存地址监控方法,其特征在于,所述方法包括:
获取当前被调度的待运行线程,读取所述待运行线程所对应进程的所有线程共享的待监控内存地址;其中,线程共享的内存结构包括所述进程的所有线程共享的用户空间虚拟内存结构,所述用户空间虚拟内存结构中包括一个记录所述待监控内存地址的预设字段;
将所述待监控内存地址写入处理器中的地址监控寄存器;
在所述获取当前被调度的待运行线程之前,将所述待监控内存地址写入所述所有线程共享的内存结构中的预设字段;
其中,所述读取所述待运行线程所对应进程的所有线程共享的待监控内存地址包括:根据所述待运行线程的标识信息找到所对应进程的所有线程共享的待监控内存地址。
2.根据权利要求1所述的方法,其特征在于,所述将所述待监控内存地址写入处理器中的地址监控寄存器,包括:
将所述预设字段中的所述待监控内存地址写入所述处理器中的所述地址监控寄存器。
3.根据权利要求2所述的方法,其特征在于,所述所有线程共享的内存结构包括所述进程的所有线程共享的用户空间虚拟内存结构,所述用户空间虚拟内存结构中包括一个记录所述待监控内存地址的预设字段。
4.一种内存地址监控方法,其特征在于,所述方法包括:
获取申请内存地址监控的线程所对应进程的领导线程;
根据所述领导线程获取所述进程中的所有线程;
将待监控内存地址依次写入所述所有线程分别对应的现场信息中;所述现场信息为线程寄存器现场;
获取当前正在运行或当前被调度待运行的线程,读取所述正在运行或当前被调度待运行的线程的现场信息中的待监控内存地址;
将所述待监控内存地址写入处理器中的地址监控寄存器。
5.一种内存地址监控装置,其特征在于,所述装置包括:
数据处理模块,用于获取当前被调度的待运行线程,读取所述待运行线程所对应进程的所有线程共享的待监控内存地址;其中,线程共享的内存结构包括所述进程的所有线程共享的用户空间虚拟内存结构,所述用户空间虚拟内存结构中包括一个记录所述待监控内存地址的预设字段;
第一数据写入模块,用于将所述待监控内存地址写入处理器中的地址监控寄存器;
第二数据写入模块,用于在所述数据处理模块之前,将所述待监控内存地址写入所述所有线程共享的内存结构中的预设字段;
所述数据处理模块,具体用于根据所述待运行线程的标识信息找到所对应进程的所有线程共享的待监控内存地址。
6.根据权利要求5所述的装置,其特征在于,所述第一数据写入模块还用于:将所述预设字段中的所述待监控内存地址写入所述处理器中的所述地址监控寄存器。
7.一种内存地址监控装置,其特征在于,所述装置包括:
第一数据处理模块,用于获取申请内存地址监控的线程所对应进程的领导线程;
第二数据处理模块,用于根据所述领导线程获取所述进程中的所有线程;
数据写入模块,用于将待监控内存地址依次写入所述所有线程分别对应的现场信息中;所述现场信息为线程寄存器现场;
第三数据处理模块,用于获取当前正在运行或当前被调度待运行的线程,读取所述正在运行或当前被调度待运行的线程的现场信息中的待监控内存地址;
存储模块,用于将所述待监控内存地址写入处理器中的地址监控寄存器。
8.一种电子设备,其特征在于,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如权利要求1-3中任一权项所述的方法;或者,当所述计算机可读取指令由所述处理器执行时,运行如权利要求4所述的方法。
CN201811128905.1A 2018-09-26 2018-09-26 一种内存地址监控方法、装置及电子设备 Active CN110955546B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811128905.1A CN110955546B (zh) 2018-09-26 2018-09-26 一种内存地址监控方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811128905.1A CN110955546B (zh) 2018-09-26 2018-09-26 一种内存地址监控方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN110955546A CN110955546A (zh) 2020-04-03
CN110955546B true CN110955546B (zh) 2023-03-21

Family

ID=69967773

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811128905.1A Active CN110955546B (zh) 2018-09-26 2018-09-26 一种内存地址监控方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN110955546B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1570855A (zh) * 2004-04-30 2005-01-26 浙江大学 Arm处理器架构的微内核设计方法
CN101055533A (zh) * 2007-05-28 2007-10-17 中兴通讯股份有限公司 一种多线程处理器动态内存管理系统及方法
CN101499016A (zh) * 2008-01-31 2009-08-05 联想(北京)有限公司 虚拟机监视器、虚拟机系统及客户操作系统进程处理方法
US9348595B1 (en) * 2014-12-22 2016-05-24 Centipede Semi Ltd. Run-time code parallelization with continuous monitoring of repetitive instruction sequences
CN106502926A (zh) * 2016-09-26 2017-03-15 华为技术有限公司 一种内存监控方法、内存访问控制器及SoC系统
CN107818034A (zh) * 2016-09-14 2018-03-20 华为技术有限公司 监测计算机设备中的进程的运行空间的方法以及装置
CN108491287A (zh) * 2018-03-21 2018-09-04 闻泰通讯股份有限公司 内存地址监控方法、装置及电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4487744B2 (ja) * 2004-11-29 2010-06-23 富士通株式会社 マルチスレッド制御装置及び制御方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1570855A (zh) * 2004-04-30 2005-01-26 浙江大学 Arm处理器架构的微内核设计方法
CN101055533A (zh) * 2007-05-28 2007-10-17 中兴通讯股份有限公司 一种多线程处理器动态内存管理系统及方法
CN101499016A (zh) * 2008-01-31 2009-08-05 联想(北京)有限公司 虚拟机监视器、虚拟机系统及客户操作系统进程处理方法
US9348595B1 (en) * 2014-12-22 2016-05-24 Centipede Semi Ltd. Run-time code parallelization with continuous monitoring of repetitive instruction sequences
CN107818034A (zh) * 2016-09-14 2018-03-20 华为技术有限公司 监测计算机设备中的进程的运行空间的方法以及装置
CN106502926A (zh) * 2016-09-26 2017-03-15 华为技术有限公司 一种内存监控方法、内存访问控制器及SoC系统
CN108491287A (zh) * 2018-03-21 2018-09-04 闻泰通讯股份有限公司 内存地址监控方法、装置及电子设备

Also Published As

Publication number Publication date
CN110955546A (zh) 2020-04-03

Similar Documents

Publication Publication Date Title
CN110018914B (zh) 基于共享内存的消息采集方法及装置
US20090320032A1 (en) System, method and computer program product for preventing starvations of tasks in a multiple processing entity system
US20110072434A1 (en) System, method and computer program product for scheduling a processing entity task
US20110099552A1 (en) System, method and computer program product for scheduling processor entity tasks in a multiple-processing entity system
US9038080B2 (en) Method and system for heterogeneous filtering framework for shared memory data access hazard reports
US9916217B2 (en) Accessing hidden diagnostic registers
US20140215483A1 (en) Resource-usage totalizing method, and resource-usage totalizing device
US9870314B1 (en) Update testing by build introspection
CN113407414A (zh) 程序运行监测方法、装置、终端及存储介质
US8489867B2 (en) Monitoring events and incrementing counters associated therewith absent taking an interrupt
US10628352B2 (en) Heterogeneous multi-processor device and method of enabling coherent data access within a heterogeneous multi-processor device
CN117234729B (zh) 动态内存保护方法、装置、计算机设备及存储介质
US20130305012A1 (en) Implementation of counters using trace hardware
US9058206B2 (en) System, method and program product for determining execution flow of the scheduler in response to setting a scheduler control variable by the debugger or by a processing entity
CN110955546B (zh) 一种内存地址监控方法、装置及电子设备
CN108197005B (zh) Ios应用的底层运行性能监测方法、介质、设备及系统
CN111742303B (zh) 用于在调试设备时访问元数据的装置和方法
EP4318211A1 (en) Method for inspecting code under weak memory order architecture, and corresponding device
WO2018042935A1 (ja) 電子制御装置、解析システム
US9934035B2 (en) Device and method for tracing updated predicate values
CN111078449B (zh) 信息处理方法、信息处理装置及终端设备
US20180054374A1 (en) Trace information encoding apparatus, encoding method thereof, and readable computer medium
CN112487414B (zh) 一种进程命令行的获取方法、装置、设备以及存储介质
US8918582B2 (en) Simulating EEPROM in virtual distributed switches
CN108304294B (zh) Ios应用的实时帧数监测方法、存储介质、设备及系统

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