一種軟件運行狀態(tài)監(jiān)控方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種軟件運行狀態(tài)監(jiān)控方法及裝置,其中方法包括:賦予計數(shù)器初值;啟動所述計數(shù)器從所述初值開始計數(shù);接收被測程序提交的計數(shù)器初始化請求,將所述計數(shù)器計數(shù)值初始化得到所述初值;定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求;若是,執(zhí)行預(yù)設(shè)的處理策略。采用本發(fā)明可以實現(xiàn)用軟件模擬硬件看門狗計數(shù)器電路來監(jiān)控系統(tǒng)的運行狀態(tài),比傳統(tǒng)的硬件看門狗計數(shù)器電路監(jiān)控系統(tǒng)運行狀態(tài)更具通用性并節(jié)約了硬件成本。
【專利說明】一種軟件運行狀態(tài)監(jiān)控方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機安全【技術(shù)領(lǐng)域】,尤其涉及一種軟件運行狀態(tài)監(jiān)控方法及裝置。
【背景技術(shù)】
[0002]在微型計算機系統(tǒng)中,其工作常常會受到外界電磁場的干擾,造成程序跑飛而陷入死循環(huán),此時,導(dǎo)致系統(tǒng)無法正常運行,影響產(chǎn)品的可靠性??撮T狗是一種監(jiān)控系統(tǒng)運行狀態(tài)的方法,傳統(tǒng)的看門狗通過設(shè)計一個硬件計時器電路來監(jiān)控主程序的運行,例如,看門狗芯片和單片機的一個l/0(lnput/0utput,輸入輸出接口)引腳相連,該引腳通過程序控制定時地向這個引腳輸入高電平對看門狗計時器清零,當(dāng)程序進入死循環(huán)狀態(tài),看門狗電路得不到單片機發(fā)送的置位信號時,計時器溢出引起看門狗中斷產(chǎn)生一個不可屏蔽的復(fù)位信號令系統(tǒng)復(fù)位。傳統(tǒng)的硬件看門狗需要一定的硬件成本,并且不同的硬件產(chǎn)品需要調(diào)試不同的硬件看門狗電路,不具有通用性。
【發(fā)明內(nèi)容】
[0003]為了克服現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種軟件運行狀態(tài)監(jiān)控方法及裝置用于通過軟件模擬硬件看門狗計數(shù)器電路來監(jiān)控系統(tǒng)的運行狀態(tài)。
[0004]第一方面,本發(fā)明提供一種軟件運行狀態(tài)監(jiān)控方法,該方法包括:
[0005]賦予計數(shù)器初值;
[0006]啟動所述計數(shù)器從所述初值開始計數(shù);
[0007]接收被測程序提交的計數(shù)器初始化請求,將所述計數(shù)器計數(shù)值初始化得到所述初值;
[0008]定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求;
[0009]若是,執(zhí)行預(yù)設(shè)的處理策略。
[0010]另一方面,本發(fā)明提供一種用于實現(xiàn)軟件運行狀態(tài)監(jiān)控的裝置,所述裝置包括:
[0011]賦值模塊,賦予計數(shù)器初值;
[0012]計數(shù)模塊,用于啟動計數(shù)器從所述初值開始計數(shù);
[0013]初始化模塊,用于接收被測程序提交的計數(shù)器初始化請求,將所述計數(shù)器計數(shù)值初始化得到所述初值;
[0014]檢測模塊,用于定時檢測所述計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求;
[0015]處理模塊,用于在檢測到所述計數(shù)器計數(shù)值符合預(yù)設(shè)門限值要求時,執(zhí)行預(yù)設(shè)的處理策略。
[0016]本發(fā)明中軟件運行狀態(tài)監(jiān)控進程通過啟動計數(shù)器從初值開始計數(shù)得到計數(shù)器計數(shù)值,在計數(shù)過程中接收到計數(shù)器初始化請求時將計數(shù)器計數(shù)值初始化并定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求,若是,執(zhí)行預(yù)設(shè)的處理策略來實現(xiàn)通過軟件模擬硬件看門狗計數(shù)器電路來監(jiān)控系統(tǒng)的運行狀態(tài),比傳統(tǒng)的硬件看門狗計數(shù)器電路監(jiān)控系統(tǒng)運行狀態(tài)更具通用性并節(jié)約了硬件成本。
【專利附圖】
【附圖說明】
[0017]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0018]圖1是本發(fā)明提供的一種軟件運行狀態(tài)監(jiān)控方法的流程圖;
[0019]圖2是本發(fā)明提供的另一種軟件運行狀態(tài)監(jiān)控方法的流程圖;
[0020]圖3是本發(fā)明提供的另一種軟件運行狀態(tài)監(jiān)控方法的流程圖;
[0021]圖4是本發(fā)明提供的一種實現(xiàn)軟件運行狀態(tài)監(jiān)控的裝置結(jié)構(gòu)圖。
【具體實施方式】
[0022]為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明進行詳細(xì)的介紹,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0023]本發(fā)明實施例中提及的軟件運行狀態(tài)監(jiān)控方法通常被稱作看門狗,用于監(jiān)控系統(tǒng)的運行狀態(tài),當(dāng)系統(tǒng)運行狀態(tài)不滿足正常情況時,如:程序跑飛陷入死循環(huán)或者硬件故障使得系統(tǒng)進入停滯狀態(tài),看門狗就觸發(fā)預(yù)設(shè)的動作(如報警彈窗、系統(tǒng)復(fù)位等)。
[0024]本發(fā)明實施例中所提及的被測程序根據(jù)用戶需要可以是任何一個程序,例如用C語言實現(xiàn)的關(guān)鍵字查找程序、用VHDL(Verilog Hardware Descript1n Language,硬件描述語言)實現(xiàn)的跑馬燈程序、用匯編語言實現(xiàn)的秒表程序等等。
[0025]圖1是本發(fā)明提供的一種軟件運行狀態(tài)監(jiān)控方法的流程圖,如圖所示的軟件運行狀態(tài)監(jiān)控方法可以包括以下步驟:
[0026]S101,賦予計數(shù)器初值。
[0027]具體實現(xiàn)中,在被測程序需要監(jiān)控時啟動軟件運行狀態(tài)監(jiān)控進程,軟件運行狀態(tài)監(jiān)控進程用于監(jiān)控被測程序。在啟動被測程序之后啟動軟件運行狀態(tài)監(jiān)控進程,軟件運行狀態(tài)監(jiān)控進程在啟動之后則對其內(nèi)部計時器賦予初值,如初值為0或者100。還需要說明的是,所述軟件運行狀態(tài)監(jiān)控進程的優(yōu)先級的設(shè)置低于被測程序以不影響被測程序的正常運行,例如:在計算機終端運行所述軟件運行狀態(tài)監(jiān)控進程和所述被測程序,設(shè)置所述軟件運行狀態(tài)監(jiān)控進程的優(yōu)先級可以通過進入任務(wù)管理器,在進程選項里選擇所述軟件運行狀態(tài)監(jiān)控進程并右鍵,在右鍵出現(xiàn)的選項選擇設(shè)置優(yōu)先級,然后根據(jù)所述被測程序的優(yōu)先級設(shè)置所述軟件運行狀態(tài)監(jiān)控進程的優(yōu)先級來實現(xiàn)。
[0028]S102,啟動所述計數(shù)器從所述初值開始計數(shù)。
[0029]具體實現(xiàn)中,計數(shù)器的計數(shù)方式包括兩種,一種為單調(diào)遞增的方式(如逐次加一,逐次加二等方式),另一種為單調(diào)遞減的方式(如逐次減一、逐次減二等方式)。例如軟件運行狀態(tài)監(jiān)控進程啟動所述計數(shù)器根據(jù)CPU (Central Processing Unit,中央處理器)時鐘頻率或者設(shè)置的時間周期進行逐次加一方式計數(shù),若計數(shù)器采用根據(jù)CPU時鐘頻率逐次加一方式計數(shù)且CPU時鐘頻率為50MHz時,計數(shù)器從初值開始以每20ns執(zhí)行一次加一操作的方式逐次獲取每個計數(shù)值;若計數(shù)器采用根據(jù)設(shè)置的時間周期逐次加一方式計數(shù)且所設(shè)置的時間周期為ls,計數(shù)器從初值開始以每Is執(zhí)行一次加一操作的方式逐次獲取每個計數(shù)值;若初值為O,隨著每次計數(shù)進行加一操作計數(shù)值將逐次變?yōu)?、2、3等等,并在計數(shù)的過程中等待執(zhí)行步驟S103。
[0030]S103,接收被測程序提交的計數(shù)器初始化請求,將所述計數(shù)器計數(shù)值初始化得到所述初值。
[0031]具體實現(xiàn)中,計數(shù)器初始化請求分散放置于被測程序內(nèi)部,并且保證在被測程序正常運行情況下相鄰的計數(shù)器初始化請求之間程序的運行時間要小于軟件運行狀態(tài)監(jiān)控進程中計數(shù)器從初值計數(shù)到達(dá)預(yù)設(shè)門限值的時間,以防在被測程序正常運行情況下引發(fā)軟件運行狀態(tài)監(jiān)控進程進入中斷服務(wù)程序。軟件運行狀態(tài)監(jiān)控進程自計數(shù)器啟動計數(shù)后開始等待被測程序提交的計數(shù)器初始化請求,接收到被測程序提交的計數(shù)器初始化請求時,將計數(shù)器計數(shù)值初始化得到初值,計數(shù)器從所述初值開始繼續(xù)以預(yù)定的計數(shù)方式計數(shù)。
[0032]S104,定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求。
[0033]具體實現(xiàn)中,在啟動計數(shù)器根據(jù)預(yù)定計數(shù)方式計數(shù)后,定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求,例如若計數(shù)器采用逐次加一的方式計數(shù),每當(dāng)計數(shù)值進行一次加一操作后都相應(yīng)的進行一次檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求或每當(dāng)所述計數(shù)值進行兩次加一操作后都相應(yīng)的進行一次檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求??蛇x的,若計數(shù)器采用單調(diào)遞增的方式計數(shù),所述定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求為定時檢測計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值;若計數(shù)器采用單調(diào)遞減的方式計數(shù),所述定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求為定時檢測計數(shù)器計數(shù)值是否小于預(yù)設(shè)門限值。
[0034]S105,若是,執(zhí)行預(yù)設(shè)的處理策略。
[0035]具體實現(xiàn)中,在檢測到計數(shù)器計數(shù)值符合預(yù)設(shè)門限值要求時,軟件運行狀態(tài)監(jiān)控進程進入中斷服務(wù)程序執(zhí)行預(yù)設(shè)的處理策略。所述預(yù)設(shè)的處理策略包括但不限于:觸發(fā)預(yù)警動作、保存系統(tǒng)運行狀態(tài)或者觸發(fā)系統(tǒng)復(fù)位操作。其中,所述預(yù)警動作包括彈窗警告、聲音報警等可提示用戶所述被測程序運行狀態(tài)不滿足正常情況的提示動作。所述保存系統(tǒng)運行狀態(tài)為所述被測程序所在的系統(tǒng)具有外設(shè)時可在外設(shè)中寫入系統(tǒng)及被測程序的當(dāng)前的運行狀態(tài),例如,被測程序為在Windows-XP系統(tǒng)下運行著暴風(fēng)影音,軟件運行狀態(tài)監(jiān)控進程在某一時間檢測到計數(shù)器計數(shù)值大于預(yù)設(shè)門限值,此時軟件運行狀態(tài)監(jiān)控進程進入中斷服務(wù)程序記錄當(dāng)前主機CPU和內(nèi)存的使用率、暴風(fēng)影音播放的視頻的進度或暴風(fēng)影音所損壞的內(nèi)部文件等表征當(dāng)前系統(tǒng)及被測程序運行狀態(tài)的信息并生成日志文件通過連接的打印機打印出來或者保存在所連接的USB設(shè)備中以供用戶后續(xù)進行查詢維護工作。可選的,若否,則所述計數(shù)器從當(dāng)前計數(shù)值開始繼續(xù)按照預(yù)定的計數(shù)方式計數(shù)并等待下一時間間隔的檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求。
[0036]本發(fā)明實例實施例,通過軟件運行狀態(tài)監(jiān)控進程啟動計數(shù)器計數(shù),在計數(shù)過程中接收到計數(shù)器初始化請求時將計數(shù)器計數(shù)值初始化并定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求實現(xiàn)通過軟件來模擬硬件看門狗計數(shù)器電路來監(jiān)控系統(tǒng)的運行狀態(tài),能節(jié)約硬件成本增強看門狗的通用性。
[0037]圖2是本發(fā)明提供的另一種軟件運行狀態(tài)監(jiān)控方法的流程圖,如圖所示的軟件運行狀態(tài)監(jiān)控方法可以包括以下步驟:
[0038]S201,賦予計數(shù)器初值。
[0039]本步驟可參見圖1所示實施例中的步驟S101。
[0040]S202,啟動所述計數(shù)器從所述初值以逐次加一的方式開始計數(shù)。
[0041]在軟件運行狀態(tài)監(jiān)控進程對計數(shù)器賦予初值之后軟件運行狀態(tài)監(jiān)控進程則啟動計數(shù)器開始根據(jù)CPU時鐘頻率或者設(shè)置的時間周期進行逐次加一方式計數(shù),例如當(dāng)計數(shù)器采用根據(jù)設(shè)置的時間周期進行逐次加一方式計數(shù)且所述設(shè)置的時間周期為1S時,計數(shù)器從初值開始以每Is執(zhí)行一次加一操作的方式逐次獲取每個計數(shù)值;若初值為0,則執(zhí)行一次計數(shù)值加一操作計數(shù)值自動加1,因此計數(shù)器計數(shù)值從初值0開始逐次變化為1、2、3等,并在計數(shù)的過程中等待執(zhí)行步驟S203。
[0042]S203,接收被測程序提交的計數(shù)器初始化請求,將所述計數(shù)器計數(shù)值初始化得到所述初值。
[0043]具體實現(xiàn)中,計數(shù)器初始化請求分散放置于被測程序內(nèi)部,并且保證在被測程序正常運行情況下相鄰的計數(shù)器初始化請求之間程序的運行時間要小于軟件運行狀態(tài)監(jiān)控進程中計數(shù)器從初值計數(shù)到達(dá)預(yù)設(shè)門限值的時間,以防在被測程序正常運行情況下引發(fā)軟件運行狀態(tài)監(jiān)控進程進入中斷服務(wù)程序。軟件運行狀態(tài)監(jiān)控進程自計數(shù)器啟動計數(shù)后開始等待被測程序提交的計數(shù)器初始化請求,接受到被測程序提交的計數(shù)器初始化請求時,將計數(shù)器計數(shù)值初始化得到所述初值,所述計數(shù)器從所述初值開始繼續(xù)以逐次加一的方式計數(shù)。
[0044]S204,定時檢測計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值。
[0045]具體實現(xiàn)中,在啟動計數(shù)器根據(jù)預(yù)定的逐次加一計數(shù)方式計數(shù)后,定時檢測計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值要求,例如每當(dāng)所述計數(shù)值進行一次加一操作后都相應(yīng)的進行一次檢測計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值要求或每當(dāng)所述計數(shù)值進行兩次加一操作后都相應(yīng)的進行一次檢測計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值要求,若是,則轉(zhuǎn)向執(zhí)行步驟S205,若否,則所述計數(shù)器從當(dāng)前計數(shù)值開始繼續(xù)以逐次加一的方式進行計數(shù)操作??蛇x的,若所述計數(shù)器采用單調(diào)遞增的方式計數(shù),所述定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求為定時檢測計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值;若所述計數(shù)器采用單調(diào)遞減的方式計數(shù),所述定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求為定時檢測計數(shù)器計數(shù)值是否小于預(yù)設(shè)門限值。
[0046]S205,若是,執(zhí)行預(yù)設(shè)的處理策略。
[0047]具體實現(xiàn)中,在檢測到計數(shù)器計數(shù)值符合預(yù)設(shè)門限值要求時,軟件運行狀態(tài)監(jiān)控進程進入中斷服務(wù)程序執(zhí)行預(yù)設(shè)的處理策略。所述預(yù)設(shè)的處理策略包括但不限于:觸發(fā)預(yù)警動作、保存系統(tǒng)運行狀態(tài)或者觸發(fā)系統(tǒng)復(fù)位操作。其中,所述預(yù)警動作包括彈窗警告、聲音報警等可提示用戶所述被測程序運行狀態(tài)不滿足正常情況的提示動作。所述保存系統(tǒng)運行狀態(tài)為被測程序所在的系統(tǒng)具有外設(shè)時可在外設(shè)中寫入系統(tǒng)及被測程序的當(dāng)前的運行狀態(tài)。例如被測程序為在Windows-XP系統(tǒng)下運行著暴風(fēng)影音,在暴風(fēng)影音運行過程中由于內(nèi)部程序文件損壞或者系統(tǒng)運行內(nèi)存不足等原因而使其沒有響應(yīng),此時軟件運行狀態(tài)監(jiān)控進程接收不到暴風(fēng)影音提交的計數(shù)器初始化請求,不能進行步驟S203,計數(shù)器在持續(xù)計數(shù)的過程中將會大于預(yù)設(shè)門限值,步驟S204將會在某一時間檢測到計數(shù)器計數(shù)值大于預(yù)設(shè)門限值,此時軟件運行狀態(tài)監(jiān)控進程進入中斷服務(wù)程序記錄當(dāng)前主機CPU和內(nèi)存的使用率、暴風(fēng)影音播放的視頻的進度或暴風(fēng)影音所損壞的內(nèi)部文件等表征當(dāng)前系統(tǒng)及被測程序運行狀態(tài)的信息并生成日志文件通過連接的打印機打印出來或者保存在所連接的USB設(shè)備中以供用戶后續(xù)進行查詢維護工作??蛇x的,若否,則所述計數(shù)器從當(dāng)前計數(shù)值開始繼續(xù)按照預(yù)定的計數(shù)方式計數(shù)等待下一時間間隔的檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求。
[0048]本發(fā)明實施例描述的是一種軟件運行狀態(tài)監(jiān)控方法,將計數(shù)器初始化請求分散到被測程序中,賦予計數(shù)器初值并且開始以逐次加一的方式計數(shù),當(dāng)被測程序運行正常時會到達(dá)計數(shù)器初始化請求處從而向軟件運行狀態(tài)監(jiān)控進程提出計數(shù)器初始化請求,軟件運行狀態(tài)監(jiān)控進程根據(jù)被測程序提交的計數(shù)器初始化請求將計數(shù)器初始化得到初值,計數(shù)器將從初值開始繼續(xù)進行計數(shù),并進行定時檢測計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值步驟;而當(dāng)被測程序跑飛陷入死循環(huán)沒有響應(yīng)的時候,被測程序不能到達(dá)計數(shù)器初始化請求處而使得軟件運行狀態(tài)監(jiān)控進程不能進行計數(shù)器初始化操作,計數(shù)器在持續(xù)計數(shù)的過程中,軟件運行狀態(tài)監(jiān)控進程在某一時刻將會檢測到計數(shù)器計數(shù)值大于預(yù)設(shè)門限值從而引發(fā)軟件運行狀態(tài)監(jiān)控進程進入中斷服務(wù)程序執(zhí)行預(yù)設(shè)處理策略。通過本方法可以實現(xiàn)通過軟件模擬硬件看門狗計數(shù)電路來監(jiān)控被測程序的運行狀態(tài),比傳統(tǒng)的硬件看門狗計數(shù)器電路監(jiān)控系統(tǒng)運行狀態(tài)更具通用性并節(jié)約了硬件成本。
[0049]圖3是本發(fā)明提供的另一種軟件運行狀態(tài)監(jiān)控方法的流程圖,如圖所示的軟件運行狀態(tài)監(jiān)控方法可以包括以下步驟:
[0050]S301,被測程序需要監(jiān)控時啟動軟件運行狀態(tài)監(jiān)控進程。
[0051]本實施例中要實現(xiàn)對被測程序運行狀態(tài)的監(jiān)控首先需要啟動軟件運行狀態(tài)監(jiān)控進程,所述軟件運行狀態(tài)監(jiān)控進程用于監(jiān)控被測程序。在啟動被測程序之后啟動軟件運行狀態(tài)監(jiān)控進程。
[0052]S302,賦予計數(shù)器初值。
[0053]本步驟可參見圖1所示實施例中的步驟S101。
[0054]S303,所述軟件運行狀態(tài)監(jiān)控進程啟動所述計數(shù)器從所述初值以逐次加一的方式開始計數(shù)。
[0055]在軟件運行狀態(tài)監(jiān)控進程對計數(shù)器賦予初值之后軟件運行狀態(tài)監(jiān)控進程則啟動計數(shù)器開始根據(jù)CPU時鐘頻率或者設(shè)置的時間周期進行逐次加一方式計數(shù),例如當(dāng)計數(shù)器采用根據(jù)設(shè)置的時間周期進行逐次加一方式計數(shù)且所述設(shè)置的時間周期為IS時,計數(shù)器從初值開始以每Is執(zhí)行一次加一操作的方式獲取每個計數(shù)值;若初值為0,則執(zhí)行一次計數(shù)值加一操作計數(shù)值自動加I,因此計數(shù)器計數(shù)值從初值O開始逐次變化為1、2、3等,并在計數(shù)的過程中等待執(zhí)行步驟S304。
[0056]S304,被測程序向所述軟件運行狀態(tài)監(jiān)控進程發(fā)送計數(shù)器初始化請求。
[0057]具體實現(xiàn)中,計數(shù)器初始化請求分散放置于被測程序內(nèi)部,并且保證在所述被測程序正常運行情況下相鄰的計數(shù)器初始化請求之間程序的運行時間要小于軟件運行狀態(tài)監(jiān)控進程中計數(shù)器從初值計數(shù)到達(dá)預(yù)設(shè)門限值的時間,以防在被測程序正常運行情況下引發(fā)軟件運行狀態(tài)監(jiān)控進程進入中斷服務(wù)程序。軟件運行狀態(tài)監(jiān)控進程自計數(shù)器啟動計數(shù)后開始等待被測程序提交的計數(shù)器初始化請求。
[0058]S305,根據(jù)被測程序提交的計數(shù)器初始化請求,所述軟件運行狀態(tài)監(jiān)控進程將所述計數(shù)器計數(shù)值初始化得到所述初值。
[0059]具體實現(xiàn)中,軟件運行狀態(tài)監(jiān)控進程接收到被測程序提交的計數(shù)器初始化請求時,將計數(shù)器計數(shù)值初始化得到初值,計數(shù)器從初值開始繼續(xù)以預(yù)定的計數(shù)方式計數(shù)。
[0060]S306,所述軟件運行狀態(tài)監(jiān)控進程定時檢測計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值。
[0061]具體實現(xiàn)中,在啟動計數(shù)器以逐次加一計數(shù)方式計數(shù)后,定時檢測計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值要求,例如每當(dāng)計數(shù)器計數(shù)值進行一次加一操作后都相應(yīng)的進行一次檢測計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值要求或每當(dāng)所述計數(shù)值進行兩次加一操作后都相應(yīng)的進行一次檢測計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值要求,若是,則轉(zhuǎn)向執(zhí)行步驟S307,若否,則計數(shù)器從當(dāng)前計數(shù)值開始繼續(xù)以逐次加一的方式進行計數(shù)??蛇x的,若所述計數(shù)器采用單調(diào)遞增的方式計數(shù),所述定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求為定時檢測計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值;若所述計數(shù)器采用單調(diào)遞減的方式計數(shù),所述定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求為定時檢測計數(shù)器計數(shù)值是否小于預(yù)設(shè)門限值。
[0062]S307,若是,執(zhí)行預(yù)設(shè)的處理策略。
[0063]具體實現(xiàn)中,在檢測到計數(shù)器計數(shù)值大于預(yù)設(shè)門限值要求時,軟件運行狀態(tài)監(jiān)控進程進入中斷服務(wù)程序執(zhí)行預(yù)設(shè)的處理策略。所述預(yù)設(shè)的處理策略包括但不限于:觸發(fā)預(yù)警動作、保存系統(tǒng)運行狀態(tài)或者觸發(fā)系統(tǒng)復(fù)位操作。其中,所述預(yù)警動作包括彈窗警告、聲音報警等可提示用戶被測程序運行狀態(tài)不滿足正常情況的提示動作。所述保存系統(tǒng)運行狀態(tài)為所述被測程序所在的系統(tǒng)具有外設(shè)時可在外設(shè)中寫入系統(tǒng)及被測程序的當(dāng)前的運行狀態(tài)。可選的,若否,則所述計數(shù)器從當(dāng)前計數(shù)值開始繼續(xù)按照預(yù)定的計數(shù)方式計數(shù)等待下一時間間隔的檢測計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值要求。
[0064]本發(fā)明實例實施例,通過軟件運行狀態(tài)監(jiān)控進程啟動計數(shù)器計數(shù),在計數(shù)過程中根據(jù)被測程序提交的計數(shù)器初始化請求將計數(shù)器初始化,并定時檢測計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值要求實現(xiàn)通過軟件來模擬硬件看門狗計數(shù)器電路來監(jiān)控系統(tǒng)的運行狀態(tài),能節(jié)約硬件成本增強看門狗的通用性。
[0065]圖4是本發(fā)明提供的一種軟件運行狀態(tài)監(jiān)控裝置結(jié)構(gòu)圖。本實施例中要實現(xiàn)對所述被測程序運行狀態(tài)的監(jiān)控首先需要創(chuàng)建一個軟件運行狀態(tài)監(jiān)控進程,所述軟件運行狀態(tài)監(jiān)控進程即為軟件運行狀態(tài)監(jiān)控裝置,如圖4所示的軟件運行狀態(tài)監(jiān)控裝置100至少可以包括:賦值模塊101,計數(shù)模塊102,初始化模塊103,檢測模塊104,處理模塊105。
[0066]賦值模塊101,賦予計數(shù)器初值。
[0067]具體實現(xiàn)中,要實現(xiàn)對被測程序運行狀態(tài)的監(jiān)控首先需要啟動軟件運行狀態(tài)監(jiān)控進程,所述軟件運行狀態(tài)監(jiān)控進程用于監(jiān)控被測程序。在啟動被測程序之后啟動軟件運行狀態(tài)監(jiān)控進程則軟件運行狀態(tài)監(jiān)控進程賦值模塊對計時器賦予初值,如初值為0或者100。需要說明的是,軟件運行狀態(tài)監(jiān)控進程的優(yōu)先級的設(shè)置低于被測程序以不影響被測程序的正常運行,例如:在計算機終端運行所述軟件運行狀態(tài)監(jiān)控進程和所述被測程序,設(shè)置所述軟件運行狀態(tài)監(jiān)控進程的優(yōu)先級可以通過進入任務(wù)管理器,在進程選項里選擇所述軟件運行狀態(tài)監(jiān)控進程并右鍵,在右鍵出現(xiàn)的選項選擇“設(shè)置優(yōu)先級”,然后根據(jù)所述被測程序的優(yōu)先級設(shè)置所述軟件運行狀態(tài)監(jiān)控進程的優(yōu)先級來實現(xiàn)。
[0068]計數(shù)模塊102,用于啟動所述計數(shù)器從所述初值開始計數(shù)。
[0069]具體實現(xiàn)中,在軟件運行狀態(tài)監(jiān)控進程賦值模塊對所述計數(shù)器賦予所述初值之后軟件運行狀態(tài)監(jiān)控進程計數(shù)模塊則啟動所述計數(shù)器開始計數(shù),計數(shù)器的計數(shù)方式包括兩種,一種為單調(diào)遞增的方式(如使用逐次加一,逐次加二等方式),另一種為單調(diào)遞減的方式(如逐次減一、逐次減二等方式)。在賦值模塊對計數(shù)器賦予初值之后計數(shù)模塊則啟動計數(shù)器開始根據(jù)CPU時鐘頻率或者設(shè)置的時間周期進行逐次加一方式計數(shù),若計數(shù)器采用根據(jù)CPU時鐘頻率逐次加一方式計數(shù)且CPU時鐘頻率為50MHz時,計數(shù)器從初值開始以每20ns執(zhí)行一次加一操作的方式逐次獲取每個計數(shù)值;若計數(shù)器采用根據(jù)設(shè)置的時間周期逐次加一方式計數(shù)且所設(shè)置的時間周期為ls,計數(shù)器從初值開始以每Is執(zhí)行一次加一操作的方式逐次獲取每個計數(shù)值;若初值為0,隨著每次計數(shù)進行加一操作計數(shù)值將逐次變?yōu)?、2、3等等,所述計數(shù)模塊在計數(shù)的過程中等待初始化模塊103將計數(shù)器計數(shù)值初始化。
[0070]初始化模塊103,用于接收被測程序提交的計數(shù)器初始化請求,將所述計數(shù)器計數(shù)值初始化得到所述初值。
[0071]具體實現(xiàn)中,計數(shù)器初始化請求分散放置于被測程序內(nèi)部,并且保證在被測程序正常運行情況下相鄰的計數(shù)器初始化請求之間程序的運行時間要小于軟件運行狀態(tài)監(jiān)控進程中計數(shù)器從初值計數(shù)到達(dá)預(yù)設(shè)門限值的時間,以防在被測程序正常運行情況下引發(fā)軟件運行狀態(tài)監(jiān)控進程進入中斷服務(wù)程序。軟件運行狀態(tài)監(jiān)控進程自計數(shù)器啟動計數(shù)后開始等待被測程序提交的計數(shù)器初始化請求,接收到被測程序提交的計數(shù)器初始化請求時,初始化模塊將所述計數(shù)器計數(shù)值初始化得到初值,計數(shù)器從初值開始繼續(xù)以預(yù)定的計數(shù)方式計數(shù)。
[0072]檢測模塊104,用于定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求。
[0073]具體實現(xiàn)中,在計數(shù)模塊啟動計數(shù)器根據(jù)預(yù)定計數(shù)方式計數(shù)后,所述檢測模塊定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求,例如若所述計數(shù)器采用逐次加一的方式計數(shù),每當(dāng)所述計數(shù)值進行一次加一操作后都相應(yīng)的進行一次檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求或每當(dāng)所述計數(shù)值進行兩次加一操作后都相應(yīng)的進行一次檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求??蛇x的,若計數(shù)器采用單調(diào)遞增的方式計數(shù),所述檢測模塊定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求為檢測模塊定時檢測計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值;若計數(shù)器采用單調(diào)遞減的方式計數(shù),所述檢測模塊定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求為檢測模塊定時檢測計數(shù)器計數(shù)值是否小于預(yù)設(shè)門限值。
[0074]處理模塊105,用于在檢測到所述計數(shù)器計數(shù)值符合預(yù)設(shè)門限值要求時,執(zhí)行預(yù)設(shè)的處理策略。
[0075]具體實現(xiàn)中,在檢測到計數(shù)器計數(shù)值符合預(yù)設(shè)門限值要求時,軟件運行狀態(tài)監(jiān)控進程進入中斷服務(wù)程序執(zhí)行預(yù)設(shè)的處理策略。所述預(yù)設(shè)的處理策略包括但不限于:觸發(fā)預(yù)警動作、保存系統(tǒng)運行狀態(tài)或者觸發(fā)系統(tǒng)復(fù)位操作。其中,所述預(yù)警動作包括彈窗警告、聲音報警等可提示用戶所述被測程序運行狀態(tài)不滿足正常情況的提示動作。所述保存系統(tǒng)運行狀態(tài)為被測程序所在的系統(tǒng)具有外設(shè)時可在外設(shè)中寫入系統(tǒng)及被測程序的當(dāng)前的運行狀態(tài)。例如計數(shù)器采用逐次加一的計數(shù)方式計數(shù),被測程序為在Windows-XP系統(tǒng)下運行著暴風(fēng)影音,在暴風(fēng)影音運行過程中由于內(nèi)部程序文件損壞或者系統(tǒng)運行內(nèi)存不足等原因而使其沒有響應(yīng),此時軟件運行狀態(tài)監(jiān)控進程接收不到暴風(fēng)影音提交的計數(shù)器初始化請求,計數(shù)器計數(shù)值在持續(xù)計數(shù)的過程中將會大于預(yù)設(shè)門限值,檢測模塊將會在某一時間檢測到計數(shù)器計數(shù)值大于預(yù)設(shè)門限值,此時軟件運行狀態(tài)監(jiān)控進程進入中斷服務(wù)程序記錄當(dāng)前主機CPU和內(nèi)存的使用率、暴風(fēng)影音播放的視頻的進度或暴風(fēng)影音所損壞的內(nèi)部文件等表征當(dāng)前系統(tǒng)及被測程序運行狀態(tài)的信息并生成日志文件通過連接的打印機打印出來或者保存在所連接的USB設(shè)備中以供用戶后續(xù)進行查詢維護工作。可選的,若否,則所述計數(shù)器從當(dāng)前計數(shù)值開始繼續(xù)按照預(yù)定的計數(shù)方式計數(shù)等待下一時間間隔的檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求。
[0076]可見通過圖4的實現(xiàn)軟件運行狀態(tài)監(jiān)控的裝置100,可實現(xiàn)通過軟件模擬硬件看門狗計數(shù)器電路來監(jiān)控系統(tǒng)的運行狀態(tài),比傳統(tǒng)的硬件看門狗計數(shù)器電路監(jiān)控系統(tǒng)運行狀態(tài)更具通用性并節(jié)約了硬件成本。
[0077]以上對本發(fā)明實施例公開的一種軟件運行狀態(tài)監(jiān)控方法及裝置進行了詳細(xì)介紹,以上所揭露的僅為本發(fā)明較佳實施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
【權(quán)利要求】
1.一種軟件運行狀態(tài)監(jiān)控方法,其特征在于,包括: 賦予計數(shù)器初值; 啟動所述計數(shù)器從所述初值開始計數(shù); 接收被測程序提交的計數(shù)器初始化請求,將所述計數(shù)器計數(shù)值初始化得到所述初值; 定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求; 若是,執(zhí)行預(yù)設(shè)的處理策略。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述計數(shù)器從所述初值開始計數(shù)包括: 所述計數(shù)器從所述初值開始逐次加一或所述計數(shù)器從所述初值開始逐次減一。
3.根據(jù)權(quán)利要求1和3所述的方法,其特征在于,若所述計數(shù)器從所述初值開始逐次加一,所述定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求包括: 定時檢測所述計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值。
4.根據(jù)權(quán)利要求1和3所述的方法,其特征在于,若所述計數(shù)器從所述初值開始逐次減一,所述定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求包括: 定時檢測所述計數(shù)器計數(shù)值是否小于預(yù)設(shè)門限值。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述預(yù)設(shè)的處理策略包括:觸發(fā)預(yù)警動作、保存系統(tǒng)運行狀態(tài)或者觸發(fā)系統(tǒng)復(fù)位操作。
6.一種軟件運行狀態(tài)監(jiān)控裝置,其特征在于,包括: 賦值模塊,用于賦予計數(shù)器初值; 計數(shù)模塊,用于啟動所述計數(shù)器從所述初值開始計數(shù); 初始化模塊:用于接收被測程序提交的計數(shù)器初始化請求,將所述計數(shù)器計數(shù)值初始化得到所述初值。 檢測模塊,用于定時檢測計數(shù)器計數(shù)值是否符合預(yù)設(shè)門限值要求; 處理模塊,用于在檢測到所述計數(shù)器計數(shù)值符合預(yù)設(shè)門限值要求時,執(zhí)行預(yù)設(shè)的處理策略。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述計數(shù)模塊啟動所述計數(shù)器從所述初值開始計數(shù)包括: 所述計數(shù)器模塊啟動所述計數(shù)器從所述初值開始逐次加一或所述計數(shù)器模塊啟動所述計數(shù)器從所述初值開始逐次減一。
8.根據(jù)權(quán)利要求6和7所述的裝置,其特征在于, 所述檢測模塊,用于若所述計數(shù)器從所述初值開始逐次加一,定時檢測所述計數(shù)器計數(shù)值是否大于預(yù)設(shè)門限值。
9.根據(jù)權(quán)利要求6和7所述的裝置,其特征在于, 所述檢測模塊,用于若所述計數(shù)器從所述初值開始逐次減一,定時檢測所述計數(shù)器計數(shù)值是否小于預(yù)設(shè)門限值。
10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述處理模塊執(zhí)行預(yù)設(shè)的處理策略包括:觸發(fā)預(yù)警動作、保存系統(tǒng)運行狀態(tài)或者觸發(fā)系統(tǒng)復(fù)位操作。
【文檔編號】G06F11/36GK104268081SQ201410499789
【公開日】2015年1月7日 申請日期:2014年9月25日 優(yōu)先權(quán)日:2014年9月25日
【發(fā)明者】姚小偉 申請人:深圳創(chuàng)維數(shù)字技術(shù)有限公司, 深圳市創(chuàng)維軟件有限公司