CN113407414A - 程序运行监测方法、装置、终端及存储介质 - Google Patents
程序运行监测方法、装置、终端及存储介质 Download PDFInfo
- Publication number
- CN113407414A CN113407414A CN202110707827.6A CN202110707827A CN113407414A CN 113407414 A CN113407414 A CN 113407414A CN 202110707827 A CN202110707827 A CN 202110707827A CN 113407414 A CN113407414 A CN 113407414A
- Authority
- CN
- China
- Prior art keywords
- thread
- shared memory
- program
- processes
- files
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 280
- 238000012544 monitoring process Methods 0.000 title claims abstract description 43
- 230000008569 process Effects 0.000 claims abstract description 229
- 238000012806 monitoring device Methods 0.000 claims abstract description 6
- 238000004590 computer program Methods 0.000 claims description 21
- 238000004891 communication Methods 0.000 abstract description 17
- 230000007717 exclusion Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 241000282472 Canis lupus familiaris Species 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000000926 separation method Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012840 feeding operation Methods 0.000 description 3
- 239000002041 carbon nanotube Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种程序运行监测方法、装置、终端及存储介质。该方法包括:被监测程序启动时,在预设文件夹中创建n个文件,其中,被监测程序运行m个进程,m个进程中的一个进程与n个文件中的一个文件存在唯一对应的关系,所述文件中包含对应进程的注册信息;守护进程读取预设文件夹,根据预设文件夹中的内容,创建共享内存;针对m个进程中的任一进程,进程在共享内存中进行状态信息的写入;守护进程通过读取共享内存中的内容,对被监测程序的运行状态进行监测。本发明能够提高看门狗进程和程序进程之间的通信效率、可靠性及看门狗对多进程应用程序进行监测的初始化效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种程序运行监测方法、装置、终端及存储介质。
背景技术
LINUX操作系统是一个基于POSIX(便携式操作系统接口)的多用户、多任务、支持多线程和多CPU(Central Processing Unit,中央处理器)的操作系统,是一种性能稳定的多用户网络操作系统。
当正在运行的应用程序受到某种干扰后,偏离正常的运行路径,进入死循环、程序跑飞等非正常运行状态。程序的这种非正常运行状态所带来的后果往往是不可预计的,例如会导致系统死机。
看门狗可有效防止程序进入上述非正常运行状态,采用硬件看门狗时,硬件看门狗利用一个定时器电路,其定时输出连接到电路的复位端,应用程序在一定时间范围内对定时器清零(俗称“喂狗”),因此,应用程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果计算机系统出现故障,不再定时周期内喂狗,就使得看门狗定时器溢出产生复位信号,并重启程序,避免程序进入死循环导致系统死机。
基于类似的原理,也可以采用软件看门狗对应用程序进行监测,在Linux操作系统中,看门狗往往需要监测到多进程和多线程,看门狗进程和应用程序的进程、线程之间需要有通信机制。由于看门狗喂狗是需要频繁操作的,且看门狗监测的进程、线程数量非常大,现有的通信机制会占用较多的系统资源,监测效率较低。
发明内容
本发明实施例提供了一种程序运行监测方法、装置、终端及存储介质,以解决看门狗在监测多进程多线程的应用程序时效率低的问题。
第一方面,本发明实施例提供了一种程序运行监测方法,包括:
被监测程序启动时,在预设文件夹中创建n个文件,其中,所述被监测程序运行m个进程,所述m个进程中的一个进程与所述n个文件中的一个文件存在唯一对应的关系,所述文件中包含对应进程的注册信息,n大于等于m;
守护进程读取所述预设文件夹,根据所述预设文件夹中的内容,创建共享内存;
针对所述m个进程中的任一进程,所述进程在所述共享内存中进行状态信息的写入;
所述守护进程通过读取所述共享内存中的内容,对所述被监测程序的运行状态进行监测。
在一种可能的实现方式中,所述守护进程读取所述预设文件夹,根据所述预设文件夹中的内容,创建共享内存包括:
所述守护进程根据所述预设文件夹中包含注册信息的m个文件,创建共享内存,在所述共享内存中,所述m个进程中的任一进程,在所述共享内存中唯一对应一个物理内存块。
在一种可能的实现方式中,针对任一文件,所述文件包括所对应的进程的进程名和所述进程下每个线程的线程名;在所述共享内存的所述进程的对应物理内存块中,还包括所述进程下每个线程的唯一标识信息和每个线程的运行状态信息。
在一种可能的实现方式中,所述线程的运行状态信息为所述进程的计数器CNT的值。
在一种可能的实现方式中,所述进程中的线程根据所述线程的线程名,在所述共享内存中找到所述线程所对应的物理内存块并在对应的物理内存块写入所述线程的唯一标识信息;
每隔第一预设时间间隔,所述线程在所述共享内存的对应物理内存块中的计数器CNT位置加1;
所述守护进程每隔第二预设时间间隔,对所述线程的CNT的值进行读取,并根据所述线程的本次CNT读取值和上一次CNT读取值进行比较,根据比较结果获得所述线程的运行状态,其中,所述第二预设时间间隔大于所述第一预设时间间隔。
在一种可能的实现方式中,若所述线程的本次CNT读取值和上一次CNT读取值相同,则判断所述线程停止运行;
若所述线程的本次CNT读取值大于上一次CNT读取值,则判断所述线程正常运行。
在一种可能的实现方式中,若所述线程停止运行,则重启所述线程所对应的进程。
第二方面,本发明实施例提供了一种程序运行监测装置,包括:被监测程序信息创建模块、共享内存创建模块、被监测程序状态信息写入模块和监测模块;
所述被监测程序信息创建模块,用于在被监测程序启动时,在预设文件夹中创建n个文件,其中,所述被监测程序运行m个进程,所述m个进程中的一个进程与所述n个文件中的一个文件存在唯一对应的关系,n大于等于m,所述文件中包含对应进程的注册信息;
所述共享内存创建模块,用于读取所述预设文件夹,根据所述预设文件夹中的内容,创建共享内存;
所述被监测程序状态信息写入模块,用于针对所述m个进程中的任一进程,在所述共享内存中进行状态信息的写入。
所述监测模块,用于通过读取所述共享内存中的内容,对所述被监测程序的运行状态进行监测。
第三方面,本发明实施例提供了一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上第一方面或第一方面的任一种可能的实现方式所述方法的步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上第一方面或第一方面的任一种可能的实现方式所述方法的步骤。
本发明实施例提供一种程序运行监测方法、装置、终端及存储介质,应用程序的进程在预设文件夹中写文件,一个文件对应一个进程的注册信息,守护进程通过读文件的方式创建共享内存,实现守护进程的读写分离,大大提高了监测的初始化效率和系统的可靠性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种多进程间通过共享内存进行通信的示意图;
图2是本发明实施例提供的一种程序运行监测方法的实现流程图;
图3是本发明实施例提供的另一种程序运行监测方法的实现流程图;
图4是本发明实施例提供的另一种程序运行监测方法的实现流程图;
图5是本发明实施例提供的一种程序运行监测方法中的预设文件夹的内容的示意图;
图6是本发明实施例提供的程序运行监测装置的结构示意图;
图7是本发明实施例提供的终端的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图通过具体实施例来进行说明。
在Linux系统中,每个进程都有独立的虚拟内存空间,也就是说不同的进程访问同一段虚拟内存地址所得到的数据是不一样的,这是因为不同进程相同的虚拟内存地址会映射到不同的物理内存地址上。
但有时候为了让不同进程之间进行通信,需要让不同进程共享相同的物理内存,Linux通过共享内存来实现这个功能。在Linux系统中,用共享内存通信效率最高,共享内存是一种多进程之间的通信方法,这种方法通常用于一个程序的多进程间通信,或多个程序间的信息传递。
图1为本发明实施例提供的一种多进程间通过共享内存进行通信的示意图。如图1所示,共享内存通过将进程A和进程B的虚拟内存地址映射到相同的物理内存地址来实现进程A和进程B之间的通信。图1仅为多个进程之间通过共享内存进行通信的一种示例性描述,通过将多个需要互相通信的进程的虚拟内存地址映射到同一物理内存地址,即可实现多个进程的通信。
基于这种思想,可将共享内存通信应用到基于看门狗机制的程序内存监测方法中。但是,在此应用场景下,一个程序中的多进程和看门狗进程进行通信存在如下问题:
若一个进程正在向共享内存区写数据,则在它做完这一步操作前,别的进程不应当去读、写这些数据。也就是说,共享内存需要有互斥逻辑,互斥逻辑需要用到互斥锁机制,互斥锁在多进程、多线程并发时,效率较低,会影响进程和线程的执行时序,且有死锁的风险。
结合图1,举例来说,一个应用程序包含进程A和进程B,看门狗所对应的守护进程需要同时监测进程A和进程B的运行状态。在应用程序初始化时,进程A和进程B都需要在共享内存中进行注册过程,由于互斥逻辑的存在,进程A和进程B只能等其中一个进程完成注册后,另一个进程再进行注册。看门狗也只能等进程A和进程B同时完成注册后再在共享内存中读取数据。
在实际应用中,一个应用程序的运行可能远不止进程A和进程B两个进程,而且每个进程又可能包含多个线程,每个线程在运行过程中都需要进行对看门狗的喂狗操作,则此时,互斥逻辑的存在使得整个初始化过程非常缓慢、低效。
另一方面,在基于看门狗的多进程、多线程应用程序监测系统运行的过程中,由于互斥逻辑的存在,互斥锁在多进程、多线程并发时,效率较低,会影响进程和线程的执行时序,且有死锁的风险,进一步的,其大大降低了看门狗可监测的进程、线程的数量。
基于上述分析,本发明实施例提供了一种程序运行监测方法,结合图2,该方法包括:
S101,被监测程序启动时,在预设文件夹中创建n个文件,其中,被监测程序运行m个进程,m个进程中的一个进程与n个文件中的一个文件存在唯一对应的关系,n大于等于m,文件中包含对应进程的注册信息。
可选的,为被监测程序预设置一个文件夹,例如该文件夹为文件夹A。当程序启动时,该程序的每个进程在文件夹中创建一个文件,并在文件中写入该进程的进程名,该程序运行几个进程,文件夹A中就至少有几个文件。
在本发明实施例中,进程的注册信息是指,针对任一进程,该进程的每个线程在该进程对应的文件下写该线程对应的注册信息。
S102,守护进程读取预设文件夹,根据预设文件夹中的内容,创建共享内存。
当守护进程发现预设文件夹被写入内容后,判断所述应用程序已经启动,所述守护进程读取预设文件夹,根据文件夹的内容,创建共享内存。由于文件夹中的每个文件对应被监测应用程序的一个进程,每个文件内包含该文件对应的进程的所有线程的注册信息,因此,通过本步骤,完成初始化过程。
通过本发明实施例提供的方法,实现守护进程读写分离,因此,在初始化时,不需要互斥信号量,提高初始化效率。
S103,针对m个进程中的任一进程,该进程在共享内存中进行状态信息的写入。
每个进程在共享内存中进行状态信息的写入,以使得守护进行能够得知其当前的状态。
S104,守护进程通过读取共享内存中的内容,对被监测程序的运行状态进行监测。
可选的,被监测程序包括多个进程,守护进程通过共享内存中被监控程序的多个进程的状态信息,监测每个进程的运行状态,从而实现对整个应用程序的监测。
其中,每个进程的运行状态可以为正常运行的状态,或为停止运行的状态。
本发明实施例提供了一种程序运行监测方法,应用程序的进程在预设文件夹中写文件,一个文件对应一个进程的注册信息,守护进程通过读文件的方式创建共享内存,实现守护进程的读写分离,大大提高了监测的初始化效率和系统的可靠性。
进一步的,结合图3,本发明实施例还提供了一种程序运行监测方法,该方法包括:
S201,被监测程序启动时,在预设文件夹中创建n个文件,其中,被监测程序运行m个进程,m个进程中的一个进程与n个文件中的一个文件存在唯一对应的关系,文件中包含对应进程的注册信息。
本步骤的具体实现方式可参考步骤S101,本发明实施例在此不再赘述。
S202,守护进程根据所述预设文件夹中包含注册信息的m个文件,创建共享内存,在共享内存中,所述m个进程中的任一进程,在共享内存中唯一对应一个物理内存块。
通过本步骤,每个进程在共享内存中占用一个独立的物理内存块,每个进程的物理内存块的地址相互独立且唯一。通过这种方式,每个进程、线程在后续的喂狗操作中不需要建立互斥量,大大提高了系统的通信效率和可靠性。
可选的,守护进程可以预先获取一块物理内存,读取m个文件后,根据文件内的注册信息,在预先获取的物理内存中为每个进程分配一个该进程对应的物理内存块,或者,守护进程可以在读取m个文件后再获取用于共享的物理内存,本发明实施例对此不作限定。
S203,针对m个进程中的任一进程,该进程在共享内存中进行状态信息的写入。
基于步骤S202,每个进程在共享内存中占用一个物理内存块,每个进程的物理内存块的地址相互独立且唯一。在本步骤中,进程在共享内存中对应的独立的内存块中进行状态信息的写入,而不需要互斥量,大大提高了监测效率和可靠性。
S204,守护进程通过读取共享内存中的内容,对被监测程序的运行状态进行监测。
守护进程读取被监测进程在共享内存块中对应的内存,就可以获取被监测进程的运行状态。
守护进程通过进程的状态信息,或根据进程内每个线程的状态信息,对被监测程序的运行状态进行监测。
本发明实施例提供了一种程序运行监测方法,在该方法中,守护进程按预设顺序遍历预设文件夹,按照对预设文件夹中文件的读取顺序,创建共享内存,在共享内存中,被监测程序的每个进程在共享内存中唯一对应一个物理内存块,使得该应用程序的多个进程在喂狗的过程中不需要建立互斥量,大大提高了通信效率和可靠性。
进一步的,结合图4,本发明实施例还提供了一种程序运行监测方法,该方法包括:
S301,被监测程序启动时,在预设文件夹中创建n个文件,其中,被监测程序运行m个进程,m个进程中的一个进程与n个文件中的一个文件存在唯一对应的关系,文件中包含对应进程的注册信息。
可选的,每个文件包括所对应的进程的进程名和进程下每个线程的线程名,在所述共享内存的所述进程的对应物理内存块中,还包括所述进程下每个线程的唯一标识信息和每个线程的运行状态信息
可选的,进程的唯一标识信息为进程的进程标识符PID,线程的唯一标识信息为线程的线程标识符PID。
可选的,线程的运行状态信息为所述进程的计数器CNT的值。
图5示例性的描述了一种预设文件夹。举例来说,被监测应用程序启动后运行三个进程,分别为进程1、进程2和进程3,其中进程1包括2个线程,分别为进程1的线程1和线程2,进程2包括3个线程,分别为进程2的线程1至线程3,进程3包括2个线程,分别为进程3的线程1和线程2。则每个进程在预设文件夹中写一个文件,分别为文件1、文件2和文件3,每个线程在其所属进程所对应的文件中写入自身的注册信息,文件中包括但不限于进程的进程名和进程下每个线程的线程名。则所有线程写完注册信息后的文件夹如图5所示。
S302,守护进程根据所述预设文件夹中包含注册信息的m个文件,创建共享内存,在所述共享内存中,所述m个进程中的任一进程,在所述共享内存中唯一对应一个物理内存块。
本步骤的具体实现方式可参考步骤S202,本发明实施例对此不再赘述。
S303,所述进程中的线程根据所述线程的线程名,在所述共享内存中找到所述线程所对应的物理内存块中,并在对应的物理内存块写入所述线程的唯一标识信息。。
由于线程的注册信息是由该线程自己写入文件的,因此该线程可通过其线程名,在共享内存中找到其对应的物理内存块地址信息,找到对应的物理内存块,并在对应的物理内存块中写入该线程的唯一标识信息
S304,每隔第一预设时间间隔,该线程在共享内存的对应物理内存块中的计数器CNT位置加1。
可选的,该线程的计数器CNT可以有一个初始值,该初始值可以为任意可行的数值,本发明实施例对此不作限制。线程正常运行过程中,每隔第一预设时间间隔,例如第一预设时间间隔为1分钟,使计数器加1,在该线程的整个正常运行过程中,对计数器按照这种方式进行累加。
S305,守护进程每隔第二预设时间间隔,对线程的CNT的值进行读取,并根据所述的本次CNT读取值和上一次CNT读取值进行比较,根据比较结果获得所述线程的运行状态,其中,第二预设时间间隔大于第一预设时间间隔。
因为在线程正常运行状态下,CNT的值会不断累加。守护进程每隔第二预设时间间隔,例如第一预设时间间隔为1分钟,第二预设时间间隔为5分钟,对该线程的CNT进行读取。根据相邻两次的读取结果判断当前线程是否在正常运行。
可选的,若所述线程的本次CNT读取值和上一次CNT读取值相同,则判断所述线程停止运行;若所述线程的本次CNT读取值大于上一次CNT读取值,则判断所述线程正常运行。
进一步,可选的,若所述线程停止运行,则重启所述线程所对应的进程。
本发明实施例提供了一种程序运行监测方法,在线程正常运行过程中,线程每隔第一预设时间间隔使计数器CNT加1,不断累积。守护进程每隔第二预设时间间隔读取该线程的CNT的值,根据相邻两次CNT的值判断当前线程是否正常运行。通过这种方式,守护进程能够对线程的运行状态进行监测,保证了系统运行的可靠性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
以下为本发明的装置实施例,对于其中未详尽描述的细节,可以参考上述对应的方法实施例。
图6示出了本发明实施例提供的程序运行监测装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
如图6所示,程序运行监测装置6包括:被监测程序信息创建模块61、共享内存创建模块62、被监测程序状态信息写入模块63和监测模块64;
被监测程序信息创建模块61,用于在被监测程序启动时,在预设文件夹中创建n个文件,其中,所述被监测程序运行m个进程,所述m个进程中的一个进程与所述n个文件中的一个文件存在唯一对应的关系,所述文件中包含对应进程的注册信息,n大于等于m;
共享内存创建模块62,用于读取预设文件夹,根据预设文件夹中的内容,创建共享内存;
被监测程序状态信息写入模块63,用于针对m个进程中的任一进程,在共享内存中进行状态信息的写入。
所述监测模块64,用于通过读取共享内存中的内容,对被监测程序的运行状态进行监测。。
可选的,共享内存创建模块62还用于:根据所述预设文件夹中包含注册信息的m个文件,创建共享内存,在所述共享内存中,所述m个进程中的任一进程,在所述共享内存中唯一对应一个物理内存块;
可选的,针对任一文件,所述文件包括所对应的进程的进程名和所述进程下每个线程的线程名,在所述共享内存的所述进程的对应物理内存块中,还包括所述进程下每个线程的唯一标识信息和每个线程的运行状态信息。
可选的,线程的运行状态信息为进程的计数器CNT的值;
可选的,被监测程序状态信息写入模块63还用于:根据所述线程的线程名,在所述共享内存中找到所述线程所对应的物理内存块,并在对应的物理内存块写入所述线程的唯一标识信息;;每隔第一预设时间间隔,在共享内存的对应物理内存块中的计数器CNT位置加1;
监测模块64还用于:每隔第二预设时间间隔,对线程的CNT的值进行读取,并根据线程的本次CNT读取值和上一次CNT读取值进行比较,根据比较结果获得线程的运行状态,其中,第二预设时间间隔大于第一预设时间间隔。
可选的,监测模块64还用于:若线程的本次CNT读取值和上一次CNT读取值相同,则判断线程停止运行;
若线程的本次CNT读取值大于上一次CNT读取值,则判断线程正常运行。
可选的,监测模块64还用于:若线程停止运行,则重启线程所对应的进程。
本发明实施例提供了一种程序运行通信装置,通过在文件夹中写文件的方式获取被监测程序的每个进程的信息,根据文件夹的内容创建共享内存,避免了进程间的互斥操作,通过读写分离的方式提高了监测效率和系统可靠性。进一步的,通过为每个进程在共享内存中分配唯一对应的物理内存块的方式,使得多个进程在频繁的喂狗操作中不需要进行互斥,提高了系统的通信效率。每个线程通过CNT累加的方式表示其当前的运行状态,若其不再累加,则说明该线程停止运行。
图7是本发明实施例提供的终端的示意图。如图7所示,该实施例的终端7包括:处理器70、存储器71以及存储在所述存储器71中并可在所述处理器70上运行的计算机程序72。所述处理器70执行所述计算机程序72时实现上述各个程序运行监测方法实施例中的步骤,例如图2所示的步骤201至步骤204或者,所述处理器70执行所述计算机程序72时实现上述各装置实施例中各模块/单元的功能,例如图6所示模块/单元61至64的功能。
示例性的,所述计算机程序72可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器71中,并由所述处理器70执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序72在所述终端7中的执行过程。例如,所述计算机程序72可以被分割成图6所示的模块/单元61至64
所述终端7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端7可包括,但不仅限于,处理器70、存储器71。本领域技术人员可以理解,图7仅仅是终端7的示例,并不构成对终端7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端还可以包括输入输出设备、网络接入设备、总线等。
所称处理器70可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器71可以是所述终端7的内部存储单元,例如终端7的硬盘或内存。所述存储器71也可以是所述终端7的外部存储设备,例如所述终端7上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器71还可以既包括所述终端7的内部存储单元也包括外部存储设备。所述存储器71用于存储所述计算机程序以及所述终端所需的其他程序和数据。所述存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个程序运行监测方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种程序运行监测方法,其特征在于,包括:
被监测程序启动时,在预设文件夹中创建n个文件,其中,所述被监测程序运行m个进程,所述m个进程中的一个进程与所述n个文件中的一个文件存在唯一对应的关系,所述文件中包含对应进程的注册信息,n大于等于m;
守护进程读取所述预设文件夹,根据所述预设文件夹中的内容,创建共享内存;
针对所述m个进程中的任一进程,所述进程在所述共享内存中进行状态信息的写入;
所述守护进程通过读取所述共享内存中的内容,对所述被监测程序的运行状态进行监测。
2.根据权利要求1所述的方法,其特征在于,所述守护进程读取所述预设文件夹,根据所述预设文件夹中的内容,创建共享内存包括:
所述守护进程根据所述预设文件夹中包含注册信息的m个文件,创建共享内存,在所述共享内存中,所述m个进程中的任一进程,在所述共享内存中唯一对应一个物理内存块。
3.根据权利要求2所述的方法,其特征在于,针对任一文件,所述文件包括所对应的进程的进程名和所述进程下每个线程的线程名,在所述共享内存的所述进程的对应物理内存块中,还包括所述进程下每个线程的唯一标识信息和每个线程的运行状态信息。
4.根据权利要求3所述的方法,其特征在于,所述线程的运行状态信息为所述线程的计数器CNT的值。
5.根据权利要求4所述的方法,其特征在于,所述进程在所述共享内存中进行状态信息的写入包括:
所述进程中的线程根据所述线程的线程名,在所述共享内存中找到所述线程所对应的物理内存块,并在对应的物理内存块写入所述线程的唯一标识信息;
每隔第一预设时间间隔,所述线程在所述共享内存的对应物理内存块中的计数器CNT位置加1;
所述守护进程通过读取所述共享内存中的内容,对所述被监测程序的运行状态进行监测包括:
所述守护进程每隔第二预设时间间隔,对所述线程的CNT的值进行读取,并根据所述线程的本次CNT读取值和上一次CNT读取值进行比较,根据比较结果获得所述线程的运行状态,其中,所述第二预设时间间隔大于所述第一预设时间间隔。
6.根据权利要求5所述的方法,其特征在于,所述根据比较结果获得所述线程的运行状态包括:
若所述线程的本次CNT读取值和上一次CNT读取值相同,则判断所述线程停止运行;
若所述线程的本次CNT读取值大于上一次CNT读取值,则判断所述线程正常运行。
7.根据权利要求6所述的方法,其特征在于,该方法还包括:
若所述线程停止运行,则重启所述线程所对应的进程。
8.一种程序运行监测装置,其特征在于,包括:被监测程序信息创建模块、共享内存创建模块、被监测程序状态信息写入模块和监测模块;
所述被监测程序信息创建模块,用于在被监测程序启动时,在预设文件夹中创建n个文件,其中,所述被监测程序运行m个进程,所述m个进程中的一个进程与所述n个文件中的一个文件存在唯一对应的关系,n大于等于m,所述文件中包含对应进程的注册信息;
所述共享内存创建模块,用于读取所述预设文件夹,根据所述预设文件夹中的内容,创建共享内存;
所述被监测程序状态信息写入模块,用于针对所述m个进程中的任一进程,在所述共享内存中进行状态信息的写入。
所述监测模块,用于通过读取所述共享内存中的内容,对所述被监测程序的运行状态进行监测。
9.一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上的权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上的权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110707827.6A CN113407414A (zh) | 2021-06-24 | 2021-06-24 | 程序运行监测方法、装置、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110707827.6A CN113407414A (zh) | 2021-06-24 | 2021-06-24 | 程序运行监测方法、装置、终端及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113407414A true CN113407414A (zh) | 2021-09-17 |
Family
ID=77683181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110707827.6A Pending CN113407414A (zh) | 2021-06-24 | 2021-06-24 | 程序运行监测方法、装置、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113407414A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986563A (zh) * | 2021-12-29 | 2022-01-28 | 北京智芯微电子科技有限公司 | 智能电表及其系统内核地址有效性检测方法和检测装置 |
CN115129573A (zh) * | 2022-08-31 | 2022-09-30 | 国汽智控(北京)科技有限公司 | 程序运行的监控方法、装置、电子设备及存储介质 |
CN115629827A (zh) * | 2022-12-22 | 2023-01-20 | 中国西安卫星测控中心 | 一种基于共享内存的Linux服务器多应用进程调度方法 |
CN115794550A (zh) * | 2022-11-23 | 2023-03-14 | 广州汽车集团股份有限公司 | 进程管理方法、装置、交通工具以及存储介质 |
CN117408060A (zh) * | 2023-10-13 | 2024-01-16 | 上海同星智能科技有限公司 | 整车模型仿真性能优化方法、存储介质和电子设备 |
WO2024109068A1 (zh) * | 2022-11-25 | 2024-05-30 | 惠州市德赛西威智能交通技术研究院有限公司 | 程序监控方法、装置、电子设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1629821A (zh) * | 2003-12-19 | 2005-06-22 | 华为技术有限公司 | 一种多线程处理器线程死锁检测的方法及其系统 |
CN107643942A (zh) * | 2016-07-21 | 2018-01-30 | 杭州海康威视数字技术股份有限公司 | 一种状态信息的存储方法及装置 |
CN107783844A (zh) * | 2017-10-13 | 2018-03-09 | 锐捷网络股份有限公司 | 一种计算机程序运行异常检测方法、装置和介质 |
CN109508246A (zh) * | 2018-06-25 | 2019-03-22 | 广州多益网络股份有限公司 | 日志记录方法、系统和计算机可读存储介质 |
CN109582486A (zh) * | 2018-11-20 | 2019-04-05 | 厦门科灿信息技术有限公司 | 一种看门狗监测方法、系统及设备和存储介质 |
CN111984430A (zh) * | 2019-05-22 | 2020-11-24 | 厦门雅迅网络股份有限公司 | 多对多的进程通信方法及计算机可读存储介质 |
-
2021
- 2021-06-24 CN CN202110707827.6A patent/CN113407414A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1629821A (zh) * | 2003-12-19 | 2005-06-22 | 华为技术有限公司 | 一种多线程处理器线程死锁检测的方法及其系统 |
CN107643942A (zh) * | 2016-07-21 | 2018-01-30 | 杭州海康威视数字技术股份有限公司 | 一种状态信息的存储方法及装置 |
CN107783844A (zh) * | 2017-10-13 | 2018-03-09 | 锐捷网络股份有限公司 | 一种计算机程序运行异常检测方法、装置和介质 |
CN109508246A (zh) * | 2018-06-25 | 2019-03-22 | 广州多益网络股份有限公司 | 日志记录方法、系统和计算机可读存储介质 |
CN109582486A (zh) * | 2018-11-20 | 2019-04-05 | 厦门科灿信息技术有限公司 | 一种看门狗监测方法、系统及设备和存储介质 |
CN111984430A (zh) * | 2019-05-22 | 2020-11-24 | 厦门雅迅网络股份有限公司 | 多对多的进程通信方法及计算机可读存储介质 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986563A (zh) * | 2021-12-29 | 2022-01-28 | 北京智芯微电子科技有限公司 | 智能电表及其系统内核地址有效性检测方法和检测装置 |
CN113986563B (zh) * | 2021-12-29 | 2022-04-19 | 北京智芯微电子科技有限公司 | 智能电表及其系统内核地址有效性检测方法和检测装置 |
CN115129573A (zh) * | 2022-08-31 | 2022-09-30 | 国汽智控(北京)科技有限公司 | 程序运行的监控方法、装置、电子设备及存储介质 |
CN115794550A (zh) * | 2022-11-23 | 2023-03-14 | 广州汽车集团股份有限公司 | 进程管理方法、装置、交通工具以及存储介质 |
CN115794550B (zh) * | 2022-11-23 | 2024-04-02 | 广州汽车集团股份有限公司 | 进程管理方法、装置、交通工具以及存储介质 |
WO2024109068A1 (zh) * | 2022-11-25 | 2024-05-30 | 惠州市德赛西威智能交通技术研究院有限公司 | 程序监控方法、装置、电子设备和存储介质 |
CN115629827A (zh) * | 2022-12-22 | 2023-01-20 | 中国西安卫星测控中心 | 一种基于共享内存的Linux服务器多应用进程调度方法 |
CN115629827B (zh) * | 2022-12-22 | 2023-03-10 | 中国西安卫星测控中心 | 一种基于共享内存的Linux服务器多应用进程调度方法 |
CN117408060A (zh) * | 2023-10-13 | 2024-01-16 | 上海同星智能科技有限公司 | 整车模型仿真性能优化方法、存储介质和电子设备 |
CN117408060B (zh) * | 2023-10-13 | 2024-05-14 | 上海同星智能科技有限公司 | 整车模型仿真性能优化方法、存储介质和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113407414A (zh) | 程序运行监测方法、装置、终端及存储介质 | |
US9846645B1 (en) | Managing objects stored in memory | |
US10474471B2 (en) | Methods and systems for performing a replay execution | |
US20040186988A1 (en) | Method, system, and computer-readable medium for updating memory devices in a multi-processor computer system | |
EP3462324A1 (en) | Pointers in a memory managed system | |
CN102646045A (zh) | 多处理器系统及其并行启动方法 | |
US20200371696A1 (en) | Method, Apparatus, Device and Storage Medium for Managing Access Request | |
US9542112B2 (en) | Secure cross-process memory sharing | |
CN111880940A (zh) | 一种存储系统中数据处理方法、装置、设备及存储介质 | |
CN116028455A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN117234729B (zh) | 动态内存保护方法、装置、计算机设备及存储介质 | |
CN117667763A (zh) | 数据处理方法、装置、电子设备和可读存储介质 | |
CN115543586B (zh) | 应用层系统进程的启动方法、装置、设备及可读存储介质 | |
CN114281529B (zh) | 分布式虚拟化的客户操作系统调度优化方法、系统及终端 | |
CN116303211A (zh) | 一种应用于车载场景的cpu多核间通信方法及装置 | |
CN111767082A (zh) | 计算芯片启动方法、装置和计算机系统 | |
EP3296878B1 (en) | Electronic device and page merging method therefor | |
US11656905B2 (en) | Delegation control based on program privilege level and page privilege level | |
RU2639235C2 (ru) | Свободная от блокирования потоковая передача данных исполняемого кода | |
CN110955546B (zh) | 一种内存地址监控方法、装置及电子设备 | |
US9021220B2 (en) | Orphan storage release | |
CN112540846B (zh) | 一种控制服务器性能稳定的方法、装置及介质 | |
CN115103020B (zh) | 数据迁移处理方法和装置 | |
CN112463316A (zh) | 一种任务处理方法、系统、设备及计算机可读存储介质 | |
CN117112136A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210917 |