CN102117240A - 一种获取进程阻塞信息的方法及装置 - Google Patents

一种获取进程阻塞信息的方法及装置 Download PDF

Info

Publication number
CN102117240A
CN102117240A CN2009102657996A CN200910265799A CN102117240A CN 102117240 A CN102117240 A CN 102117240A CN 2009102657996 A CN2009102657996 A CN 2009102657996A CN 200910265799 A CN200910265799 A CN 200910265799A CN 102117240 A CN102117240 A CN 102117240A
Authority
CN
China
Prior art keywords
monitored process
time
monitoring
described monitored
real
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
Application number
CN2009102657996A
Other languages
English (en)
Other versions
CN102117240B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN200910265799.6A priority Critical patent/CN102117240B/zh
Priority to PCT/CN2010/074211 priority patent/WO2011079585A1/zh
Publication of CN102117240A publication Critical patent/CN102117240A/zh
Application granted granted Critical
Publication of CN102117240B publication Critical patent/CN102117240B/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/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data

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

一种获取进程阻塞信息的方法及装置
技术领域
本发明涉及计算机领域,特别涉及一种获取进程阻塞信息的方法及装置。
背景技术
进程是应用程序在计算机上的一次执行活动,运行一个应用程序即为启动一个进程。进程可以划分为运行、阻塞、就绪三种状态,并随一定条件而相互转化,包括:就绪转化为运行,运行转化为阻塞,阻塞转化为就绪。
其中,进程的阻塞是指进程因等待某一资源(如等待I/O(input/output,输入输出端口)设备)而暂时不能运行的状态,而此时即使处理机空闲,进程也无法使用处理机。而程序员可以根据进程阻塞信息,分析出进程发生阻塞的原因。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
目前,现有技术无法判断进程是否发生阻塞,另外,当操作***中的进程发生阻塞时,现有技术无法获取进程的阻塞信息。
发明内容
为了能够判断进程是否发生阻塞以及当判断出进程发生阻塞时获取进程的阻塞信息,本发明提供了一种获取进程阻塞信息的方法及装置。所述技术方案如下:
一种获取进程阻塞信息的方法,所述方法包括:
接收被监控进程;
通过实时监控所述被监控进程收发消息的过程,判断所述被监控进程是否发生阻塞;
如果发生阻塞,则实时获取所述被监控进程的阻塞信息。
所述通过实时监控所述被监控进程收发消息的过程,判断所述被监控进程是否发生阻塞,具体包括:
实时监控所述被监控进程是否发送消息;
如果监控出所述被监控进程发送消息,则在发送消息的时刻起,从零开始计时,并实时监控所述被监控进程是否接收消息;
如果所述计时的时间在零到预设的阈值之内,未监控出所述被监控进程接收消息,则所述被监控进程发生阻塞,记录所述计时的时间超过所述预设的阈值的时刻为阻塞开始时刻;
如果所述计时的时间在零到所述预设的阈值之内,监控出所述被监控进程接收消息,则将所述计时的时间清零。
所述实时获取所述被监控进程的阻塞信息,具体包括:
根据当前时刻和所述阻塞开始时刻,获取当前阻塞时间;
获取所述被监控进程调用的堆栈以及所述被监控进程在所述堆栈中访问的区域范围;
获取所述堆栈中的所述区域范围内存储的函数返回地址;
其中,将所述当前阻塞时间和所述函数返回地址作为所述被监控进程的阻塞信息。
所述实时获取所述被监控进程的阻塞信息,还包括:
根据所述被监控进程未占用CPU的时间获取所述被监控进程的CPU占用率,将所述被监控进程的CPU占用率作为所述被监控进程的阻塞信息。
所述通过实时监控所述被监控进程收发消息的过程,判断所述被监控进程是否发生阻塞之前,还包括
将监控程序注入所述被监控进程中,在所述被监控进程中创建监控线程,所述监控线程用于实时监控所述被监控进程。
如果所述被监控进程发生阻塞,所述方法还包括:
实时监控所述被监控进程是否接收消息,如果监控出所述被监控进程接收消息时,停止获取所述被监控进程的阻塞信息,清除所述阻塞开始时刻。
一种获取进程阻塞信息的装置,所述装置包括:
接收模块,用于接收被监控进程;
第一实时监控模块,用于通过实时监控所述被监控进程收发消息的过程,判断实时监控所述被监控进程是否发生阻塞;
实时获取模块,用于如果发生阻塞,则实时获取所述被监控进程的阻塞信 息。
所述第一实时监控模块具体包括:
实时监控单元,用于实时监控所述被监控进程是否发送消息;
计时单元,用于如果监控出所述被监控进程发送消息,则在发送消息的时刻起,从零开始计时,并实时监控所述被监控进程是否接收消息;
记录单元,用于如果所述计时的时间在零到预设的阈值之内,未监控出所述被监控进程接收消息,则所述被监控进程发生阻塞,记录所述计时的时间超过所述预设的阈值的时刻为阻塞开始时刻;
清零单元,用于如果所述计时的时间在零到所述预设的阈值之前,监控出所述被监控进程接收消息,则将所述计时的时间清零。
所述实时获取模块具体包括:
第一获取单元,用于根据当前时刻和所述阻塞开始时刻,获取当前阻塞时间;
第二获取单元,用于获取所述被监控进程调用的堆栈以及所述被监控进程在所述堆栈中访问的区域范围;
第三获取单元,用于获取所述堆栈中的所述区域范围内存储的函数返回地址;
其中,将所述当前阻塞时间和所述函数返回地址作为所述被监控进程的阻塞信息。
所述实时获取模块还包括:
获取单元,用于根据所述被监控进程未占用CPU的时间获取所述被监控进程的CPU占用率,将所述被监控进程的CPU占用率作为所述被监控进程的阻塞信息。
所述装置还包括
创建模块,用于将监控程序注入所述被监控进程中,在所述被监控进程中创建监控线程,所述监控线程用于实时监控所述被监控进程。
所述装置还包括:
第二实时监控模块,用于如果所述被监控进程发生阻塞,实时监控所述被监控进程是否接收消息,如果监控出所述被监控进程接收消息时,停止获取所述被监控进程的阻塞信息,清除所述阻塞开始时刻。
通过实时监控被监控进程收发消息的过程,判断被监控进程是否发生阻塞,如果发生阻塞,实时获取被监控进程的阻塞信息。从而克服了现有技术不能判断进程发生阻塞以及获取进程阻塞信息的缺陷;另外,获取的阻塞信息可以用于分析出被监控进程发生阻塞的原因。
附图说明
图1是本发明实施例1提供的一种获取进程阻塞信息的方法流程;
图2是本发明实施例2提供的一种获取进程阻塞信息的方法流程图;
图3是本发明实施例3提供的一种获取进程阻塞信息的方法流程图;
图4是本发明实施例4提供的一种获取进程阻塞信息的装置示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
如图1所示,本发明实施例提供了一种获取进程阻塞信息的方法,包括:
步骤101:接收被监控进程;
步骤102:通过实时监控被监控进程收发消息的过程,判断被监控进程是否发生阻塞,如果发生阻塞,则执行步骤103;
步骤103:实时获取被监控进程的阻塞信息。
其中,程序员可以根据获取的阻塞信息分析出被监控进程发生阻塞的原因。
在本发明实施例中,通过实时监控被监控进程收发消息的过程,判断被监控进程是否发生阻塞,如果发生阻塞,实时获取被监控进程的阻塞信息;从而克服了现有技术不能判断进程发生阻塞以及获取进程阻塞信息的缺陷;另外,获取的阻塞信息可以用于分析出被监控进程发生阻塞的原因。
实施例2
如图2所示,本实施例提供了一种获取进程阻塞信息的方法,包括:
步骤201:接收用户选择的需要被监控的进程;
其中,在操作***中可以同时启动多个进程,操作***将应用程序放入到 一个进程中,由该进程运行该应用程序。将操作***中的所有已经启动的进程都放置在GUI(Graphical User Interface,图形用户接口)界面中,用户从GUI界面选择需要被监控的进程。
步骤202:获取被监控进程的Handle(句柄);
其中,每个进程都有自身的Handle,只有通过进程的Handle才能对进程进行各种操作,所以在本实施例中需要先获取的被监控进程的Handle,然后才能通过被监控进程的Handle,从被监控进程中执行获取阻塞信息的操作。另外,  操作***中存储每个进程的Handle,所以从操作***中获取存储的被监控进程的Handle。
其中,在本实施例中通过调用获取进程句柄的函数来获取被监控进程的Handle。另外,在操作***中,通过进程运行应用程序,进程包括多个线程,进程利用其自身包括的线程分工运行应用程序。在利用进程运行应用程序时,应用程序被分成多个DLL(Dynamic Link Library,动态链接库)文件,而DLL文件为线程运行程序的基本单位,所以通过线程调用并运行各个DLL文件来分工完成运行应用程序。
步骤203:通过被监控进程的Handle,将存储监控程序的DLL文件注入被监控进程中;
具体地,通过被监控进程的Handle,在被监控进程中为存储监控程序的DLL文件分配内存,将该DLL文件的全路径写到分配的内存中,根据该DLL文件的全路径将该DLL文件注入到分配的内存中。
其中,在本实施例中可以通过调用内存分配函数在被监控进程中分配内存,可以通过调用字符串写入函数将存储监控程序的DLL文件的全路径写入分配的内存中,可以通过调用DLL文件加载函数将该DLL文件注入到分配的内存中。
步骤204:在被监控进程中,创建监控线程,其中,该监控线程用于运行注入的监控程序;
其中,监控线程用于实时监控被监控进程;监控线程通过运行监控程序来实现实时监控被监控进程。可以通过调用创建远程线程函数创建监控线程。另外,只有将监控程序注入到被监控进程中,才能创建监控线程,创建完监控线程后,监控线程自动地运行监控程序来实现实时监控被监控进程。
步骤205:通过监控线程实时监控被监控进程是否发生阻塞,如果被监控进 程发生阻塞,则执行步骤206;
步骤206:在被监控进程阻塞期间,实时获取被监控进程的阻塞信息;
其中,当监控出被监控进程发生阻塞之时,获取被监控进程的阻塞信息,然后定时的每隔一段时间获取一次阻塞信息。而每次获取阻塞信息的过程,具体为:从操作***中,获取当前时刻,并将当前时刻与记录的阻塞开始时刻做差运算得到当前阻塞时间;获取被监控进程包括的每个线程的线程基本信息(THREAD-BASIC-INFORMATION),从每个线程基本信息中,获取线程调用的堆栈以及线程在该堆栈中访问的区域范围,遍历获取的每个堆栈,并获取每个堆栈中的区域范围内存储的函数返回地址,将该获取的当前阻塞时间和函数返回地址作为被监控进程的阻塞信息,并存储被监控进程的阻塞信息。
其中,被监控进程包括的每个线程在运行应用程序时,当某个线程运行到应用程序中的调用函数的语句时,该线程调用一个堆栈,将该语句所在位置的地址作为调用的函数的返回地址压入到该堆栈中暂时存储,同时该线程也将调用的堆栈以及在该堆栈中存储函数返回地址的位置记录在线程基本信息中;当该线程执行完调用的函数并需要返应用程序时,从线程的基本信息中记录的堆栈以及在该堆栈的位置处读取函数返回地址,根据该函数返回地址返回到应用程序中继续运行。
其中,被监控进程包括的每个线程调用的堆栈即为被监控进程调用的堆栈,被监控进程包括的每个线程在堆栈中访问的区域范围即为被监控进程在堆栈中访问的区域范围。
进一步地,在本实施例中,当被监控进程阻塞时,在每次开始获取阻塞信息起的一段时间内,为了便于说明将该段时间称为***时间SystemTime,在***时间SystemTime内,获取被监控进程未占用CPU的时间IdleTime,根据***时间SystemTime和被监控进程未占用CPU的时间IdleTime按如下的公式(1)计算出被监控进程的CPU空闲率CurrentCpuIdle;
CurrentCpuIdle=dbIdleTime/dbSystemTime……(1)
再根据被监控进程的CPU空闲率按如下的公式(2)计算出被监控进程的CPU占用率,还可以将被监控进程的CPU占用率作为被监控进程的阻塞信息。
CPU占用率=100-(CurrentCpuIdle*100)/NumberOfProcessors......(2)
其中,***时间SystemTime是事先设置的一段时间,***时间SystemTime 不超过任意相邻两次获取阻塞信息的间隔,NumberOfProcessors为CPU包括的内核数目,NumberOfProcessors是常数。
其中,程序员可以根据阻塞信息中的函数返回地址分析出被监控进程发生阻塞的原因。由于在被监控进程阻塞期间,定时地获取不同时刻的阻塞信息,从而程序员可以根据阻塞信息中的不同时刻的函数返回地址分析出被监控进程在不同时刻发生阻塞的原因。
步骤207:在监控出被监控进程发生阻塞时,通过监控线程实时监控被监控进程是否接收信息,如果监控出被监控进程接收消息,则被监控进程发生的阻塞结束,立即停止获取被监控进程的阻塞信息并消除记录的阻塞开始时刻,然后返回步骤205。
其中,在监控出被监控进程发生阻塞时,步骤206和步骤207同步发生,并在整个被监控进程阻塞期间,步骤206和步骤207可以相互独立地发生或同步地发生。
其中,在本实施例中还可以将操作***中已经启动的每个进程作为被监控进程,并对每个被监控进程进行实时监控,当某个被监控进程发生阻塞时,获取该被监控进程的阻塞信息。
其中,在本实施例中,当被监控进程结束时,则将创建的监控线程从被监控进程中卸载掉,同时从被监控进程中将为监控程序分配的内存收回。其中,可以通过调用卸载动态链接库函数将监控线程从被监控进程中卸载掉,可以通过调用内存释放函数将分配的内存收回。
其中,在本实施例中,如果操作***为Windows***,则获取进程句柄的函数可以为OpenProcess函数、内存分配函数可以为VirtualAllocEx函数、字符串写入函数可以为WriteProcessMemory函数、DLL文件加载函数可以为LoadLibrary函数、创建远程线程函数可以为CreateRemoteThread函数、卸载动态链接库函数可以为RemoteThread函数和FreeLibrary函数、内存释放函数可以为VirtualFreeEx。
在本发明实施例中,通过实时监控被监控进程是否发生阻塞,如果发生阻塞,实时获取被监控进程的阻塞信息;从而克服了现有技术不能判断进程发生阻塞以及获取进程阻塞信息的缺陷;另外,获取的阻塞信息可以用于分析出被监控进程发生阻塞的原因。
实施例3
如图3所示,本发明实施例提供了一种获取阻塞信息的方法,包括:
步骤301:接收用户选择的需要被监控的进程;
其中,将操作***中的所有已经启动的进程都放置在GUI界面中,用户从GUI界面选择需要被监控的进程。
步骤302:获取被监控进程的Handle;
其中,可以通过调用获取进程句柄的函数来获取被监控进程的Handle。
步骤303:通过被监控进程的Handle,在被监控进程中创建监控线程,其中,监控线程用于实时监控被监控进程;
其中,可以通过调用创建远程线程函数在被监控进程中创建监控线程。
步骤304:通过监控线程实时监控被监控进程是否发送消息,如果监控出被监控进程发送消息,则执行步骤305;
步骤305:在零到预设的阈值的这段时间内,实时监控被监控进程是否接收消息,如果被监控进程没有接收消息,则被监控进程发生阻塞,执行步骤306;如果监控进程接收消息,则执行步骤307;
具体地,从被监控进程发送消息的时刻起,从零开始计时,实时判断计时的时间是否超过预设的阈值和实时监控被监控进程是否接收消息;如果计时的时间超过预设的阈值,并在零到预设的阈值的这段时间之内没有监控出被监控进程接收消息,则被监控进程发生阻塞,执行306;如果在计时的时间超过预设的阈值之前即在零到预设和阈值的这段时间之内,监控出被监控进程接收消息,则执行步骤307;
步骤306:从操作***中获取计时的时间超过预设的阈值的时刻为阻塞开始时刻,并记录阻塞开始时刻,立即执行步骤308;
步骤307:将计时的时间清零,并返回304,重新实时监控被监控进程是否发送消息;
步骤308:在被监控进程阻塞期间,实时获取被监控进程的阻塞信息;
其中,当监控出被监控进程发生阻塞之时,获取被监控进程的阻塞信息,然后定时的每隔一段时间获取一次阻塞信息。而每次获取阻塞信息的过程与实施例2的步骤206中的内容相同,在此不再赘述。
其中,程序员可以根据阻塞信息中的函数返回地址分析出被监控进程发生阻塞的原因。由于在被监控进程阻塞期间,定时地获取不同时刻的阻塞信息,从而程序员可以根据阻塞信息中的不同时刻的函数返回地址分析出被监控进程在不同时刻发生阻塞的原因。
步骤309:在监控出被监控进程发生阻塞时,通过监控线程实时监控被监控进程是否接收信息,如果监控出被监控进程接收消息,则被监控进程发生的阻塞结束,立即停止获取被监控进程的阻塞信息并消除记录的阻塞开始时刻,然后返回步骤304。
其中,在监控出被监控进程发生阻塞时,步骤308和步骤309同步发生,并在整个被监控进程阻塞期间,步骤308和步骤309可以相互独立地发生或同步地发生。
在本发明实施例中,通过实时监控被监控进程是否发生阻塞,如果发生阻塞,实时获取被监控进程的阻塞信息;从而克服了现有技术不能判断进程发生阻塞以及获取进程阻塞信息的缺陷;另外,获取的阻塞信息可以用于分析出被监控进程发生阻塞的原因。
实施例4
如图4所示,一种获取进程阻塞信息的装置,包括:
接收模块401,用于接收被监控进程;
第一实时监控模块402,用于通过监控被监控进程是否发送消息或接收消息来实时监控被监控进程是否发生阻塞;
实时获取模块403,用于如果发生阻塞,则实时获取被监控进程的阻塞信息。
其中,第一实时监控模块402具体包括:
实时监控单元,用于实时监控被监控进程是否发送消息;
计时单元,用于如果监控出被监控进程发送消息,则在发送消息的时刻起,从零开始计时,并实时监控被监控进程是否接收消息;
记录单元,用于如果计时的时间在零到预设的阈值之内,未监控出被监控进程接收消息,则被监控进程发生阻塞,记录计时的时间超过预设的阈值的时刻为阻塞开始时刻;
清零单元,用于如果计时的时间在零到预设的阈值之内,监控出被监控进 程接收消息,则将计时的时间清零;
实时获取模块403具体包括:
第一获取单元,用于根据当前时刻和阻塞开始时刻,获取当前阻塞时间;
第二获取单元,用于获取被监控进程调用的堆栈以及被监控进程在该堆栈中访问的区域范围;
第三获取单元,用于获取该堆栈中的该区域范围内存储的函数返回地址;
其中,将获取的当前阻塞时间和获取的函数返回地址作为被监控进程的阻塞信息;
所述实时获取模块还包括:
获取单元,用于根据被监控进程未占用CPU的时间获取被监控进程的CPU占用率,将被监控进程的CPU占用率作为被监控进程的阻塞信息。
该装置还包括
创建模块,用于将监控程序注入被监控进程中,在被监控进程中创建监控线程,该监控线程用于实时监控被监控进程;
该装置还包括:
第二实时监控模块,用于如果被监控进程发生阻塞,实时监控被监控进程是否接收消息,如果监控出被监控进程接收消息时,停止获取被监控进程的阻塞信息,清除阻塞开始时刻。
在本发明实施例中,通过监控被监控进程收发消息的过程,判断被监控进程是否发生阻塞,如果发生阻塞,实时获取被监控进程的阻塞信息;从而克服了现有技术不能判断进程发生阻塞以及获取进程阻塞信息的缺陷;另外,获取的阻塞信息可以用于分析出被监控进程发生阻塞的原因。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种获取进程阻塞信息的方法,其特征在于,所述方法包括:
接收被监控进程;
通过实时监控所述被监控进程收发消息的过程,判断所述被监控进程是否发生阻塞;
如果发生阻塞,则实时获取所述被监控进程的阻塞信息。
2.如权利要求1所述的方法,其特征在于,所述通过实时监控所述被监控进程收发消息的过程,判断所述被监控进程是否发生阻塞,具体包括:
实时监控所述被监控进程是否发送消息;
如果监控出所述被监控进程发送消息,则在发送消息的时刻起,从零开始计时,并实时监控所述被监控进程是否接收消息;
如果所述计时的时间在零到预设的阈值之内,未监控出所述被监控进程接收消息,则所述被监控进程发生阻塞,记录所述计时的时间超过所述预设的阈值的时刻为阻塞开始时刻;
如果所述计时的时间在零到所述预设的阈值之内,监控出所述被监控进程接收消息,则将所述计时的时间清零。
3.如权利要求2所述的方法,其特征在于,所述实时获取所述被监控进程的阻塞信息,具体包括:
根据当前时刻和所述阻塞开始时刻,获取当前阻塞时间;
获取所述被监控进程调用的堆栈以及所述被监控进程在所述堆栈中访问的区域范围;
获取所述堆栈中的所述区域范围内存储的函数返回地址;
其中,将所述当前阻塞时间和所述函数返回地址作为所述被监控进程的阻塞信息。
4.如权利要求1所述的方法,其特征在于,所述实时获取所述被监控进程的阻塞信息,还包括:
根据所述被监控进程未占用CPU的时间获取所述被监控进程的CPU占用率,将所述被监控进程的CPU占用率作为所述被监控进程的阻塞信息。
5.如权利要求1所述的方法,其特征在于,所述通过实时监控所述被监控进程收发消息的过程,判断所述被监控进程是否发生阻塞之前,还包括
将监控程序注入所述被监控进程中,在所述被监控进程中创建监控线程,所述监控线程用于实时监控所述被监控进程。
6.如权利要求1所述的方法,其特征在于,如果所述被监控进程发生阻塞,所述方法还包括:
实时监控所述被监控进程是否接收消息,如果监控出所述被监控进程接收消息时,停止获取所述被监控进程的阻塞信息,清除所述阻塞开始时刻。
7.一种获取进程阻塞信息的装置,其特征在于,所述装置包括:
接收模块,用于接收被监控进程;
第一实时监控模块,用于通过实时监控所述被监控进程收发消息的过程,判断所述被监控进程是否发生阻塞;
实时获取模块,用于如果发生阻塞,则实时获取所述被监控进程的阻塞信息。
8.如权利要求7所述的装置,其特征在于,所述第一实时监控模块具体包括:
实时监控单元,用于实时监控所述被监控进程是否发送消息;
计时单元,用于如果监控出所述被监控进程发送消息,则在发送消息的时刻起,从零开始计时,并实时监控所述被监控进程是否接收消息;
记录单元,用于如果所述计时的时间在零到预设的阈值之内,未监控出所述被监控进程接收消息,则所述被监控进程发生阻塞,记录所述计时的时间超过所述预设的阈值的时刻为阻塞开始时刻;
清零单元,用于如果所述计时的时间在零到所述预设的阈值之内,监控出所述被监控进程接收消息,则将所述计时的时间清零。
9.如权利要求8所述的装置,其特征在于,所述实时获取模块具体包括:
第一获取单元,用于根据当前时刻和所述阻塞开始时刻,获取当前阻塞时间;
第二获取单元,用于获取所述被监控进程调用的堆栈以及所述被监控进程在所述堆栈中访问的区域范围;
第三获取单元,用于获取所述堆栈中的所述区域范围内存储的函数返回地址;
其中,将所述当前阻塞时间和所述函数返回地址作为所述被监控进程的阻塞信息。
10.如权利要求7所述的装置,其特征在于,所述实时获取模块还包括:
获取单元,用于根据所述被监控进程未占用CPU的时间获取所述被监控进程的CPU占用率,将所述被监控进程的CPU占用率作为所述被监控进程的阻塞信息。
11.如权利要求7所述的装置,其特征在于,所述装置还包括
创建模块,用于将监控程序注入所述被监控进程中,在所述被监控进程中创建监控线程,所述监控线程用于实时监控所述被监控进程。
12.如权利要求7所述的装置,其特征在于,所述装置还包括:
第二实时监控模块,用于如果所述被监控进程发生阻塞,实时监控所述被监控进程是否接收消息,如果监控出所述被监控进程接收消息时,停止获取所述被监控进程的阻塞信息,清除所述阻塞开始时刻。
CN200910265799.6A 2009-12-31 2009-12-31 一种获取进程阻塞信息的方法及装置 Active CN102117240B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN200910265799.6A CN102117240B (zh) 2009-12-31 2009-12-31 一种获取进程阻塞信息的方法及装置
PCT/CN2010/074211 WO2011079585A1 (zh) 2009-12-31 2010-06-22 获取进程阻塞信息的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910265799.6A CN102117240B (zh) 2009-12-31 2009-12-31 一种获取进程阻塞信息的方法及装置

Publications (2)

Publication Number Publication Date
CN102117240A true CN102117240A (zh) 2011-07-06
CN102117240B CN102117240B (zh) 2016-01-20

Family

ID=44216018

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910265799.6A Active CN102117240B (zh) 2009-12-31 2009-12-31 一种获取进程阻塞信息的方法及装置

Country Status (2)

Country Link
CN (1) CN102117240B (zh)
WO (1) WO2011079585A1 (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104050030A (zh) * 2014-05-30 2014-09-17 汉柏科技有限公司 一种操作***进程调度方法
CN104503912A (zh) * 2014-12-24 2015-04-08 中科创达软件股份有限公司 一种服务响应过程的监测方法及装置
CN104919415A (zh) * 2013-01-08 2015-09-16 韩奥科技有限公司 用于管理应用程序的装置和方法
CN106293979A (zh) * 2015-06-25 2017-01-04 伊姆西公司 检测进程无响应的方法和装置
CN106371809A (zh) * 2016-08-31 2017-02-01 北京奇虎科技有限公司 线程处理器及线程处理方法
CN107196817A (zh) * 2016-03-15 2017-09-22 ***通信集团河南有限公司 Ping线程监测方法、网络服务状态监测方法及客户端
CN107590057A (zh) * 2017-09-28 2018-01-16 努比亚技术有限公司 冻屏监测与解决方法、移动终端及计算机可读存储介质
CN107659425A (zh) * 2016-07-26 2018-02-02 腾讯科技(深圳)有限公司 一种控制方法及服务器、终端
CN107783858A (zh) * 2017-10-31 2018-03-09 努比亚技术有限公司 终端冻屏的解决方法、终端和计算机可读存储介质
CN107908478A (zh) * 2017-11-30 2018-04-13 努比亚技术有限公司 内存清理方法、移动终端及计算机可读存储介质
CN107967177A (zh) * 2017-11-30 2018-04-27 努比亚技术有限公司 基于核心进程的内存优化方法、移动终端及可读存储介质
CN108345524A (zh) * 2017-01-22 2018-07-31 腾讯科技(深圳)有限公司 应用程序监控方法及应用程序监控装置
CN108920298A (zh) * 2018-07-16 2018-11-30 北京中科网威信息技术有限公司 一种基于申威架构的监控信号量的处理方法及装置
CN109117271A (zh) * 2018-08-10 2019-01-01 普联技术有限公司 自动调节cpu负载的方法、存储介质及终端设备
WO2019128573A1 (zh) * 2017-12-29 2019-07-04 Oppo广东移动通信有限公司 信息处理方法、装置、计算机设备和计算机可读存储介质
CN112667388A (zh) * 2021-03-16 2021-04-16 荣耀终端有限公司 一种操作***的保护方法及电子设备
CN115658242A (zh) * 2022-10-21 2023-01-31 芯华章科技股份有限公司 逻辑***设计的任务处理方法及电子设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100410891C (zh) * 2002-12-09 2008-08-13 联想(北京)有限公司 计算机应用软件自纠错自重起方法
CN1295612C (zh) * 2004-11-17 2007-01-17 中兴通讯股份有限公司 一种多线程***中实现实时监控各线程状态的方法
CN100563178C (zh) * 2005-10-26 2009-11-25 华为技术有限公司 网络处理器以及监控网络处理器的方法
CN101114253A (zh) * 2006-07-26 2008-01-30 腾讯科技(深圳)有限公司 一种程序崩溃信息上报的方法及***
CN100389404C (zh) * 2006-08-01 2008-05-21 西安西电捷通无线网络通信有限公司 一种计算机应用程序的监控及异常处理方法
CN101408861A (zh) * 2007-10-11 2009-04-15 鸿富锦精密工业(深圳)有限公司 应用程序实时监控***及方法
CN100549979C (zh) * 2007-11-29 2009-10-14 中兴通讯股份有限公司 ***任务的cpu占用率检测方法及***

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104919415A (zh) * 2013-01-08 2015-09-16 韩奥科技有限公司 用于管理应用程序的装置和方法
CN104050030A (zh) * 2014-05-30 2014-09-17 汉柏科技有限公司 一种操作***进程调度方法
CN104503912B (zh) * 2014-12-24 2017-07-11 中科创达软件股份有限公司 一种服务响应过程的监测方法及装置
CN104503912A (zh) * 2014-12-24 2015-04-08 中科创达软件股份有限公司 一种服务响应过程的监测方法及装置
CN106293979A (zh) * 2015-06-25 2017-01-04 伊姆西公司 检测进程无响应的方法和装置
CN106293979B (zh) * 2015-06-25 2019-11-15 伊姆西公司 检测进程无响应的方法和装置
CN107196817A (zh) * 2016-03-15 2017-09-22 ***通信集团河南有限公司 Ping线程监测方法、网络服务状态监测方法及客户端
CN107196817B (zh) * 2016-03-15 2020-07-14 ***通信集团河南有限公司 Ping线程监测方法、网络服务状态监测方法及客户端
CN107659425A (zh) * 2016-07-26 2018-02-02 腾讯科技(深圳)有限公司 一种控制方法及服务器、终端
CN106371809A (zh) * 2016-08-31 2017-02-01 北京奇虎科技有限公司 线程处理器及线程处理方法
CN106371809B (zh) * 2016-08-31 2019-03-01 北京奇虎科技有限公司 线程处理器及线程处理方法
CN108345524B (zh) * 2017-01-22 2021-12-14 腾讯科技(深圳)有限公司 应用程序监控方法及应用程序监控装置
CN108345524A (zh) * 2017-01-22 2018-07-31 腾讯科技(深圳)有限公司 应用程序监控方法及应用程序监控装置
CN107590057B (zh) * 2017-09-28 2021-06-15 努比亚技术有限公司 冻屏监测与解决方法、移动终端及计算机可读存储介质
CN107590057A (zh) * 2017-09-28 2018-01-16 努比亚技术有限公司 冻屏监测与解决方法、移动终端及计算机可读存储介质
CN107783858A (zh) * 2017-10-31 2018-03-09 努比亚技术有限公司 终端冻屏的解决方法、终端和计算机可读存储介质
CN107908478B (zh) * 2017-11-30 2021-11-16 努比亚技术有限公司 内存清理方法、移动终端及计算机可读存储介质
CN107967177A (zh) * 2017-11-30 2018-04-27 努比亚技术有限公司 基于核心进程的内存优化方法、移动终端及可读存储介质
CN107908478A (zh) * 2017-11-30 2018-04-13 努比亚技术有限公司 内存清理方法、移动终端及计算机可读存储介质
CN107967177B (zh) * 2017-11-30 2022-02-22 努比亚技术有限公司 基于核心进程的内存优化方法、移动终端及可读存储介质
WO2019128573A1 (zh) * 2017-12-29 2019-07-04 Oppo广东移动通信有限公司 信息处理方法、装置、计算机设备和计算机可读存储介质
CN108920298B (zh) * 2018-07-16 2021-07-13 北京中科网威信息技术有限公司 一种基于申威架构的监控信号量的处理方法及装置
CN108920298A (zh) * 2018-07-16 2018-11-30 北京中科网威信息技术有限公司 一种基于申威架构的监控信号量的处理方法及装置
CN109117271B (zh) * 2018-08-10 2021-03-23 普联技术有限公司 自动调节cpu负载的方法、存储介质及终端设备
CN109117271A (zh) * 2018-08-10 2019-01-01 普联技术有限公司 自动调节cpu负载的方法、存储介质及终端设备
CN112667388A (zh) * 2021-03-16 2021-04-16 荣耀终端有限公司 一种操作***的保护方法及电子设备
CN115658242A (zh) * 2022-10-21 2023-01-31 芯华章科技股份有限公司 逻辑***设计的任务处理方法及电子设备
CN115658242B (zh) * 2022-10-21 2024-04-26 芯华章科技股份有限公司 逻辑***设计的任务处理方法及电子设备

Also Published As

Publication number Publication date
WO2011079585A1 (zh) 2011-07-07
CN102117240B (zh) 2016-01-20

Similar Documents

Publication Publication Date Title
CN102117240A (zh) 一种获取进程阻塞信息的方法及装置
CN100524244C (zh) 网络存储***的存储空间不足预警方法
US6697972B1 (en) Method for monitoring fault of operating system and application program
US7930507B2 (en) Method of providing to a processor an estimated completion time of a storage operation
CN100517249C (zh) 一种捕获导致内存被野指针改写的函数的方法
CN102063338B (zh) 一种请求独占资源的方法及装置
US20050283673A1 (en) Information processing apparatus, information processing method, and program
CN102035697A (zh) 一种文件***的并发连接数性能测试***和方法
CN101853196A (zh) 一种记录异常数据的方法及装置
CN111813646B (zh) docker容器环境下注入应用探针的方法和装置
CN113495889B (zh) 一种分布式对象存储方法、装置、电子设备及存储介质
CN109324983A (zh) 一种自动清理缓存文件的方法、存储介质、设备及***
CN108958891B (zh) 一种虚拟机内存分配方法、装置及终端
CN102736864B (zh) 一种硬盘格式化的方法及装置
CN109144787A (zh) 一种数据恢复方法、装置、设备及可读存储介质
CN109597764A (zh) 一种目录配额的测试方法及相关装置
CN101169753A (zh) 一种记录导致***异常的函数的方法
CN202713533U (zh) 电视机的诊断和维护***与电视机
KR101991687B1 (ko) 동적 라이브러리 프로파일링 방법, 이를 기록한 컴퓨터로 읽을 수 있는 기록 매체 및 동적 라이브러리 프로파일링 시스템
CN102214147A (zh) 一种检测内存访问越界的方法及装置
CN105242955A (zh) 一种虚拟机磁盘输入输出调度方法及***
CN102222036A (zh) 一种自动化测试方法和设备
US9329972B2 (en) Implementing client based throttled error logging in a computing device
WO2008035352A2 (en) A method and a storage device estimating a completion time for a storage operation
CN102426539A (zh) 一种定时器任务自动处理方法及***

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant