專利名稱:一種軟件系統(tǒng)故障自恢復(fù)方法及其使用的軟件看門狗系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種軟件系統(tǒng)故障自恢復(fù)方法及其使用的軟件看門狗系統(tǒng)。
背景技術(shù):
在軟件系統(tǒng)的運行過程中,常常會發(fā)生異常而導(dǎo)致系統(tǒng)發(fā)生崩潰,如內(nèi)存讀寫沖 突、非法除0、堆棧溢出或越界、句柄無效、數(shù)組越界、系統(tǒng)陷入死循環(huán)等。對于一些實時性要 求較高的應(yīng)用場景來說,在軟件系統(tǒng)發(fā)生異常時能夠快速的完成自恢復(fù)是非常重要的。尤 其是對于一些運行在服務(wù)器端的軟件系統(tǒng),由于其發(fā)生異常甚至崩潰時不易被發(fā)現(xiàn),這就 更要求其具有故障自恢復(fù)的功能。現(xiàn)有的實現(xiàn)軟件系統(tǒng)故障自恢復(fù)的方法一般采用軟件看門狗技術(shù),其實現(xiàn)原理 是軟件看門狗定時查詢被監(jiān)視軟件系統(tǒng)的運行狀態(tài),定時向被監(jiān)視軟件系統(tǒng)發(fā)送查詢請 求,被監(jiān)視的軟件系統(tǒng)在接收到查詢請求后立即返回一條應(yīng)答消息,若軟件看門狗在發(fā)送 查詢命令后的T時間內(nèi)(T為查詢超時時限)沒有收到該應(yīng)答消息,則認為該被監(jiān)視的軟件 系統(tǒng)發(fā)生了異常,立即結(jié)束該軟件系統(tǒng)的運行并將其重新啟動。該方法雖然簡單易行,且也比較可靠,但該方法不適用于實時性要求高的場景,因 為該方法中軟件看門狗對軟件系統(tǒng)運行狀態(tài)的監(jiān)視是通過定時查詢來完成的,所以當被監(jiān) 視的軟件系統(tǒng)發(fā)生崩潰導(dǎo)致自行退出時,軟件看門狗需要一定的時間周期才能夠監(jiān)視到。
發(fā)明內(nèi)容
本發(fā)明提出了一種實現(xiàn)軟件系統(tǒng)故障自恢復(fù)的方法,用以解決當軟件系統(tǒng)發(fā)生異 常導(dǎo)致崩潰時能夠迅速恢復(fù)運行的問題。一種軟件系統(tǒng)故障自恢復(fù)方法,采用的具體技術(shù)方案,包括步驟如下步驟一、被監(jiān)視的軟件系統(tǒng)定時向軟件看門狗發(fā)送心跳包,所述軟件看門狗接收 并讀取所述心跳包;步驟二、所述軟件看門狗通過進程同步機制和以無限期等待的方式監(jiān)視所述被監(jiān) 視的軟件系統(tǒng)的退出,并根據(jù)被監(jiān)視的軟件系統(tǒng)的退出情況作相應(yīng)操作。其中,步驟一前還包括以阻塞的方式建立所述軟件看門狗與所述被監(jiān)視的軟件系 統(tǒng)之間通信的通信通道的步驟,所述軟件看門狗為通信通道的服務(wù)端,所述被監(jiān)視的軟件 系統(tǒng)為通信通道的客戶端。其中,所述軟件看門狗若在預(yù)設(shè)的時長內(nèi)連續(xù)沒有收到心跳包的次數(shù)或連續(xù)讀取 心跳包失敗的次數(shù)超過預(yù)設(shè)的閾值,則立即強制結(jié)束所述被監(jiān)視的軟件系統(tǒng)。其中,被監(jiān)視的軟件系統(tǒng)退出時,生成相應(yīng)的退出碼若被監(jiān)視的軟件系統(tǒng)正常退 出,則生成的退出碼為0 ;若被監(jiān)視的軟件系統(tǒng)為非正常退出,則生成的退出碼為非0。其中,軟件看門狗通過進程同步機制和以無限期等待的方式監(jiān)視到軟件系統(tǒng)退出 時,軟件看門狗獲取被監(jiān)視的軟件系統(tǒng)的退出碼,并判斷該軟件系統(tǒng)的退出情況若所述退 出碼為0,則被監(jiān)視的軟件系統(tǒng)為正常退出;若所述退出碼為非0,則被監(jiān)視的軟件系統(tǒng)為非正常退出。其中,所述根據(jù)被監(jiān)視的軟件系統(tǒng)的退出情況作相應(yīng)操作,具體包括若被監(jiān)視的 軟件系統(tǒng)是正常退出,則軟件看門狗取消對該被監(jiān)視的軟件系統(tǒng)的監(jiān)視;若被監(jiān)視的軟件 系統(tǒng)是非正常退出,則軟件看門狗重啟該被監(jiān)視的軟件系統(tǒng)。一種軟件看門狗系統(tǒng),包括主模塊,用于讀取被監(jiān)視的軟件系統(tǒng)信息并將該信息 發(fā)送給啟動軟件系統(tǒng)模塊;啟動軟件系統(tǒng)模塊,用于接收所述被監(jiān)視的軟件系統(tǒng)信息和重 啟所述被監(jiān)視的軟件系統(tǒng)的消息,并啟動所述被監(jiān)視的軟件系統(tǒng)的運行;還包括心跳包接收模塊,用于根據(jù)接收到的同步等待模塊發(fā)送的已經(jīng)退出的被監(jiān)視的軟 件系統(tǒng)消息,判斷被監(jiān)視的軟件系統(tǒng)是否已經(jīng)退出,若否,則接收并讀取所述被監(jiān)視軟件系 統(tǒng)定時發(fā)送的心跳包,若是,則取消接收該被監(jiān)視的軟件系統(tǒng)發(fā)送的心跳包;同步等待模塊,用于通過進程同步機制和以無限期等待的方式監(jiān)視所述被監(jiān)視的 軟件系統(tǒng)的退出,并以異步的方式將已經(jīng)退出的被監(jiān)視的軟件系統(tǒng)消息發(fā)送給心跳包接收 模塊和第二判斷模塊;第二判斷模塊,用于根據(jù)接收到的所述同步等待模塊發(fā)送的已經(jīng)退出的被監(jiān)視的 軟件系統(tǒng)消息,判斷所述被監(jiān)視的軟件系統(tǒng)的退出情況,若是非正常退出,則向啟動軟件系 統(tǒng)模塊發(fā)送一條重啟被監(jiān)視的軟件系統(tǒng)的指令。其中,所述心跳包接收模塊還用于以阻塞的方式創(chuàng)建用于與所述被監(jiān)視的軟件系 統(tǒng)進行通信的通信通道。其中,所述已經(jīng)退出的被監(jiān)視的軟件系統(tǒng)消息,包括已經(jīng)退出的被監(jiān)視軟件系統(tǒng) 以及對應(yīng)的退出碼。所述軟件看門狗系統(tǒng),還包括第一判斷模塊,用于根據(jù)心跳包接收模塊在預(yù)設(shè)的時長內(nèi)連續(xù)沒有收到心跳包的 次數(shù)或連續(xù)讀取心跳包失敗的次數(shù)與預(yù)設(shè)的閾值的比較情況,判斷所述被監(jiān)視的軟件系統(tǒng) 是否發(fā)生異常,若是,則向結(jié)束軟件系統(tǒng)模塊發(fā)送一條結(jié)束所述被監(jiān)視的軟件系統(tǒng)的消息, 若否,則繼續(xù)接收所述被監(jiān)視的軟件系統(tǒng)發(fā)送的心跳包;結(jié)束軟件系統(tǒng)模塊,用于接收第一判斷模塊發(fā)送的結(jié)束所述被監(jiān)視的軟件系統(tǒng)的 消息,強制結(jié)束所述被監(jiān)視的軟件系統(tǒng)。本發(fā)明提出的一種軟件系統(tǒng)故障自恢復(fù)方法,軟件看門狗通過進程同步機制和以 無限期等待的方式監(jiān)視軟件系統(tǒng)的退出,所以當被監(jiān)視的軟件系統(tǒng)發(fā)生異常導(dǎo)致崩潰而自 行退出時,軟件看門狗可以實時地監(jiān)視到從而重啟該軟件系統(tǒng),解決當軟件系統(tǒng)崩潰自行 退出時現(xiàn)有技術(shù)實時性不夠的問題。
圖1為軟件系統(tǒng)故障自恢復(fù)方法實施例一的流程圖;圖2為軟件看門狗實施例一的結(jié)構(gòu)示意圖;圖3為軟件系統(tǒng)故障自恢復(fù)方法實施例二的流程圖;圖4為軟件看門狗實施例二的結(jié)構(gòu)示意圖;圖5為軟件看門狗實施例二的心跳包接收模塊、第一判斷模塊和結(jié)束軟件系統(tǒng)模塊的流程圖。
具體實施例方式實施例一一種軟件系統(tǒng)故障自恢復(fù)方法,如圖1,包括以下步驟步驟一、軟件看門狗以阻塞的方式建立用于與被監(jiān)視的軟件系統(tǒng)進行通信的通 信通道,所述軟件看門狗為通信通道的服務(wù)端,所述被監(jiān)視的軟件系統(tǒng)為通信通道的客戶 端;步驟二、被監(jiān)視的軟件系統(tǒng)定時向軟件看門狗發(fā)送心跳包,軟件看門狗接收并讀 取所述被監(jiān)視的軟件系統(tǒng)定時發(fā)送的心跳包;步驟三、軟件看門狗通過進程同步機制和以無限期等待的方式監(jiān)視軟件系統(tǒng)的退 出,在監(jiān)視到軟件系統(tǒng)退出時,根據(jù)獲取到的被監(jiān)視的軟件系統(tǒng)的退出碼來判斷被監(jiān)視的 軟件系統(tǒng)是否正常退出并作相應(yīng)的操作若獲取到的被監(jiān)視的軟件系統(tǒng)的退出碼為0,則表示被監(jiān)視的軟件系統(tǒng)正常退出, 軟件看門狗取消對該被監(jiān)視的軟件系統(tǒng)的監(jiān)控;若獲取到的被監(jiān)視的軟件系統(tǒng)的退出碼為 非0,則表示被監(jiān)視的軟件系統(tǒng)非正常退出,軟件看門狗重啟該被監(jiān)視的軟件系統(tǒng);例如,當被監(jiān)視的軟件系統(tǒng)發(fā)生異常導(dǎo)致崩潰而自行退出時,由于軟件看門狗通 過進程同步機制并以無限期等待的方式監(jiān)視軟件系統(tǒng)的退出,所以軟件看門狗立即檢測到 軟件系統(tǒng)已經(jīng)退出,獲取到的被監(jiān)視的軟件系統(tǒng)的退出碼為非0,則軟件看門狗立即重啟該 軟件系統(tǒng)。一種軟件看門狗系統(tǒng),如圖2,包括主模塊,用于讀取被監(jiān)視的軟件系統(tǒng)信息并將該信息發(fā)送給啟動軟件系統(tǒng)模塊;啟動軟件系統(tǒng)模塊,用于接收主模塊發(fā)送的所述被監(jiān)視的軟件系統(tǒng)信息和第二判 斷模塊發(fā)送的重啟所述被監(jiān)視的軟件系統(tǒng)的消息,并啟動所述被監(jiān)視的軟件系統(tǒng)的運行;心跳包接收模塊,用于以阻塞的方式等待所述被監(jiān)視的軟件系統(tǒng)的通信通道連接 請求,根據(jù)接收的同步等待模塊發(fā)送的所述已經(jīng)退出的被監(jiān)視軟件系統(tǒng)消息,檢測被監(jiān)視 軟件系統(tǒng)是否已經(jīng)退出,若否,被監(jiān)視的軟件系統(tǒng)的通信通道連接請求到達后,接收并讀取 所述被監(jiān)視軟件系統(tǒng)定時發(fā)送的心跳包,若是,則取消接收該被監(jiān)視的軟件系統(tǒng)發(fā)送的心 跳包;同步等待模塊,用于通過進程同步機制和以無限期等待的方式監(jiān)視所述被監(jiān)視的 軟件系統(tǒng)的退出,并以異步的方式將已經(jīng)退出的被監(jiān)視的軟件系統(tǒng)消息發(fā)送給心跳包接收 模塊和第二判斷模塊;第二判斷模塊,用于根據(jù)接收到的所述同步等待模塊發(fā)送的已經(jīng)退出的被監(jiān)視的 軟件系統(tǒng)消息,判斷所述被監(jiān)視的軟件系統(tǒng)的退出情況,若是非正常退出,則向啟動軟件系 統(tǒng)模塊發(fā)送一條重啟所述被監(jiān)視的軟件系統(tǒng)的消息。其中,所述已經(jīng)退出的被監(jiān)視的軟件系統(tǒng)消息,包括已經(jīng)退出的被監(jiān)視軟件系統(tǒng) 以及對應(yīng)的退出碼。實施例二鑒于現(xiàn)有技術(shù)還有可靠性不夠的缺點如當被監(jiān)視軟件系統(tǒng)在運行一個較為耗時的計算時,因為軟件看門狗在規(guī)定的時間內(nèi)只進行一次查詢,所以在這種情形下該軟件系 統(tǒng)不能及時響應(yīng),此時若判定該被監(jiān)視軟件系統(tǒng)發(fā)生了異常并將其重啟,可能會帶來一些 相關(guān)的附加問題;為解決被監(jiān)視軟件系統(tǒng)運行耗時計算時可能出現(xiàn)的誤判問題,在實施例 一的步驟二后增加以下步驟軟件看門狗根據(jù)讀取所述被監(jiān)視軟件系統(tǒng)定時發(fā)送的心跳包情況監(jiān)視該軟件系 統(tǒng)的運行狀態(tài)若軟件看門狗在預(yù)設(shè)的時長內(nèi)連續(xù)沒有收到心跳包或讀取心跳包失敗的次 數(shù)超過閾值,則立即強制結(jié)束該被監(jiān)視的軟件系統(tǒng)。例如本實施例中,當被監(jiān)視的軟件系統(tǒng)發(fā)生異常不能正常工作但還在運行時,如 出現(xiàn)死鎖等這樣的情況時,預(yù)設(shè)的時長為3s,閾值N為5,當軟件看門狗在3s內(nèi)連續(xù)讀取心 跳包失敗的次數(shù)或連續(xù)沒有接收到心跳包的次數(shù)I為6次時,這時軟件看門狗認為被監(jiān)視 的軟件系統(tǒng)發(fā)生了異常,立即強制結(jié)束該被監(jiān)視的軟件系統(tǒng)。其他步驟與實施例一相同,本實施例的軟件系統(tǒng)故障自恢復(fù)方法的流程圖如圖3, 軟件看門狗設(shè)定在規(guī)定時長內(nèi)允許的連續(xù)讀取心跳包錯誤的次數(shù)或連續(xù)沒有接收到心跳 包的次數(shù),保證被監(jiān)視的軟件系統(tǒng)在進行耗時計算時也有比較充足的時間向軟件看門狗發(fā) 送心跳包,解決了現(xiàn)有技術(shù)可靠性不夠的問題。同樣為了解決現(xiàn)有技術(shù)可靠性不夠的缺點,即軟件系統(tǒng)運行耗時計算時可能出現(xiàn) 的誤判問題,所述軟件看門狗在實施例一的模塊基礎(chǔ)上增加以下模塊第一判斷模塊,用于根據(jù)心跳包接收模塊在預(yù)設(shè)的時長內(nèi)連續(xù)沒有收到心跳包的 次數(shù)或連續(xù)讀取心跳包失敗的次數(shù)與預(yù)設(shè)的閾值的比較情況,判斷所述被監(jiān)視的軟件系統(tǒng) 是否發(fā)生異常,若是,則向結(jié)束軟件系統(tǒng)模塊發(fā)送一條結(jié)束所述被監(jiān)視的軟件系統(tǒng)的消息, 若否,則繼續(xù)接收所述被監(jiān)視的軟件系統(tǒng)發(fā)送的心跳包;結(jié)束軟件系統(tǒng)模塊,用于接收第一判斷模塊發(fā)送的結(jié)束所述被監(jiān)視的軟件系統(tǒng)的 消息,強制結(jié)束所述被監(jiān)視的軟件系統(tǒng)。其他模塊與實施例一的模塊相同,本實施例的軟件看門狗的模塊結(jié)構(gòu)如圖4,該軟 件看門狗的具體信號流程如下1)主模塊讀取被監(jiān)視的軟件系統(tǒng)信息并將該信息發(fā)送給啟動軟件系統(tǒng)模塊;2)啟動軟件系統(tǒng)模塊根據(jù)接收到的主模塊發(fā)送的被監(jiān)視軟件系統(tǒng)信息,啟動被監(jiān) 視的軟件系統(tǒng)的運行;3)如圖5,心跳包接收模塊首先以阻塞的方式等待被監(jiān)視的軟件系統(tǒng)的通信通道 連接請求,并根據(jù)同步等待模塊發(fā)送的所述已經(jīng)退出的被監(jiān)視軟件系統(tǒng)消息,檢測被監(jiān)視 的軟件系統(tǒng)是否退出,若是,則取消接收該被監(jiān)視軟件系統(tǒng)的心跳包,若否,則被監(jiān)視的軟 件系統(tǒng)的通信通道連接請求到達后,接收并讀取所述被監(jiān)視軟件系統(tǒng)定時發(fā)送的心跳包, 并將讀取情況發(fā)送到第一判斷模塊;第一判斷模塊根據(jù)接收到的心跳包讀取情況,判斷所述被監(jiān)視的軟件系統(tǒng)是否發(fā) 生異常假設(shè)軟件看門狗在預(yù)設(shè)的時長內(nèi)連續(xù)沒有收到心跳包的次數(shù)或連續(xù)讀取心跳包失 敗的次數(shù)為I并初始化為0,如果讀取成功,則將I重新設(shè)置為0,并返回到心跳包接收模塊 檢測被監(jiān)視的軟件系統(tǒng)是否退出步驟;如果讀取失敗,則I加1,當I <閾值N時,則返回到 心跳包接收模塊檢測被監(jiān)視的軟件系統(tǒng)是否退出步驟,當I > N時,則向結(jié)束軟件系統(tǒng)模塊 發(fā)送結(jié)束該被監(jiān)視軟件系統(tǒng)的消息,結(jié)束軟件系統(tǒng)模塊立即強制結(jié)束該軟件系統(tǒng);
7
4)同步等待模塊通過進程同步機制和以無限期等待的方式監(jiān)視軟件系統(tǒng)的退出, 并以異步的方式將已經(jīng)退出的被監(jiān)視軟件系統(tǒng)消息發(fā)送給心跳包接收模塊和第二判斷模 塊;該已經(jīng)退出的被監(jiān)視軟件系統(tǒng)消息,包括已經(jīng)退出的被監(jiān)視軟件系統(tǒng)以及對應(yīng)的退出 碼;5)第二判斷模塊根據(jù)接收到的同步等待模塊發(fā)送的已經(jīng)退出的被監(jiān)視軟件系統(tǒng) 消息,根據(jù)退出碼判斷軟件系統(tǒng)的退出情況,若該被監(jiān)視的軟件系統(tǒng)為非正常退出,則向啟 動軟件系統(tǒng)模塊發(fā)送一條重啟該軟件系統(tǒng)的消息,啟動軟件系統(tǒng)模塊重啟該軟件系統(tǒng)的運 行,若該被監(jiān)視的軟件系統(tǒng)為正常退出,則取消對該被監(jiān)視軟件系統(tǒng)的監(jiān)視。以上所述的本發(fā)明實施方式,并不構(gòu)成對本發(fā)明保護范圍的限定。任何在本發(fā)明 的精神和原則之內(nèi)所作的修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的權(quán)利要求保護范 圍之內(nèi)。
權(quán)利要求
一種軟件系統(tǒng)故障自恢復(fù)方法,其特征在于,包括步驟步驟一、被監(jiān)視的軟件系統(tǒng)定時向軟件看門狗發(fā)送心跳包,所述軟件看門狗接收并讀取所述心跳包;步驟二、所述軟件看門狗通過進程同步機制和以無限期等待的方式監(jiān)視所述被監(jiān)視的軟件系統(tǒng)的退出,并根據(jù)被監(jiān)視的軟件系統(tǒng)的退出情況作相應(yīng)操作。
2.根據(jù)權(quán)利要求1所述的軟件系統(tǒng)故障自恢復(fù)方法,其特征在于,步驟一前還包括步驟以阻塞的方式建立所述軟件看門狗與所述被監(jiān)視的軟件系統(tǒng)之間通信的通信通道,所 述軟件看門狗為通信通道的服務(wù)端,所述被監(jiān)視的軟件系統(tǒng)為通信通道的客戶端。
3.根據(jù)權(quán)利要求1所述的軟件系統(tǒng)故障自恢復(fù)方法,其特征在于,所述軟件看門狗若 在預(yù)設(shè)的時長內(nèi)連續(xù)沒有收到心跳包的次數(shù)或連續(xù)讀取心跳包失敗的次數(shù)超過預(yù)設(shè)的閾 值,則立即強制結(jié)束所述被監(jiān)視的軟件系統(tǒng)。
4.根據(jù)權(quán)利要求1所述的軟件系統(tǒng)故障自恢復(fù)方法,其特征在于,被監(jiān)視的軟件系統(tǒng) 退出時,生成相應(yīng)的退出碼若被監(jiān)視的軟件系統(tǒng)正常退出,則生成的退出碼為0 ;若被監(jiān) 視的軟件系統(tǒng)為非正常退出,則生成的退出碼為非0。
5.根據(jù)權(quán)利要求4所述的軟件系統(tǒng)故障自恢復(fù)方法,其特征在于,軟件看門狗通過進 程同步機制和以無限期等待的方式監(jiān)視到軟件系統(tǒng)退出時,軟件看門狗獲取被監(jiān)視的軟件 系統(tǒng)的退出碼并判斷該軟件系統(tǒng)的退出情況若所述退出碼為0,則被監(jiān)視的軟件系統(tǒng)為 正常退出;若所述退出碼為非0,則被監(jiān)視的軟件系統(tǒng)為非正常退出。
6.根據(jù)權(quán)利要求1或5所述的軟件系統(tǒng)故障自恢復(fù)方法,其特征在于,所述根據(jù)被監(jiān)視 的軟件系統(tǒng)的退出情況作相應(yīng)操作具體包括若被監(jiān)視的軟件系統(tǒng)是正常退出,則軟件看 門狗取消對該被監(jiān)視的軟件系統(tǒng)的監(jiān)視;若被監(jiān)視的軟件系統(tǒng)是非正常退出,則軟件看門 狗重啟該被監(jiān)視的軟件系統(tǒng)。
7.一種軟件看門狗系統(tǒng),包括主模塊,用于讀取被監(jiān)視的軟件系統(tǒng)信息并將該信息 發(fā)送給啟動軟件系統(tǒng)模塊;啟動軟件系統(tǒng)模塊,用于接收所述被監(jiān)視的軟件系統(tǒng)信息和重 啟被監(jiān)視的軟件系統(tǒng)的消息,并啟動所述被監(jiān)視的軟件系統(tǒng)的運行;其特征是所述軟件看門狗系統(tǒng)還包括心跳包接收模塊,用于根據(jù)接收到的同步等待模塊發(fā)送的已經(jīng)退出的被監(jiān)視的軟件系 統(tǒng)消息,判斷被監(jiān)視的軟件系統(tǒng)是否已經(jīng)退出,若否,則接收并讀取所述被監(jiān)視軟件系統(tǒng)定 時發(fā)送的心跳包,若是,則取消接收該被監(jiān)視的軟件系統(tǒng)發(fā)送的心跳包;同步等待模塊,用于通過進程同步機制并以無限期等待的方式監(jiān)視所述被監(jiān)視的軟件 系統(tǒng)的退出,并以異步的方式將已經(jīng)退出的被監(jiān)視的軟件系統(tǒng)消息發(fā)送給心跳包接收模塊 和第二判斷模塊;第二判斷模塊,用于根據(jù)接收到的所述同步等待模塊發(fā)送的已經(jīng)退出的被監(jiān)視的軟件 系統(tǒng)消息,判斷所述被監(jiān)視的軟件系統(tǒng)的退出情況,若是非正常退出,則向啟動軟件系統(tǒng)模 塊發(fā)送一條重啟被監(jiān)視的軟件系統(tǒng)的消息。
8.根據(jù)權(quán)利要求7所述的軟件看門狗系統(tǒng),其特征在于,所述心跳包接收模塊還用于 以阻塞的方式創(chuàng)建用于與所述被監(jiān)視的軟件系統(tǒng)進行通信的通信通道。
9.根據(jù)權(quán)利要求7所述的軟件看門狗系統(tǒng),其特征在于,所述已經(jīng)退出的被監(jiān)視的軟件系統(tǒng)消息,包括已經(jīng)退出的被監(jiān)視軟件系統(tǒng)以及對應(yīng)的退出碼。
10.根據(jù)權(quán)利要求7或8或9所述的軟件看門狗系統(tǒng),其特征在于,所述軟件看門狗系 統(tǒng)還包括第一判斷模塊,用于根據(jù)心跳包接收模塊在預(yù)設(shè)的時長內(nèi)連續(xù)沒有收到心跳包 的次數(shù)或連續(xù)讀取心跳包失敗的次數(shù)與預(yù)設(shè)的閾值的比較情況,判斷所述被監(jiān)視的軟件系 統(tǒng)是否發(fā)生異常,若是,則向結(jié)束軟件系統(tǒng)模塊發(fā)送一條結(jié)束所述被監(jiān)視的軟件系統(tǒng)的消 息,若否,則繼續(xù)接收所述被監(jiān)視的軟件系統(tǒng)發(fā)送的心跳包;結(jié)束軟件系統(tǒng)模塊,用于接收第一判斷模塊發(fā)送的結(jié)束所述被監(jiān)視的軟件系統(tǒng)的消 息,強制結(jié)束所述被監(jiān)視的軟件系統(tǒng)。
全文摘要
本發(fā)明提出一種軟件系統(tǒng)故障自恢復(fù)方法及其使用的軟件看門狗,解決軟件系統(tǒng)發(fā)生異常導(dǎo)致崩潰自行退出而不能快速自恢復(fù)的問題。一種軟件系統(tǒng)故障自恢復(fù)方法包括以下步驟軟件系統(tǒng)定時向軟件看門狗發(fā)送心跳包;軟件看門狗通過進程同步機制并以無限期等待的方式監(jiān)視軟件系統(tǒng)的退出,并根據(jù)軟件系統(tǒng)的退出情況作相應(yīng)的操作;一種軟件看門狗系統(tǒng),包括主模塊、啟動軟件系統(tǒng)模塊,還包括同步等待模塊、第二判斷模塊;當軟件系統(tǒng)發(fā)生異常導(dǎo)致崩潰而自行退出時,軟件看門狗可以實時地檢測到,結(jié)束軟件系統(tǒng)的運行并重啟該軟件系統(tǒng),確保本發(fā)明的實時性。
文檔編號G06F11/07GK101980171SQ20101050334
公開日2011年2月23日 申請日期2010年10月8日 優(yōu)先權(quán)日2010年10月8日
發(fā)明者劉明華, 岑護平, 康曉林 申請人:廣東威創(chuàng)視訊科技股份有限公司