專(zhuān)利名稱(chēng):進(jìn)程監(jiān)控方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實(shí)施例涉及計(jì)算機(jī)技術(shù),尤其涉及一種進(jìn)程監(jiān)控方法及裝置。
背景技術(shù):
現(xiàn)有技術(shù)中,操作系統(tǒng)(Operating System,簡(jiǎn)稱(chēng)OS)對(duì)進(jìn)程的監(jiān)控、恢復(fù)和調(diào)試通常都會(huì)用到進(jìn)程異常退出時(shí)的dump信息,dump信息可以包括進(jìn)程中止時(shí)的部分內(nèi)存映射和堆棧信息。但是,對(duì)與大型應(yīng)用而言,進(jìn)程長(zhǎng)時(shí)間的運(yùn)行,加上多線程的相互影響,單一的dump信息對(duì)于問(wèn)題的回溯和追蹤作用很小,而且也很難分析進(jìn)程運(yùn)行過(guò)程中導(dǎo)致其最終結(jié)束的多種原因。同時(shí)進(jìn)程結(jié)束時(shí)無(wú)法獲取到進(jìn)程的寄存器等信息,也給調(diào)試和恢復(fù)過(guò)程帶來(lái)不便。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種進(jìn)程監(jiān)控方法及裝置,以實(shí)現(xiàn)在進(jìn)程運(yùn)行過(guò)程中獲取進(jìn)程信息,為調(diào)試和恢復(fù)提供了依據(jù),提高了系統(tǒng)分析的可靠性。本發(fā)明實(shí)施例提供一種進(jìn)程監(jiān)控方法,包括為被監(jiān)控進(jìn)程分配監(jiān)控線程,若所述監(jiān)控線程獲知系統(tǒng)資源不足,則向所述被監(jiān)控進(jìn)程的隊(duì)列發(fā)送異步通知信息,以使所述被監(jiān)控進(jìn)程當(dāng)檢測(cè)到所述隊(duì)列中存在所述異步通知信息時(shí),發(fā)送處理請(qǐng)求,其中,所述處理請(qǐng)求中攜帶有所述異步通知信息;根據(jù)所述處理請(qǐng)求,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程。本發(fā)明實(shí)施例提供一種進(jìn)程監(jiān)控裝置,包括監(jiān)控單元,用于為被監(jiān)控進(jìn)程分配監(jiān)控線程,若所述監(jiān)控線程獲知系統(tǒng)資源不足,則向所述被監(jiān)控進(jìn)程的隊(duì)列發(fā)送異步通知信息,以使所述被監(jiān)控進(jìn)程當(dāng)檢測(cè)到所述隊(duì)列中存在所述異步通知信息時(shí),發(fā)送處理請(qǐng)求,其中,所述處理請(qǐng)求中攜帶有所述異步通知信息;進(jìn)程信息處理單元,用于根據(jù)所述處理請(qǐng)求,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程。由上述技術(shù)方案可知,本發(fā)明實(shí)施例提供的進(jìn)程監(jiān)控方法及裝置,為被監(jiān)控進(jìn)程分配監(jiān)控線程,若監(jiān)控線程獲知系統(tǒng)資源不足,則向被監(jiān)控進(jìn)程的隊(duì)列發(fā)送異步通知信息,以使被監(jiān)控進(jìn)程當(dāng)檢測(cè)到隊(duì)列中存在異步通知信息時(shí),發(fā)送處理請(qǐng)求,根據(jù)處理請(qǐng)求,調(diào)用異步通知信息對(duì)應(yīng)的處理函數(shù)獲取進(jìn)程的進(jìn)程信息,將進(jìn)程信息發(fā)送給監(jiān)控線程?;诓僮飨到y(tǒng)的異步事件處理機(jī)制,當(dāng)系統(tǒng)資源不足時(shí),監(jiān)控線程就會(huì)向被監(jiān)控進(jìn)程發(fā)送異步通知消息,這樣在處理異步通知消息的過(guò)程中就可以獲取進(jìn)程信息。進(jìn)程信息的獲取過(guò)程沒(méi)有對(duì)被監(jiān)控進(jìn)程的正常運(yùn)行造成任何干擾,可以對(duì)根據(jù)進(jìn)程信息對(duì)被監(jiān)控進(jìn)程的運(yùn)行情況進(jìn)行分析,以及時(shí)維護(hù)。當(dāng)進(jìn)程異常終止時(shí),進(jìn)程信息包括了在系統(tǒng)風(fēng)險(xiǎn)過(guò)程中該被監(jiān)控進(jìn)程的狀態(tài),為調(diào)試和恢復(fù)過(guò)程提供了充分的依據(jù),提高了系統(tǒng)分析的可靠性。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明實(shí)施例提供的進(jìn)程監(jiān)控方法流程圖;圖2為本發(fā)明實(shí)施例提供的一種進(jìn)程監(jiān)控處理流程圖;圖3為本發(fā)明實(shí)施例提供的另一種進(jìn)程監(jiān)控處理流程圖;圖4為本發(fā)明實(shí)施例提供的又一種進(jìn)程監(jiān)控處理流程圖;圖5為本發(fā)明實(shí)施例提供的進(jìn)程監(jiān)控裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
·為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。圖I為本發(fā)明實(shí)施例提供的進(jìn)程監(jiān)控方法流程圖。如圖I所示,本實(shí)施例提供的進(jìn)程監(jiān)控方法可以具體可以應(yīng)用于操作系統(tǒng)對(duì)進(jìn)程尤其是關(guān)鍵進(jìn)程的監(jiān)控過(guò)程,操作系統(tǒng)可以為Unix/Linux或Windows,本實(shí)施例提供的進(jìn)程監(jiān)控方法可以通過(guò)進(jìn)程監(jiān)控裝置來(lái)執(zhí)行,該進(jìn)程監(jiān)控裝置可以通過(guò)硬件和/或軟件的形式來(lái)實(shí)現(xiàn),可以集成在操作系統(tǒng)的控制裝置中。關(guān)鍵進(jìn)程具體可以為運(yùn)行較為重要程序的進(jìn)程,運(yùn)行在操作系統(tǒng)上的關(guān)鍵進(jìn)程可能會(huì)消耗大量的系統(tǒng)資源,同時(shí)也可能因?yàn)椴僮飨到y(tǒng)上的其他進(jìn)程占用了大量系統(tǒng)資源后,影響該關(guān)鍵進(jìn)程的正常運(yùn)行。當(dāng)系統(tǒng)資源出現(xiàn)緊張、系統(tǒng)運(yùn)行環(huán)境存在風(fēng)險(xiǎn)的時(shí)候,可以采用本實(shí)施例提供的進(jìn)程監(jiān)控方法對(duì)關(guān)鍵進(jìn)程進(jìn)行監(jiān)控,以獲取進(jìn)程信息,一旦關(guān)鍵進(jìn)程確實(shí)因?yàn)橄到y(tǒng)風(fēng)險(xiǎn)而終止,管理員或調(diào)試人員就可以將進(jìn)程信息作為調(diào)試或跟蹤的日志以查明原因。本實(shí)施例提供的進(jìn)程監(jiān)控方法具體包括步驟10、為被監(jiān)控進(jìn)程分配監(jiān)控線程,若所述監(jiān)控線程獲知系統(tǒng)資源不足,則向所述被監(jiān)控進(jìn)程的隊(duì)列發(fā)送異步通知信息,以使所述被監(jiān)控進(jìn)程當(dāng)檢測(cè)到所述隊(duì)列中存在所述異步通知信息時(shí),發(fā)送處理請(qǐng)求,其中,所述處理請(qǐng)求中攜帶有所述異步通知信息;步驟20、根據(jù)所述處理請(qǐng)求,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程。操作系統(tǒng)中可能存在多個(gè)關(guān)鍵進(jìn)程,用戶(hù)可以預(yù)先設(shè)定所需要監(jiān)控的關(guān)鍵進(jìn)程,即被監(jiān)控進(jìn)程。為每個(gè)被監(jiān)控進(jìn)程分配一個(gè)監(jiān)控線程,監(jiān)控線程對(duì)該被監(jiān)控進(jìn)程在運(yùn)行過(guò)程中系統(tǒng)資源的占用情況進(jìn)行監(jiān)控,也可以通過(guò)專(zhuān)門(mén)的資源監(jiān)控線程對(duì)系統(tǒng)資源占用情況進(jìn)行監(jiān)控。當(dāng)系統(tǒng)資源不足時(shí),資源監(jiān)控線程會(huì)通知監(jiān)控線程。監(jiān)控線程向該進(jìn)程的隊(duì)列發(fā)送異步通知消息。若系統(tǒng)資源不足情況一直存在,則監(jiān)控線程會(huì)定時(shí)向被監(jiān)控進(jìn)程發(fā)送異步通知信息。該被監(jiān)控進(jìn)程當(dāng)檢測(cè)到隊(duì)列中存在該異步通知信息時(shí),向內(nèi)核線程或驅(qū)動(dòng)程序發(fā)送處理請(qǐng)求。在Unix/Linux操作系統(tǒng)中,可以通過(guò)內(nèi)核線程對(duì)該處理請(qǐng)求進(jìn)行處理,在Windows操作系統(tǒng)中,可以通過(guò)驅(qū)動(dòng)程序?qū)υ撎幚碚?qǐng)求進(jìn)行處理。在一種實(shí)現(xiàn)方式下,在Unix/Linux操作系統(tǒng)中,異步通知信息具體為信號(hào)或異步事件,信號(hào)或異步事件是以異步事件處理機(jī)制為基礎(chǔ)的。Unix/Linux操作系統(tǒng)下分為內(nèi)核空間和用戶(hù)空間,監(jiān)控線程或資源監(jiān)控線程對(duì)系統(tǒng)資源的檢測(cè)過(guò)程具體可以在用戶(hù)空間實(shí)現(xiàn),可以降低系統(tǒng)的運(yùn)行壓力。被監(jiān)控進(jìn)程在執(zhí)行應(yīng)用程序時(shí)通常都是在用戶(hù)空間實(shí)現(xiàn)的,當(dāng)執(zhí)行過(guò)程中需要調(diào)用系統(tǒng)函數(shù),則進(jìn)入內(nèi)核空間,系統(tǒng)函數(shù)執(zhí)行完畢后,被監(jiān)控進(jìn)程會(huì)檢測(cè)隊(duì)列中是否存在待處理的信號(hào)或異步事件,當(dāng)檢測(cè)到該信號(hào)或異步事件時(shí),發(fā)送攜帶有該信號(hào)或異步事件的處理請(qǐng)求給內(nèi)核線程,此時(shí),該被監(jiān)控進(jìn)程不對(duì)信號(hào)或異步事件進(jìn)行處理,被監(jiān)控進(jìn)程返回到用戶(hù)空間繼續(xù)執(zhí)行應(yīng)用程序。內(nèi)核線程接收到該處理請(qǐng)求,調(diào)用該信號(hào)或異步事件對(duì)應(yīng)的處理函數(shù)獲取進(jìn)程信息,信號(hào)或異步事件與處理函數(shù)的對(duì)應(yīng)關(guān)系可以預(yù)先注冊(cè),進(jìn)程信息可以包括分配的內(nèi)存空間信息、寄存器信息和堆棧信息等。內(nèi)核線程將進(jìn)程信息發(fā)送給監(jiān)控線程,監(jiān)控線程可以將進(jìn)程信息以文本形式輸出,系統(tǒng)中可以設(shè)置有系統(tǒng)管理軟件,以對(duì)該進(jìn)程信息進(jìn)行管理。也可以將進(jìn)程信息發(fā)送給其他監(jiān)控設(shè)備以進(jìn) 行進(jìn)一步地分析。在另一種實(shí)現(xiàn)方式下,在Windows操作系統(tǒng)中,異步通知信息具體為異步過(guò)程調(diào)用(Asynchronous Procedure Call,簡(jiǎn)稱(chēng)APC)請(qǐng)求,APC請(qǐng)求也是以異步事件處理機(jī)制為基礎(chǔ)的。Windows操作系統(tǒng)下也分為內(nèi)核空間和用戶(hù)空間,監(jiān)控線程或資源監(jiān)控線程對(duì)系統(tǒng)資源的檢測(cè)過(guò)程具體可以在用戶(hù)空間實(shí)現(xiàn),可以降低系統(tǒng)的運(yùn)行壓力。被監(jiān)控進(jìn)程在執(zhí)行應(yīng)用程序時(shí)通常都是在用戶(hù)空間實(shí)現(xiàn)的,當(dāng)執(zhí)行過(guò)程中需要調(diào)用系統(tǒng)函數(shù),則進(jìn)入內(nèi)核空間,系統(tǒng)函數(shù)執(zhí)行完畢后,被監(jiān)控進(jìn)程會(huì)檢測(cè)隊(duì)列中是否存在待處理的APC請(qǐng)求,當(dāng)檢測(cè)到該APC請(qǐng)求時(shí),發(fā)送攜帶有該APC請(qǐng)求的處理請(qǐng)求給驅(qū)動(dòng)程序,驅(qū)動(dòng)程序接收到該處理請(qǐng)求,調(diào)用與該APC請(qǐng)求對(duì)應(yīng)的APC處理函數(shù)獲取進(jìn)程信息,驅(qū)動(dòng)程序?qū)⑦M(jìn)程信息發(fā)送給監(jiān)控線程,監(jiān)控線程可以將進(jìn)程信息以文本形式輸出,也可以將進(jìn)程信息發(fā)送給其他監(jiān)控設(shè)備以進(jìn)行進(jìn)一步地分析。本實(shí)施例提供的進(jìn)程監(jiān)控方法,為被監(jiān)控進(jìn)程分配監(jiān)控線程,若監(jiān)控線程獲知系統(tǒng)資源不足,則向被監(jiān)控進(jìn)程的隊(duì)列發(fā)送異步通知信息,以使被監(jiān)控進(jìn)程當(dāng)檢測(cè)到隊(duì)列中存在異步通知信息時(shí),發(fā)送處理請(qǐng)求,根據(jù)處理請(qǐng)求,調(diào)用異步通知信息對(duì)應(yīng)的處理函數(shù)獲取進(jìn)程的進(jìn)程信息,將進(jìn)程信息發(fā)送給監(jiān)控線程?;诓僮飨到y(tǒng)的異步事件處理機(jī)制,當(dāng)系統(tǒng)資源不足時(shí),監(jiān)控線程就會(huì)向被監(jiān)控進(jìn)程發(fā)送異步通知消息,這樣在處理異步通知消息的過(guò)程中就可以獲取進(jìn)程信息。進(jìn)程信息的獲取過(guò)程沒(méi)有對(duì)被監(jiān)控進(jìn)程的正常運(yùn)行造成任何干擾,可以對(duì)根據(jù)進(jìn)程信息對(duì)被監(jiān)控進(jìn)程的運(yùn)行情況進(jìn)行分析,以及時(shí)維護(hù)。當(dāng)進(jìn)程異常終止時(shí),進(jìn)程信息包括了在系統(tǒng)風(fēng)險(xiǎn)過(guò)程中該被監(jiān)控進(jìn)程的狀態(tài),為調(diào)試和恢復(fù)過(guò)程提供了充分的依據(jù),提高了系統(tǒng)分析的可靠性。在本實(shí)施例中,步驟10中的,為被監(jiān)控進(jìn)程分配監(jiān)控線程之后,還可以包括如下步驟所述監(jiān)控線程對(duì)所述異步通知信息進(jìn)行注冊(cè),以使所述異步通知信息與所述處理函數(shù)相對(duì)應(yīng)。
具體地,異步通知信息可以為自定義信息,通過(guò)將異步通知信息注冊(cè),將該異步通知信息與處理函數(shù)相對(duì)應(yīng)。在本實(shí)施例中,步驟10中的,為被監(jiān)控進(jìn)程分配監(jiān)控線程,具體可以包括如下步驟接收監(jiān)控設(shè)備發(fā)送的攜帶有進(jìn)程標(biāo)識(shí)的監(jiān)控請(qǐng)求,根據(jù)所述進(jìn)程標(biāo)識(shí)確定所述被監(jiān)控進(jìn)程??梢栽O(shè)置獨(dú)立的監(jiān)控設(shè)備設(shè)置需要監(jiān)控的進(jìn)程,進(jìn)程標(biāo)識(shí)具體可以為進(jìn)程的名稱(chēng)或編號(hào),可以根據(jù)進(jìn)程標(biāo)識(shí)唯一確定相對(duì)應(yīng)的進(jìn)程,為該進(jìn)程分配監(jiān)控線程。在本實(shí)施例中,步驟10中的,若所述監(jiān)控線程獲知系統(tǒng)資源不足之后,還可以包括如下步驟向所述監(jiān)控設(shè)備發(fā)送風(fēng)險(xiǎn)通知消息,以使所述監(jiān)控設(shè)備根據(jù)所述風(fēng)險(xiǎn)通知消息建立日志;相應(yīng)地,步驟20中的,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程之后,還包括步驟30、所述監(jiān)控線程將所述進(jìn)程信息發(fā)送給所述監(jiān)控設(shè)備,以使所述監(jiān)控設(shè)備將所述進(jìn)程信息記錄到所述日志中。當(dāng)監(jiān)控線程判斷獲知系統(tǒng)資源不足時(shí),可以向監(jiān)控設(shè)備發(fā)送風(fēng)險(xiǎn)通知消息,監(jiān)控設(shè)備根據(jù)該風(fēng)險(xiǎn)通知消息建立日志,監(jiān)控線程將進(jìn)程信息發(fā)送給監(jiān)控設(shè)備,監(jiān)控設(shè)備再將進(jìn)程信息記錄到該日志中。用戶(hù)就可以根據(jù)日志內(nèi)容對(duì)被監(jiān)控進(jìn)程的狀態(tài)進(jìn)行分析。在本實(shí)施例中,步驟10中的,所述被監(jiān)控進(jìn)程當(dāng)檢測(cè)到所述異步通知信息時(shí),發(fā)送處理請(qǐng)求,具體可以包括如下步驟所述被監(jiān)控進(jìn)程執(zhí)行應(yīng)用程序過(guò)程中調(diào)用系統(tǒng)函數(shù),系統(tǒng)函數(shù)執(zhí)行完畢后,檢測(cè)是否存在所述異步通知信息,當(dāng)檢測(cè)到所述異步通知信息時(shí),發(fā)送所述處理請(qǐng)求。
在本實(shí)施例中,所述異步通知信息為信號(hào)或異步事件;相應(yīng)地,步驟20,根據(jù)所述處理請(qǐng)求,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程,具體包括如下步驟通過(guò)所述內(nèi)核線程對(duì)所述被監(jiān)控進(jìn)程發(fā)送的所述處理請(qǐng)求進(jìn)行處理,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述監(jiān)控線程掛起,將所述進(jìn)程信息寫(xiě)入/proc文件系統(tǒng)后,恢復(fù)所述監(jiān)控線程,以使所述監(jiān)控線程從所述/proc文件系統(tǒng)中讀取所述進(jìn)程信息。圖2為本發(fā)明實(shí)施例提供的一種進(jìn)程監(jiān)控處理流程圖。如圖2所示,具體地,在一種實(shí)現(xiàn)方式下,操作系統(tǒng)為Unix/Linux,可以設(shè)置Monitor模塊,該Monitor模塊可以通過(guò)用戶(hù)空間的一個(gè)監(jiān)控進(jìn)程來(lái)實(shí)現(xiàn)。該監(jiān)控進(jìn)程包括為被監(jiān)控進(jìn)程分配的監(jiān)控線程,當(dāng)存在 多個(gè)被監(jiān)控進(jìn)程時(shí),可以為每個(gè)被監(jiān)控進(jìn)程分配對(duì)應(yīng)的監(jiān)控線程。監(jiān)控線程可以對(duì)系統(tǒng)資源進(jìn)行監(jiān)控,監(jiān)控進(jìn)程還可以包括一個(gè)資源監(jiān)控線程,以專(zhuān)門(mén)對(duì)系統(tǒng)資源進(jìn)行監(jiān)控,當(dāng)該資源監(jiān)控線程監(jiān)控到系統(tǒng)資源不足時(shí),可以產(chǎn)生線程內(nèi)部告警,以告知監(jiān)控線程。還可以設(shè)置KAgent模塊,該KAgent模塊可以通過(guò)內(nèi)核空間的一個(gè)內(nèi)核線程來(lái)實(shí)現(xiàn)。監(jiān)控線程預(yù)先將向KAgent模塊注冊(cè)自定義信號(hào)SIGPR0CSTAT,KAgent模塊將SIGPR0CSTAT與處理函數(shù)proc_status_capture相對(duì)應(yīng)。當(dāng)監(jiān)控線程獲知系統(tǒng)資源不足時(shí),向被監(jiān)控進(jìn)程發(fā)送該信號(hào)SIGPR0CSTAT,該信號(hào)SIGPR0CSTAT進(jìn)入待處理的信號(hào)隊(duì)列中,并向監(jiān)控設(shè)備發(fā)送風(fēng)險(xiǎn)通知消息,監(jiān)控設(shè)備根據(jù)該風(fēng)險(xiǎn)通知消息建立日志。被監(jiān)控進(jìn)程在內(nèi)核空間中執(zhí)行完系統(tǒng)函數(shù)后,檢測(cè)到該待處理的信號(hào)隊(duì)列中存在信號(hào)SIGPROCSTAT,則向KAgent模塊發(fā)送攜帶有該信號(hào)SIGPROCSTAT的處理請(qǐng)求。KAgent模塊接收到處理請(qǐng)求,調(diào)用信號(hào)SIGPROCSTAT對(duì)應(yīng)的處理函數(shù)proc_status_capture獲取被監(jiān)控進(jìn)程的進(jìn)程信息。KAgent模塊將被監(jiān)控進(jìn)程的堆棧重新設(shè)置為正常信號(hào)/異步事件處理完成的堆棧信息。被監(jiān)控進(jìn)程返回用戶(hù)空間繼續(xù)執(zhí)行原應(yīng)用程序的后續(xù)流程。KAgent模塊與用戶(hù)空間的監(jiān)控線程的交互通過(guò)/proc文件系統(tǒng)實(shí)現(xiàn)。KAgent模塊先將監(jiān)控線程掛起,以停止監(jiān)控線程對(duì)/proc文件系統(tǒng)的讀操作,KAgent模塊將進(jìn)程信息寫(xiě)入/proc文件系統(tǒng)后,再恢復(fù)該監(jiān)控線程,監(jiān)控線程從/proc文件系統(tǒng)中讀取進(jìn)程信息。監(jiān)控線程再將進(jìn)程信息發(fā)送給監(jiān)控設(shè)備,監(jiān)控設(shè)備將進(jìn)程信息記錄在相應(yīng)的日志中。在本實(shí)施例中,所述異步通知信息為用戶(hù)異步過(guò)程調(diào)用請(qǐng)求;相應(yīng)地,步驟20,根據(jù)所述處理請(qǐng)求,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程,具體可以包括如下步驟通過(guò)驅(qū)動(dòng)程序?qū)λ霰槐O(jiān)控進(jìn)程發(fā)送的所述處理請(qǐng)求進(jìn)行處理,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程。圖3為本發(fā)明實(shí)施例提供的另一種進(jìn)程監(jiān)控處理流程圖。如圖3所示,具體地,在另一種實(shí)現(xiàn)方式下,操作系統(tǒng)為Windows,可以設(shè)置Monitor模塊和KAgent模塊,Monitor模塊的實(shí)現(xiàn)方式與在Unix/Linux操作系統(tǒng)中的類(lèi)似,此不再贅述。KAgent模塊可以通過(guò)內(nèi)核空間的驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)。當(dāng)資源監(jiān)控線程監(jiān)控到系統(tǒng)資源不足時(shí),產(chǎn)生線程內(nèi)部告警,以告知監(jiān)控線程。監(jiān)控線程預(yù)先在KAgent模塊中注冊(cè)用戶(hù)APC請(qǐng)求,將用戶(hù)APC請(qǐng)求與用戶(hù)APC處理函數(shù)proc_status_capture相對(duì)應(yīng)。當(dāng)獲知系統(tǒng)資源不足時(shí),向被監(jiān)控進(jìn)程的待處理的請(qǐng)求隊(duì)列掛入該用戶(hù)APC請(qǐng)求,并向監(jiān)控設(shè)備發(fā)送風(fēng)險(xiǎn)通知消息,監(jiān)控設(shè)備根據(jù)該風(fēng)險(xiǎn)通知消息建立日志。被監(jiān)控進(jìn)程在內(nèi)核空間中執(zhí)行完系統(tǒng)函數(shù)后,檢測(cè)到該待處理的請(qǐng)求隊(duì)列中存在該用戶(hù)APC請(qǐng)求,則向KAgent模塊發(fā)送攜帶有該用戶(hù)APC請(qǐng)求的處理請(qǐng)求。KAgent模塊接收到處理請(qǐng)求,調(diào)用該用戶(hù)APC請(qǐng)求對(duì)應(yīng)的用戶(hù)APC處理函數(shù)proc_status_capture獲取被監(jiān)控進(jìn)程的進(jìn)程信息。處理完成后,轉(zhuǎn)入正常APC處理流程中APC處理過(guò)程返回的流程,以便其設(shè)置用戶(hù)空間堆棧,正常返回用戶(hù)空間執(zhí)行。被監(jiān)控進(jìn)程返回用戶(hù)空間繼續(xù)執(zhí)行原應(yīng)用程序的后續(xù)流程。KAgent模塊將進(jìn)程信息發(fā)送給用戶(hù)空間的監(jiān)控線程。監(jiān)控線程再將進(jìn)程信息發(fā)送給監(jiān)控設(shè)備,監(jiān)控設(shè)備將進(jìn)程信息記錄在相應(yīng)的日志中。在本實(shí)施例中,所述異步通知信息為內(nèi)核異步過(guò)程調(diào)用請(qǐng)求;相應(yīng)地,步驟10中的,若所述監(jiān)控線程獲知系統(tǒng)資源不足,則向所述被監(jiān)控進(jìn)程發(fā)送異步通知信息,具體可以包括如下步驟若所述監(jiān)控線程獲知系統(tǒng)資源不足,則生成攜帶有所述內(nèi)核異步過(guò)程調(diào)用請(qǐng)求的異步請(qǐng)求信息并發(fā)送給驅(qū)動(dòng)程序,以使所述驅(qū)動(dòng)程序根據(jù)所述異步請(qǐng)求信息將所述被監(jiān)控進(jìn)程的隊(duì)列掛入所述內(nèi)核異步過(guò)程調(diào)用請(qǐng)求;步驟20,根據(jù)所述處理請(qǐng)求,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程,具體可以包括如下步驟通過(guò)所述驅(qū)動(dòng)程序?qū)λ霰槐O(jiān)控進(jìn)程發(fā)送的所述處理請(qǐng)求進(jìn)行處理,調(diào)用所述異、步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程。圖4為本發(fā)明實(shí)施例提供的又一種進(jìn)程監(jiān)控處理流程圖。如圖4所示,具體地,在又一種實(shí)現(xiàn)方式下,操作系統(tǒng)為Windows,可以設(shè)置Monitor模塊和KAgent模塊,Monitor模塊的實(shí)現(xiàn)方式與在Unix/Linux操作系統(tǒng)中的類(lèi)似,此不再贅述。KAgent模塊可以通過(guò)內(nèi)核空間的驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)。當(dāng)資源監(jiān)控線程監(jiān)控到系統(tǒng)資源不足時(shí),產(chǎn)生線程內(nèi)部告警,以告知監(jiān)控線程。監(jiān)控線程預(yù)先在KAgent模塊中注冊(cè)內(nèi)核APC請(qǐng)求,將內(nèi)核APC請(qǐng)求與內(nèi)核APC處理函數(shù)proc_status_capture相對(duì)應(yīng)。當(dāng)監(jiān)控線程獲知系統(tǒng)資源不足時(shí),生成攜帶有內(nèi)核APC請(qǐng)求的異步請(qǐng)求信息,并將該異步請(qǐng)求消息發(fā)送給KAgent模塊,并向監(jiān)控設(shè)備發(fā)送風(fēng)險(xiǎn)通知消息,監(jiān)控設(shè)備根據(jù)該風(fēng)險(xiǎn)通知消息建立日志,KAgent模塊將被監(jiān)控進(jìn)程的待處理的請(qǐng)求隊(duì)列中掛入該內(nèi)核APC請(qǐng)求。被監(jiān)控進(jìn)程在內(nèi)核空間中執(zhí)行完系統(tǒng)函數(shù)后,檢測(cè)到該待處理的請(qǐng)求隊(duì)列中存在該內(nèi)核APC請(qǐng)求,則向KAgent模塊發(fā)送攜帶有該內(nèi)核APC請(qǐng)求的處理請(qǐng)求。KAgent模塊接收到處理請(qǐng)求,調(diào)用該內(nèi)核APC請(qǐng)求對(duì)應(yīng)的內(nèi)核APC處理 函數(shù)proc_status_capture獲取被監(jiān)控進(jìn)程的進(jìn)程信息。處理完成后,轉(zhuǎn)入正常APC處理流程中APC處理過(guò)程返回的流程,以便其設(shè)置用戶(hù)空間堆棧,正常返回用戶(hù)空間執(zhí)行。被監(jiān)控進(jìn)程返回用戶(hù)空間繼續(xù)執(zhí)行原應(yīng)用程序的后續(xù)流程。KAgent模塊將進(jìn)程信息發(fā)送給用戶(hù)空間的監(jiān)控線程。監(jiān)控線程再將進(jìn)程信息發(fā)送給監(jiān)控設(shè)備,監(jiān)控設(shè)備將進(jìn)程信息記錄在相應(yīng)的日志中。圖5為本發(fā)明實(shí)施例提供的進(jìn)程監(jiān)控裝置結(jié)構(gòu)示意圖。如圖5所示,本實(shí)施例提供的進(jìn)程監(jiān)控裝置具體可以實(shí)現(xiàn)本發(fā)明任意實(shí)施例提供的進(jìn)程監(jiān)控方法的各個(gè)流程,此不再贅述。本實(shí)施例提供的進(jìn)程監(jiān)控裝置具體包括監(jiān)控單元11和進(jìn)程信息處理單元12。監(jiān)控單元11用于為被監(jiān)控進(jìn)程分配監(jiān)控線程,若所述監(jiān)控線程獲知系統(tǒng)資源不足,則向所述被監(jiān)控進(jìn)程的隊(duì)列發(fā)送異步通知信息,以使所述被監(jiān)控進(jìn)程當(dāng)檢測(cè)到所述隊(duì)列中存在所述異步通知信息時(shí),發(fā)送處理請(qǐng)求,其中,所述處理請(qǐng)求中攜帶有所述異步通知信息。進(jìn)程信息處理單元12用于根據(jù)所述處理請(qǐng)求,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程。監(jiān)控單元11和進(jìn)程信息處理單元12可由運(yùn)行操作系統(tǒng)的中央處理器來(lái)實(shí)現(xiàn)。本實(shí)施例提供的進(jìn)程監(jiān)控裝置,監(jiān)控單元11為被監(jiān)控進(jìn)程分配監(jiān)控線程,若監(jiān)控線程獲知系統(tǒng)資源不足,則向被監(jiān)控進(jìn)程的隊(duì)列發(fā)送異步通知信息,以使被監(jiān)控進(jìn)程當(dāng)檢測(cè)到隊(duì)列中存在異步通知信息時(shí),發(fā)送處理請(qǐng)求,進(jìn)程信息處理單元12根據(jù)處理請(qǐng)求,調(diào)用異步通知信息對(duì)應(yīng)的處理函數(shù)獲取進(jìn)程的進(jìn)程信息,將進(jìn)程信息發(fā)送給監(jiān)控線程。基于操作系統(tǒng)的異步事件處理機(jī)制,當(dāng)系統(tǒng)資源不足時(shí),監(jiān)控線程就會(huì)向被監(jiān)控進(jìn)程發(fā)送異步通知消息,這樣在處理異步通知消息的過(guò)程中就可以獲取進(jìn)程信息。進(jìn)程信息的獲取過(guò)程沒(méi)有對(duì)被監(jiān)控進(jìn)程的正常運(yùn)行造成任何干擾,可以對(duì)根據(jù)進(jìn)程信息對(duì)被監(jiān)控進(jìn)程的運(yùn)行情況進(jìn)行分析,以及時(shí)維護(hù)。當(dāng)進(jìn)程異常終止時(shí),進(jìn)程信息包括了在系統(tǒng)風(fēng)險(xiǎn)過(guò)程中該被監(jiān)控進(jìn)程的狀態(tài),為調(diào)試和恢復(fù)過(guò)程提供了充分的依據(jù),提高了系統(tǒng)分析的可靠性。在本實(shí)施例中,所述監(jiān)控單元11還可以用于所述監(jiān)控線程對(duì)所述異步通知信息進(jìn)行注冊(cè),以使所述異步通知信息與所述處理函數(shù)相對(duì)應(yīng)。異步通知信息可以為自定義信息,通過(guò)將異步通知信息注冊(cè),將該異步通知信息與處理函數(shù)相對(duì)應(yīng)。
在本實(shí)施例中,所述監(jiān)控單元11還可以用于接收監(jiān)控設(shè)備發(fā)送的攜帶有進(jìn)程標(biāo)識(shí)的監(jiān)控請(qǐng)求,根據(jù)所述進(jìn)程標(biāo)識(shí)確定所述被監(jiān)控進(jìn)程。通過(guò)根據(jù)檢測(cè)設(shè)備的指示對(duì)相應(yīng)的進(jìn)程進(jìn)行監(jiān)控,可以提高進(jìn)程監(jiān)控的針對(duì)性。在本實(shí)施例中,所述監(jiān)控單元11還可以用于向所述監(jiān)控設(shè)備發(fā)送風(fēng)險(xiǎn)通知消息,以使所述監(jiān)控設(shè)備根據(jù)所述風(fēng)險(xiǎn)通知消息建立日志;相應(yīng)地,所述進(jìn)程監(jiān)控裝置還包括信息發(fā)送單元,信息發(fā)送單元用于所述監(jiān)控線程將所述進(jìn)程信息發(fā)送給所述監(jiān)控設(shè)備,以使所述監(jiān)控設(shè)備將所述進(jìn)程信息記錄到所述日志中。通過(guò)日志的設(shè)置,可以被監(jiān)控進(jìn)程的進(jìn)程信息進(jìn)行記錄,為用戶(hù)后續(xù)分析和調(diào)試提供基礎(chǔ)。在本實(shí)施例中,操作系統(tǒng)為Unix/Linux,所述異步通知信息為信號(hào)或異步事件;相應(yīng)地,所述進(jìn)程信息處理單元12還可以用于通過(guò)所述內(nèi)核線程對(duì)所述被監(jiān)控進(jìn)程發(fā)送的所述處理請(qǐng)求進(jìn)行處理,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述監(jiān)控線程掛起,將所述進(jìn)程信息寫(xiě)入/proc文件系統(tǒng)后,恢復(fù)所述監(jiān)控線程,以使所述監(jiān)控線程從所述/proc文件系統(tǒng)中讀取所述進(jìn)程信息。在本實(shí)施例中,操作系統(tǒng)為Windows,所述異步通知信息為用戶(hù)異步過(guò)程調(diào)用請(qǐng) 求;相應(yīng)地,所述進(jìn)程信息處理單元12還可以用于通過(guò)驅(qū)動(dòng)程序?qū)λ霰槐O(jiān)控進(jìn)程發(fā)送的所述處理請(qǐng)求進(jìn)行處理,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程。在本實(shí)施例中,操作系統(tǒng)為Windows,所述異步通知信息為內(nèi)核異步過(guò)程調(diào)用請(qǐng)求;相應(yīng)地,所述監(jiān)控單元11還可以用于若所述監(jiān)控線程獲知系統(tǒng)資源不足,則生成攜帶有所述內(nèi)核異步過(guò)程調(diào)用請(qǐng)求的異步請(qǐng)求信息并發(fā)送給驅(qū)動(dòng)程序,以使所述驅(qū)動(dòng)程序根據(jù)所述異步請(qǐng)求信息將所述被監(jiān)控進(jìn)程的隊(duì)列掛入所述內(nèi)核異步過(guò)程調(diào)用請(qǐng)求。所述進(jìn)程信息處理單元12還可以用于通過(guò)所述驅(qū)動(dòng)程序?qū)λ霰槐O(jiān)控進(jìn)程發(fā)送的所述處理請(qǐng)求進(jìn)行處理,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程。本發(fā)明實(shí)施例提供的進(jìn)程監(jiān)控方法及裝置,當(dāng)系統(tǒng)資源分配存在風(fēng)險(xiǎn)的時(shí)候,用戶(hù)空間的監(jiān)控線程就會(huì)定時(shí)發(fā)送異步通知信息,這樣就能定時(shí)執(zhí)行異步通知信息對(duì)應(yīng)的處理函數(shù),從而定時(shí)獲取被監(jiān)控的關(guān)鍵進(jìn)程的信息。這樣當(dāng)被監(jiān)控進(jìn)程確實(shí)因此而終止,管理員或調(diào)試人員就可以獲得整個(gè)風(fēng)險(xiǎn)過(guò)程中多份進(jìn)程狀態(tài)信息,獲得了更多的調(diào)試或跟蹤信息。而且在此過(guò)程中,被監(jiān)控進(jìn)程的正常運(yùn)行不應(yīng)該被打擾的。在本技術(shù)方案中,通過(guò)操作系統(tǒng)自己的異步事件處理機(jī)制實(shí)現(xiàn)了獲取進(jìn)程信息的功能。這一方面只是在被監(jiān)控進(jìn)程的異步事件處理過(guò)程中增加了一個(gè)待處理的異步通知信息,因此不影響被監(jiān)控進(jìn)程的整個(gè)流程。另一方面,由于監(jiān)控過(guò)程均在用戶(hù)空間的Monitor模塊完成的,因此對(duì)正處在資源進(jìn)展情況下的系統(tǒng)來(lái)說(shuō),也大大減少了運(yùn)行的壓力。同時(shí)通過(guò)監(jiān)控線程將被監(jiān)控進(jìn)程的集成信息發(fā)送給系統(tǒng)管理軟件或監(jiān)控設(shè)備可以避免主機(jī)運(yùn)行崩潰時(shí)的信息丟失,同時(shí)也方便管理員和調(diào)試人員的遠(yuǎn)程診斷。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括R0M、RAM、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
最后應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范
圍。·
權(quán)利要求
1.一種進(jìn)程監(jiān)控方法,其特征在于,包括 為被監(jiān)控進(jìn)程分配監(jiān)控線程,若所述監(jiān)控線程獲知系統(tǒng)資源不足,則向所述被監(jiān)控進(jìn)程的隊(duì)列發(fā)送異步通知信息,以使所述被監(jiān)控進(jìn)程當(dāng)檢測(cè)到所述隊(duì)列中存在所述異步通知信息時(shí),發(fā)送處理請(qǐng)求,其中,所述處理請(qǐng)求中攜帶有所述異步通知信息; 根據(jù)所述處理請(qǐng)求,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程。
2.根據(jù)權(quán)利要求I所述的進(jìn)程監(jiān)控方法,其特征在于,為被監(jiān)控進(jìn)程分配監(jiān)控線程之后,還包括 所述監(jiān)控線程對(duì)所述異步通知信息進(jìn)行注冊(cè),以使所述異步通知信息與所述處理函數(shù)相對(duì)應(yīng)。
3.根據(jù)權(quán)利要求I或2所述的進(jìn)程監(jiān)控方法,其特征在于,為被監(jiān)控進(jìn)程分配監(jiān)控線程,包括 接收監(jiān)控設(shè)備發(fā)送的攜帶有進(jìn)程標(biāo)識(shí)的監(jiān)控請(qǐng)求,根據(jù)所述進(jìn)程標(biāo)識(shí)確定所述被監(jiān)控進(jìn)程。
4.根據(jù)權(quán)利要求3所述的進(jìn)程監(jiān)控方法,其特征在于,若所述監(jiān)控線程獲知系統(tǒng)資源不足之后,還包括 向所述監(jiān)控設(shè)備發(fā)送風(fēng)險(xiǎn)通知消息,以使所述監(jiān)控設(shè)備根據(jù)所述風(fēng)險(xiǎn)通知消息建立日志;相應(yīng)地, 將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程之后,還包括 所述監(jiān)控線程將所述進(jìn)程信息發(fā)送給所述監(jiān)控設(shè)備,以使所述監(jiān)控設(shè)備將所述進(jìn)程信息記錄到所述日志中。
5.根據(jù)權(quán)利要求I所述的進(jìn)程監(jiān)控方法,其特征在于,所述被監(jiān)控進(jìn)程當(dāng)檢測(cè)到所述異步通知信息時(shí),發(fā)送處理請(qǐng)求,包括 所述被監(jiān)控進(jìn)程執(zhí)行應(yīng)用程序過(guò)程中調(diào)用系統(tǒng)函數(shù),系統(tǒng)函數(shù)執(zhí)行完畢后,檢測(cè)是否存在所述異步通知信息,當(dāng)檢測(cè)到所述異步通知信息時(shí),發(fā)送所述處理請(qǐng)求。
6.根據(jù)權(quán)利要求I所述的進(jìn)程監(jiān)控方法,其特征在于所述異步通知信息為信號(hào)或異步事件;相應(yīng)地, 根據(jù)所述處理請(qǐng)求,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程,包括 通過(guò)所述內(nèi)核線程對(duì)所述被監(jiān)控進(jìn)程發(fā)送的所述處理請(qǐng)求進(jìn)行處理,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述監(jiān)控線程掛起,將所述進(jìn)程信息寫(xiě)入/proc文件系統(tǒng)后,恢復(fù)所述監(jiān)控線程,以使所述監(jiān)控線程從所述/proc文件系統(tǒng)中讀取所述進(jìn)程信息。
7.根據(jù)權(quán)利要求I所述的進(jìn)程監(jiān)控方法,其特征在于所述異步通知信息為用戶(hù)異步過(guò)程調(diào)用請(qǐng)求;相應(yīng)地, 根據(jù)所述處理請(qǐng)求,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程,包括 通過(guò)驅(qū)動(dòng)程序?qū)λ霰槐O(jiān)控進(jìn)程發(fā)送的所述處理請(qǐng)求進(jìn)行處理,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程。
8.根據(jù)權(quán)利要求I所述的進(jìn)程監(jiān)控方法,其特征在于所述異步通知信息為內(nèi)核異步過(guò)程調(diào)用請(qǐng)求;相應(yīng)地, 若所述監(jiān)控線程獲知系統(tǒng)資源不足,則向所述被監(jiān)控進(jìn)程發(fā)送異步通知信息,包括 若所述監(jiān)控線程獲知系統(tǒng)資源不足,則生成攜帶有所述內(nèi)核異步過(guò)程調(diào)用請(qǐng)求的異步請(qǐng)求信息并發(fā)送給驅(qū)動(dòng)程序,以使所述驅(qū)動(dòng)程序根據(jù)所述異步請(qǐng)求信息將所述被監(jiān)控進(jìn)程的隊(duì)列掛入所述內(nèi)核異步過(guò)程調(diào)用請(qǐng)求; 根據(jù)所述處理請(qǐng)求,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程,包括 通過(guò)所述驅(qū)動(dòng)程序?qū)λ霰槐O(jiān)控進(jìn)程發(fā)送的所述處理請(qǐng)求進(jìn)行處理,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程。
9.一種進(jìn)程監(jiān)控裝置,其特征在于,包括 監(jiān)控單元,用于為被監(jiān)控進(jìn)程分配監(jiān)控線程,若所述監(jiān)控線程獲知系統(tǒng)資源不足,則向所述被監(jiān)控進(jìn)程的隊(duì)列發(fā)送異步通知信息,以使所述被監(jiān)控進(jìn)程當(dāng)檢測(cè)到所述隊(duì)列中存在所述異步通知信息時(shí),發(fā)送處理請(qǐng)求,其中,所述處理請(qǐng)求中攜帶有所述異步通知信息; 進(jìn)程信息處理單元,用于根據(jù)所述處理請(qǐng)求,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程。
10.根據(jù)權(quán)利要求9所述的進(jìn)程監(jiān)控裝置,其特征在于所述監(jiān)控單元還用于所述監(jiān)控線程對(duì)所述異步通知信息進(jìn)行注冊(cè),以使所述異步通知信息與所述處理函數(shù)相對(duì)應(yīng)。
11.根據(jù)權(quán)利要求9或10所述的進(jìn)程監(jiān)控裝置,其特征在于所述監(jiān)控單元還用于接收監(jiān)控設(shè)備發(fā)送的攜帶有進(jìn)程標(biāo)識(shí)的監(jiān)控請(qǐng)求,根據(jù)所述進(jìn)程標(biāo)識(shí)確定所述被監(jiān)控進(jìn)程。
12.根據(jù)權(quán)利要求11所述的進(jìn)程監(jiān)控裝置,其特征在于 所述監(jiān)控單元還用于向所述監(jiān)控設(shè)備發(fā)送風(fēng)險(xiǎn)通知消息,以使所述監(jiān)控設(shè)備根據(jù)所述風(fēng)險(xiǎn)通知消息建立日志;相應(yīng)地, 所述進(jìn)程監(jiān)控裝置還包括 信息發(fā)送單元,用于所述監(jiān)控線程將所述進(jìn)程信息發(fā)送給所述監(jiān)控設(shè)備,以使所述監(jiān)控設(shè)備將所述進(jìn)程信息記錄到所述日志中。
13.根據(jù)權(quán)利要求9所述的進(jìn)程監(jiān)控裝置,其特征在于所述異步通知信息為信號(hào)或異步事件;相應(yīng)地, 所述進(jìn)程信息處理單元還用于通過(guò)所述內(nèi)核線程對(duì)所述被監(jiān)控進(jìn)程發(fā)送的所述處理請(qǐng)求進(jìn)行處理,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述監(jiān)控線程掛起,將所述進(jìn)程信息寫(xiě)入/proc文件系統(tǒng)后,恢復(fù)所述監(jiān)控線程,以使所述監(jiān)控線程從所述/proc文件系統(tǒng)中讀取所述進(jìn)程信息。
14.根據(jù)權(quán)利要求9所述的進(jìn)程監(jiān)控裝置,其特征在于所述異步通知信息為用戶(hù)異步過(guò)程調(diào)用請(qǐng)求;相應(yīng)地, 所述進(jìn)程信息處理單元還用于通過(guò)驅(qū)動(dòng)程序?qū)λ霰槐O(jiān)控進(jìn)程發(fā)送的所述處理請(qǐng)求進(jìn)行處理,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程。
15.根據(jù)權(quán)利要求9所述的進(jìn)程監(jiān)控裝置,其特征在于所述異步通知信息為內(nèi)核異步過(guò)程調(diào)用請(qǐng)求;相應(yīng)地, 所述監(jiān)控單元還用于若所述監(jiān)控線程獲知系統(tǒng)資源不足,則生成攜帶有所述內(nèi)核異步過(guò)程調(diào)用請(qǐng)求的異步請(qǐng)求信息并發(fā)送給驅(qū)動(dòng)程序,以使所述驅(qū)動(dòng)程序根據(jù)所述異步請(qǐng)求信息將所述被監(jiān)控進(jìn)程的隊(duì)列掛入所述內(nèi)核異步過(guò)程調(diào)用請(qǐng)求; 所述進(jìn)程信息處理單元還用于通過(guò)所述驅(qū)動(dòng)程序?qū)λ霰槐O(jiān)控進(jìn)程發(fā)送的所述處理請(qǐng)求進(jìn)行處理,調(diào)用所述異步通知信息對(duì)應(yīng)的處理函數(shù)獲取所述被監(jiān)控進(jìn)程的進(jìn)程信息,將所述進(jìn)程信息發(fā)送給所述監(jiān)控線程。
全文摘要
本發(fā)明實(shí)施例提供一種進(jìn)程監(jiān)控方法及裝置,該進(jìn)程監(jiān)控方法包括為被監(jiān)控進(jìn)程分配監(jiān)控線程,若監(jiān)控線程獲知系統(tǒng)資源不足,則向被監(jiān)控進(jìn)程的隊(duì)列發(fā)送異步通知信息,以使被監(jiān)控進(jìn)程當(dāng)檢測(cè)到隊(duì)列中存在異步通知信息時(shí),發(fā)送處理請(qǐng)求,其中,處理請(qǐng)求中攜帶有異步通知信息;根據(jù)處理請(qǐng)求,調(diào)用異步通知信息對(duì)應(yīng)的處理函數(shù)獲取被監(jiān)控進(jìn)程的進(jìn)程信息,將進(jìn)程信息發(fā)送給監(jiān)控線程。本發(fā)明實(shí)施例提供的進(jìn)程監(jiān)控方法及裝置,實(shí)現(xiàn)了在被監(jiān)控進(jìn)程正常運(yùn)行過(guò)程中獲取進(jìn)程信息,為調(diào)試和恢復(fù)過(guò)程提供了充分的依據(jù),提高了系統(tǒng)分析的可靠性。
文檔編號(hào)G06F11/30GK102722431SQ20121012381
公開(kāi)日2012年10月10日 申請(qǐng)日期2012年4月25日 優(yōu)先權(quán)日2012年4月25日
發(fā)明者褚力行 申請(qǐng)人:華為技術(shù)有限公司