專利名稱:多線程看門狗監(jiān)控方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多線程看門狗監(jiān)控技術(shù),尤其涉及一種在線程執(zhí)行時(shí)間不確定的前提
下看門狗監(jiān)控的實(shí)現(xiàn)方法。
背景技術(shù):
眾所周知,嵌入式產(chǎn)品一般對(duì)工作環(huán)境的要求比較苛刻,而且要求全天候運(yùn)行。因 此,為保證嵌入式系統(tǒng)的高可靠性和穩(wěn)定性,現(xiàn)有技術(shù)一般都會(huì)在嵌入式系統(tǒng)中加入軟件 看門狗,與外部的硬件看門狗相配合,保證嵌入式系統(tǒng)的自我恢復(fù)性。 硬件看門狗一般需要軟件輸出周期性的電平變換(此動(dòng)作稱為"喂狗")來(lái)確認(rèn) 系統(tǒng)處于正常的運(yùn)行狀態(tài),如無(wú)周期性的電平變換則會(huì)觸發(fā)復(fù)位信號(hào),使系統(tǒng)復(fù)位。因此軟 件輸出變化電平的周期性顯得尤為重要。 在現(xiàn)有的嵌入式系統(tǒng)中,整個(gè)嵌入式程序都屬于整個(gè)循環(huán)中,進(jìn)行周期性的執(zhí)行, 看門狗設(shè)計(jì)者只需要在此循環(huán)中分段插入"喂狗"操作,便可以檢測(cè)整個(gè)系統(tǒng)的運(yùn)行情況。
但是隨著嵌入式系統(tǒng)的復(fù)雜性提高,原有的單循環(huán)系統(tǒng)被拆分為多進(jìn)程多線程系 統(tǒng),因此嵌入式系統(tǒng)就需要監(jiān)控每一個(gè)線程的運(yùn)行情況才能最終保證整個(gè)系統(tǒng)的穩(wěn)定性。
中國(guó)專利公開號(hào)CN1547125、 CN101295271A發(fā)明中均提及了采用線程進(jìn)行看門狗 監(jiān)控的情況,并對(duì)如何保證看門狗的穩(wěn)定性提出了一些技術(shù)設(shè)想。但對(duì)看門狗監(jiān)控技術(shù)的 核心環(huán)節(jié)如何根據(jù)各線程的特點(diǎn)來(lái)定制每個(gè)線程的執(zhí)行時(shí)間,并能夠辨別線程因等待資 源而合理掛起的情況,卻未提供解決的方案。因此上述技術(shù)方案在具體實(shí)施中還存在技術(shù) 空白。
發(fā)明內(nèi)容
有鑒于現(xiàn)有技術(shù)的上述缺陷,本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種實(shí)時(shí)、有效、 可控的多線程看門狗監(jiān)控方法。 為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種多線程看門狗監(jiān)控方法,至少包括以下步 驟 步驟一,初始化看門狗監(jiān)控隊(duì)列; 步驟二,建立看門狗監(jiān)控進(jìn)程,將本步驟的監(jiān)控線程定義為最高優(yōu)先級(jí),周期執(zhí)行 時(shí)間為Tl ; 步驟三,創(chuàng)建其他應(yīng)用線程,在創(chuàng)建其他應(yīng)用線程時(shí)根據(jù)需要設(shè)定是否進(jìn)行看門 狗監(jiān)控;如需要,則設(shè)置看門狗監(jiān)控的開始時(shí)間T2和執(zhí)行時(shí)間T3 ; 步驟四,如果線程中有阻塞資源,在阻塞前先關(guān)閉該線程的看門狗監(jiān)控;否則跳至 步驟六; 步驟五,等待步驟五中所述阻塞資源有效; 步驟六,開啟該線程的看門狗監(jiān)控,重置開始時(shí)間和執(zhí)行時(shí)間為T2, T3 ;
步驟七,監(jiān)控線程等待定時(shí)信號(hào),定時(shí)檢測(cè)看門狗監(jiān)控隊(duì)列;
步驟八,檢測(cè)監(jiān)控對(duì)象的開始時(shí)間是否達(dá)到,未到達(dá)返回步驟七; 步驟九,檢測(cè)到監(jiān)控對(duì)象中剩余時(shí)間小于O,則判斷該線程為異常,回收該線程
(或通過(guò)硬件看門狗復(fù)位系統(tǒng)),返回步驟三; 步驟十,將該線程執(zhí)行時(shí)間減去Tl,返回步驟六; 步驟十一,在功能線程執(zhí)行一次循環(huán)后,返回步驟四。 與現(xiàn)有技術(shù)的軟件看門狗相比,現(xiàn)有技術(shù)的軟件看門狗無(wú)法根據(jù)各線程自身的特 點(diǎn)來(lái)制定每個(gè)線程的執(zhí)行時(shí)間,并無(wú)法分辨線程是因等待資源而合理掛起還是運(yùn)行出現(xiàn)異 常而掛起的缺陷,而本發(fā)明是一種有效、可控的看門狗的監(jiān)控方法。 以下將結(jié)合附圖對(duì)本發(fā)明的構(gòu)思、具體結(jié)構(gòu)及產(chǎn)生的技術(shù)效果作進(jìn)一步說(shuō)明,以 充分地了解本發(fā)明的目的、特征和效果。
圖1是本發(fā)明一具體實(shí)施例的流程圖。
具體實(shí)施例方式
如圖1所示,本發(fā)明的多線程看門狗監(jiān)控方法一具體實(shí)施例包括以下步驟
步驟一,創(chuàng)建監(jiān)控守護(hù)線程,此線程具有較高的優(yōu)先級(jí),并且此線程與監(jiān)控的其它 功能線程屬于不同的進(jìn)程,功能單一,以避免受到其他線程影響。 步驟二,創(chuàng)建監(jiān)控隊(duì)列,進(jìn)行初始化。為了能夠和其他進(jìn)程共享此監(jiān)控隊(duì)列,通過(guò) 采用一資源共享機(jī)制,以便于和其他進(jìn)程進(jìn)行共享。 在不同具體實(shí)施例中,上述的資源共享機(jī)制可以是共享內(nèi)存,有名消息隊(duì)列,有
名管道等之一。 步驟三,監(jiān)控守護(hù)進(jìn)程掛起,等待定時(shí)器發(fā)送的定時(shí)信號(hào)量,執(zhí)行周期為Tl。
步驟四,此時(shí)其他功能線程開始創(chuàng)建,并運(yùn)行。 步驟五,如果該線程需要監(jiān)控線程進(jìn)行監(jiān)控,設(shè)置此線程的開始監(jiān)控時(shí)間為T2,執(zhí) 行時(shí)間為T3。此參數(shù)可根據(jù)線程的具體需求進(jìn)行單獨(dú)設(shè)置,從而達(dá)到為每一個(gè)線程進(jìn)行定 制的技術(shù)效果。 步驟六,如果線程在運(yùn)行過(guò)程中阻塞其他資源,則在阻塞之前,關(guān)閉此線程的看門 狗監(jiān)控,防止由于阻塞造成線程執(zhí)行的不確定性。
步驟七,功能線程處于掛起狀態(tài),等待信號(hào)。 步驟八,在等待到信號(hào)之后,重新設(shè)置該線程的開始時(shí)間和執(zhí)行時(shí)間。
步驟九,再次開啟此線程的看門狗監(jiān)控。 步驟十,此時(shí)監(jiān)控線程的執(zhí)行周期到來(lái),監(jiān)控線程被喚醒執(zhí)行,開始遍歷監(jiān)控隊(duì)列 中的監(jiān)控對(duì)象狀態(tài)。 步驟十一,如果線程的開始監(jiān)控時(shí)間T2小于監(jiān)控進(jìn)程的執(zhí)行周期Tl,則跳至步驟十三。 步驟十二,如果線程的開始監(jiān)控時(shí)間T2大于監(jiān)控進(jìn)程的執(zhí)行周期Tl,則表示該線 程還未進(jìn)入監(jiān)控范圍,開始監(jiān)控時(shí)間T2 = T2-T1,進(jìn)行監(jiān)控時(shí)間重新賦值;然后跳至步驟
4
步驟十三,如果線程的執(zhí)行剩余時(shí)間T3小于監(jiān)控進(jìn)程的執(zhí)行周期Tl,則跳至步驟 十五。 步驟十四,如果線程的執(zhí)行剩余時(shí)間T3大于監(jiān)控進(jìn)程的執(zhí)行周期Tl,則表示該線 程執(zhí)行時(shí)間尚未用完,處于合法的監(jiān)控范圍之內(nèi)。T3 = T3-T1。
步驟十五,表示該線程運(yùn)行出現(xiàn)異常,應(yīng)回收該線程。 在不同實(shí)施例中,還可以根據(jù)需要重新創(chuàng)建該異常功能線程,或者復(fù)位整個(gè)系統(tǒng)。
以上詳細(xì)描述了本發(fā)明的較佳具體實(shí)施例。應(yīng)當(dāng)理解,本領(lǐng)域的普通技術(shù)無(wú)需創(chuàng) 造性勞動(dòng)就可以根據(jù)本發(fā)明的構(gòu)思作出諸多修改和變化。因此,凡本技術(shù)領(lǐng)域中技術(shù)人員 依本發(fā)明的構(gòu)思在現(xiàn)有技術(shù)的基礎(chǔ)上通過(guò)邏輯分析、推理或者有限的實(shí)驗(yàn)可以得到的技術(shù) 方案,皆應(yīng)在本發(fā)明的權(quán)利要求保護(hù)范圍內(nèi)。
權(quán)利要求
一種多線程看門狗監(jiān)控方法,至少包括以下步驟步驟一,初始化看門狗監(jiān)控隊(duì)列;步驟二,建立看門狗監(jiān)控進(jìn)程,將本步驟的監(jiān)控線程定義為最高優(yōu)先級(jí),周期執(zhí)行時(shí)間為T1;步驟三,創(chuàng)建其他應(yīng)用線程,在創(chuàng)建其他應(yīng)用線程時(shí)根據(jù)需要設(shè)定是否進(jìn)行看門狗監(jiān)控;如需要,則設(shè)置看門狗監(jiān)控的開始時(shí)間T2和執(zhí)行時(shí)間T3;步驟四,如果線程中有阻塞資源,在阻塞前先關(guān)閉該線程的看門狗監(jiān)控;否則跳至步驟六;步驟五,等待步驟五中所述阻塞資源有效;步驟六,開啟該線程的看門狗監(jiān)控,重置開始時(shí)間和執(zhí)行時(shí)間為T2,T3;步驟七,監(jiān)控線程等待定時(shí)信號(hào),定時(shí)檢測(cè)看門狗監(jiān)控隊(duì)列;步驟八,檢測(cè)監(jiān)控對(duì)象的開始時(shí)間是否達(dá)到,未到達(dá)返回步驟七;步驟九,檢測(cè)到監(jiān)控對(duì)象中剩余時(shí)間小于0,則判斷該線程為異常,回收該線程(或通過(guò)硬件看門狗復(fù)位系統(tǒng)),返回步驟三;步驟十,將該線程執(zhí)行時(shí)間減去T1,返回步驟六;步驟十一,在功能線程執(zhí)行一次循環(huán)后,返回步驟四。
全文摘要
本發(fā)明公開了一種多線程看門狗監(jiān)控方法,主要包括初始化看門狗監(jiān)控隊(duì)列并建立看門狗監(jiān)控進(jìn)程;創(chuàng)建其他應(yīng)用線程;如線程中有阻塞,在阻塞前先關(guān)閉該線程的看門狗監(jiān)控并等待阻塞資源有效;如無(wú)阻塞則開啟該線程的看門狗監(jiān)控;監(jiān)控線程等待定時(shí)信號(hào),定時(shí)檢測(cè)看門狗監(jiān)控隊(duì)列;檢測(cè)監(jiān)控對(duì)象的開始時(shí)間是否達(dá)到,未到達(dá)則返回等待步驟;檢測(cè)到監(jiān)控對(duì)象中剩余時(shí)間小于0,則判斷該線程為異常,回收該線程(或通過(guò)硬件看門狗復(fù)位系統(tǒng)),返回創(chuàng)建其他應(yīng)用線程步驟;否則,將該線程執(zhí)行時(shí)間減去T1,返回開啟看門狗監(jiān)控步驟;在功能線程執(zhí)行一次循環(huán)后再次返回。本發(fā)明是一種有效、可控的看門狗的監(jiān)控方法。
文檔編號(hào)G06F11/00GK101794244SQ20101012776
公開日2010年8月4日 申請(qǐng)日期2010年3月18日 優(yōu)先權(quán)日2010年3月18日
發(fā)明者郝盼 申請(qǐng)人:上海樂毅信息科技有限公司