專利名稱:一種實時操作系統(tǒng)中任務(wù)掛起狀態(tài)監(jiān)控方法
技術(shù)領(lǐng)域:
本發(fā)明涉及實時系統(tǒng),尤其涉及實時多任務(wù)操作系統(tǒng)中任務(wù)運(yùn)行狀態(tài)的監(jiān)控處理。
背景技術(shù):
實時系統(tǒng)是指能在確定的時間內(nèi)執(zhí)行其功能,并對外部的異步事件作出響應(yīng)的計算機(jī)系統(tǒng),實時系統(tǒng)一般應(yīng)用于通信、工業(yè)控制等領(lǐng)域中。實時操作系統(tǒng)(RTOS)是一個實時系統(tǒng)最關(guān)鍵的組成部分,它通常與特定的中央處理器(CPU)、外設(shè)等共同組成一個實時系統(tǒng)。
目前廣泛應(yīng)用的實時操作系統(tǒng)都是多任務(wù)的操作系統(tǒng),實時多任務(wù)操作系統(tǒng)允許多個實時應(yīng)用作為一系列獨(dú)立任務(wù)來運(yùn)行。從系統(tǒng)的角度看,任務(wù)是競爭系統(tǒng)資源的最小運(yùn)行單元,任務(wù)可以使用或等待CPU、I/O設(shè)備及內(nèi)存空間等系統(tǒng)資源,并獨(dú)立于其它任務(wù),與它們一起并發(fā)運(yùn)行。實時操作系統(tǒng)的一個任務(wù)可有多種狀態(tài),其中最基本的狀態(tài)有四種(1)就緒態(tài)(Ready)任務(wù)準(zhǔn)備好,等待系統(tǒng)分配CPU資源后就立即可以執(zhí)行;(2)阻塞態(tài)(Block)任務(wù)需等待某些不可利用的資源而被阻塞;(3)掛起態(tài)(Suspend)操作系統(tǒng)停止對該任務(wù)的調(diào)度;(4)執(zhí)行態(tài)(Running)指任務(wù)正占用CPU資源,任務(wù)的程序指令正在被執(zhí)行。
實時操作系統(tǒng)運(yùn)行時,任務(wù)不斷地從一種狀態(tài)遷移到另一狀態(tài),狀態(tài)的遷移由實時操作系統(tǒng)控制。
在實時操作系統(tǒng)應(yīng)用中,任務(wù)執(zhí)行的基本流程如圖1所示,包括
系統(tǒng)硬件初始化;操作系統(tǒng)初始化;創(chuàng)建用戶主任務(wù);創(chuàng)建并激活清狗任務(wù);創(chuàng)建并激活一系列其它任務(wù);用戶主任務(wù)終止或掛起;操作系統(tǒng)調(diào)度其它任務(wù)。
其中,清狗任務(wù)的創(chuàng)建也可以放在圖1中的“操作系統(tǒng)初始化”之后。
如果在上述任何一個任務(wù)執(zhí)行過程中出現(xiàn)異常(Exception),如指令異?;蛘邤?shù)據(jù)訪問異常,則操作系統(tǒng)就會掛起(Suspend)該任務(wù),導(dǎo)致該任務(wù)停止執(zhí)行,如果系統(tǒng)中清狗任務(wù)執(zhí)行正常,或者其他的清狗操作(如通過中斷清狗)正常運(yùn)行,那么系統(tǒng)就無法通過復(fù)位的方式來達(dá)到自恢復(fù)的目的。
現(xiàn)有實時操作系統(tǒng)應(yīng)用中,一般采用專門的監(jiān)控任務(wù)來監(jiān)控其它任務(wù)的工作狀態(tài),如果發(fā)現(xiàn)有任務(wù)被掛起,監(jiān)控任務(wù)就會采取相應(yīng)的告警或者處理操作。
現(xiàn)有技術(shù)的缺點(diǎn)若監(jiān)控任務(wù)本身也出現(xiàn)異常而被操作系統(tǒng)掛起,就不能實現(xiàn)對各任務(wù)的監(jiān)控,這樣,當(dāng)有任務(wù)被掛起時,用戶無法實時獲知任務(wù)的掛起狀態(tài),若系統(tǒng)其它任務(wù)運(yùn)行正常,將會造成系統(tǒng)運(yùn)行不完整,進(jìn)而引發(fā)不可預(yù)知的后果。
發(fā)明內(nèi)容
本發(fā)明提供一種實時操作系統(tǒng)中任務(wù)掛起狀態(tài)監(jiān)控方法,用以解決現(xiàn)有技術(shù)中存在的任務(wù)掛起時不能實時獲知的問題。
本發(fā)明方法包括下列步驟A、被監(jiān)控任務(wù)啟動時,系統(tǒng)根據(jù)其啟動時間和任務(wù)執(zhí)行時長,確定出該任務(wù)的超時時間;B、系統(tǒng)執(zhí)行清狗操作時,若判斷出被監(jiān)控任務(wù)超時,則確定該任務(wù)已產(chǎn)生異常并被操作系統(tǒng)掛起。
所述系統(tǒng)中設(shè)置有監(jiān)控定時器;所述步驟A中,當(dāng)任務(wù)啟動時,根據(jù)定時器的當(dāng)前時間和任務(wù)執(zhí)行時長,計算并保存該任務(wù)的超時時間;
所述步驟B中,系統(tǒng)執(zhí)行清狗操作時,讀取并比較定時器的當(dāng)前時間和保存的超時時間,判斷被監(jiān)控任務(wù)是否超時。
所述監(jiān)控定時器采用系統(tǒng)中CPU內(nèi)部提供的定時器或為設(shè)置的外部邏輯定時器。
所述系統(tǒng)中為每一個被監(jiān)控任務(wù)單獨(dú)設(shè)置一個定時器或多個任務(wù)共用一個定時器。
所述步驟A中還包括有選擇是否啟動任務(wù)監(jiān)控的步驟;若選擇對該任務(wù)進(jìn)行監(jiān)控,則記錄任務(wù)狀態(tài)為啟動監(jiān)控;當(dāng)該任務(wù)執(zhí)行完畢后,記錄任務(wù)狀態(tài)為停止監(jiān)控;否則,記錄任務(wù)狀態(tài)為不監(jiān)控;所述步驟B包括系統(tǒng)執(zhí)行清狗操作時,獲取任務(wù)狀態(tài)信息,若為啟動監(jiān)控,則讀取并比較定時器的當(dāng)前時間和保存的超時時間,判斷該任務(wù)是否超時。
所述系統(tǒng)中設(shè)置有任務(wù)超時時間表;所述步驟A中,當(dāng)任務(wù)啟動時,根據(jù)系統(tǒng)當(dāng)前時間和任務(wù)執(zhí)行時長,計算出該任務(wù)的超時時間,并存入所述任務(wù)超時時間表中;所述步驟B中,系統(tǒng)執(zhí)行清狗操作時,比較系統(tǒng)當(dāng)前時間和所述任務(wù)超時時間表中存儲的超時時間,判斷被監(jiān)控任務(wù)是否超時。
所述步驟A中,當(dāng)任務(wù)啟動時,還包括有選擇是否啟動任務(wù)監(jiān)控的步驟;系統(tǒng)僅對選擇進(jìn)行監(jiān)控的任務(wù),計算出超時時間,并存入所述任務(wù)超時時間表中。
根據(jù)本發(fā)明的上述方法,還包括任務(wù)執(zhí)行完畢后,刪除該任務(wù)在所述任務(wù)超時時間表中對應(yīng)記錄的步驟。
所述任務(wù)的超時時間為任務(wù)的啟動時間加上該任務(wù)的執(zhí)行時長和預(yù)留的時間裕量。
采用本發(fā)明的方法,可以實時地對實時操作系統(tǒng)中的任務(wù)進(jìn)行監(jiān)控,避免實時系統(tǒng)出現(xiàn)部分任務(wù)掛起而毫無所知的問題,從而保證實時系統(tǒng)工作正常。
圖1為實時操作系統(tǒng)工作流程圖;圖2為本發(fā)明實施例一任務(wù)執(zhí)行流程圖;圖3為本發(fā)明實施例一任務(wù)執(zhí)行狀態(tài)監(jiān)控流程圖;圖4為本發(fā)明實施例二任務(wù)執(zhí)行流程圖;圖5為本發(fā)明實施例二任務(wù)執(zhí)行狀態(tài)監(jiān)控流程圖。
具體實施例方式
實時操作系統(tǒng)一般與特定的CPU、外設(shè)等組成一個實時系統(tǒng),通常,CPU內(nèi)部會提供若干個硬件定時器(Timer)供用戶使用,這些定時器有16位(bit)的,也有32位、64位(bit)的。本發(fā)明的實施例一是利用CPU的一個硬件定時器和實時操作系統(tǒng)中的清狗函數(shù)配合實現(xiàn)對任務(wù)執(zhí)行狀態(tài)的監(jiān)控,具體地,如果要對某個或者某些任務(wù)進(jìn)行監(jiān)控,則在任務(wù)啟動時,設(shè)置該任務(wù)的狀態(tài)為“啟動監(jiān)控”,并根據(jù)任務(wù)啟動的當(dāng)前時間和該任務(wù)正常運(yùn)行時的任務(wù)執(zhí)行時長,設(shè)置超時時間并預(yù)留足夠的時間裕量,在任務(wù)執(zhí)行完畢后設(shè)置該任務(wù)的狀態(tài)為“停止監(jiān)控”。任務(wù)執(zhí)行的具體流程如圖2所示,包括下列步驟步驟S21、操作系統(tǒng)對任務(wù)進(jìn)行調(diào)度,啟動任務(wù)的運(yùn)行;步驟S22、如果該任務(wù)為重要任務(wù)或有必要對該任務(wù)的運(yùn)行狀態(tài)進(jìn)行監(jiān)控,則設(shè)置該任務(wù)的運(yùn)行狀態(tài)為“啟動監(jiān)控”;具體的設(shè)置方法可以是系統(tǒng)自動設(shè)置,或者是任務(wù)啟動時通過系統(tǒng)界面窗口提示用戶,由用戶通過窗口選擇是否啟動監(jiān)控功能;步驟S23、若選擇對該任務(wù)進(jìn)行監(jiān)控,則讀取設(shè)置的監(jiān)控定時器的當(dāng)前時間并記錄;步驟S24、根據(jù)任務(wù)執(zhí)行時長(對于實時系統(tǒng)而言,某一任務(wù)正常執(zhí)行的時長是一個已知數(shù)),計算出任務(wù)的超時時間并存儲;具體計算方法為任務(wù)超時時間=定時器當(dāng)前時間+任務(wù)執(zhí)行時長+預(yù)留的時間裕量;
步驟S25、任務(wù)執(zhí)行;步驟S26、系統(tǒng)判斷任務(wù)是否執(zhí)行完畢,若是,則執(zhí)行步驟S27,否則,執(zhí)行步驟S28;步驟S27、設(shè)置任務(wù)狀態(tài)為“停止監(jiān)控”;步驟S28、保持任務(wù)狀態(tài)為“啟動監(jiān)控”;當(dāng)任務(wù)狀態(tài)為“啟動監(jiān)控”時,包含兩種情況其一是該任務(wù)正在正常執(zhí)行中,其二是該任務(wù)由于被掛起而不能正常結(jié)束,無法運(yùn)行到“停止監(jiān)控”狀態(tài)。
圖3為對實施例一中任務(wù)運(yùn)行狀態(tài)的監(jiān)控流程,包括如下步驟步驟S31、系統(tǒng)運(yùn)行清狗函數(shù),執(zhí)行清狗操作;步驟S32、系統(tǒng)在執(zhí)行清狗操作時,檢測任務(wù)狀態(tài)是否為“啟動監(jiān)控”,若否,則執(zhí)行步驟S36;否則,繼續(xù)下列步驟;步驟S33、讀取定時器的當(dāng)前時間,并與存儲的任務(wù)超時時間比較;步驟S34、若比較結(jié)果為任務(wù)已超時,則執(zhí)行步驟S35;否則,執(zhí)行步驟S36;步驟S35、系統(tǒng)執(zhí)行超時處理流程,如給出報警信息等;步驟S36、結(jié)束該次監(jiān)控流程。
上述實施例一是采用定時器和清狗操作來實現(xiàn)對任務(wù)掛起狀態(tài)的監(jiān)控的。該方法可以對多個任務(wù)的運(yùn)行進(jìn)行監(jiān)控,在每個被監(jiān)控任務(wù)開始啟動時為其單獨(dú)設(shè)置一個定時器,根據(jù)定時器的當(dāng)前時間和該任務(wù)的執(zhí)行時長,設(shè)置定時器的超時時間,當(dāng)系統(tǒng)執(zhí)行清狗操作時,若任務(wù)的狀態(tài)為“啟動監(jiān)控”,則分別讀取任務(wù)對應(yīng)定時器的當(dāng)前時間,并與超時時間比較來判斷任務(wù)是否已超時。該方法也可以采用多個任務(wù)共用一個定時器來實現(xiàn)時間監(jiān)控,在每個任務(wù)啟動時,記錄其開始時間和超時時間,當(dāng)系統(tǒng)執(zhí)行清狗操作時,讀取定時器的當(dāng)前時間分別與各任務(wù)的超時時間比較來判斷任務(wù)是否已超時。
需要說明的是,如果CPU提供的硬件定時器已經(jīng)被用完,那么也可以通過邏輯提供一個硬件定時器來實現(xiàn)上述方案。
實施例二采用系統(tǒng)時間和清狗操作來實現(xiàn)對任務(wù)掛起狀態(tài)的監(jiān)控。
在該實施例二中,需要預(yù)先在系統(tǒng)中設(shè)置一張“任務(wù)超時時間表”,將啟動任務(wù)及其對應(yīng)的超時時間存入到該“任務(wù)超時時間表”中,圖4為實施例二中任務(wù)執(zhí)行流程圖,包括如下步驟步驟S41、操作系統(tǒng)對任務(wù)進(jìn)行調(diào)度,啟動任務(wù)的運(yùn)行;步驟S42、如果該任務(wù)為重要任務(wù)或有必要對該任務(wù)的運(yùn)行狀態(tài)進(jìn)行監(jiān)控,則設(shè)置該任務(wù)的運(yùn)行狀態(tài)為“啟動監(jiān)控”;具體的設(shè)置方法如上所述;步驟S43、若選擇對該任務(wù)進(jìn)行監(jiān)控,則計算出該任務(wù)的超時時間;具體計算方法為任務(wù)超時時間=系統(tǒng)當(dāng)前時間+任務(wù)執(zhí)行時長+預(yù)留的時間裕量;并將計算結(jié)果存入所述“任務(wù)超時時間表”中;步驟S44、任務(wù)執(zhí)行;步驟S45、系統(tǒng)判斷任務(wù)是否執(zhí)行完畢,若否,執(zhí)行步驟S46;否則執(zhí)行步驟S47;步驟S46、保持任務(wù)狀態(tài)為“啟動監(jiān)控”;步驟S47、設(shè)置任務(wù)狀態(tài)為“停止監(jiān)控”。
圖5為對實施例二中任務(wù)運(yùn)行狀態(tài)的監(jiān)控流程,包括如下步驟步驟S51、系統(tǒng)運(yùn)行清狗函數(shù),執(zhí)行清狗操作;步驟S52、系統(tǒng)在執(zhí)行清狗操作時,檢測任務(wù)狀態(tài)是否為“啟動監(jiān)控”,若否,則執(zhí)行步驟S56;否則,繼續(xù)下列步驟;步驟S53、比較系統(tǒng)當(dāng)前時間和“任務(wù)超時時間表”中存儲的任務(wù)超時時間;步驟S54、若比較結(jié)果為任務(wù)已超時,則執(zhí)行步驟S55;否則,執(zhí)行步驟S56;步驟S55、系統(tǒng)執(zhí)行超時處理流程,如給出報警信息等;步驟S56、結(jié)束該次監(jiān)控流程。
該方法可以對多個任務(wù)的運(yùn)行進(jìn)行監(jiān)控,在每個被監(jiān)控任務(wù)開始啟動時將該任務(wù)標(biāo)識、啟動時間和計算出的超時時間填入所述“任務(wù)超時時間表”中,當(dāng)系統(tǒng)執(zhí)行清狗操作時,若任務(wù)的狀態(tài)為“啟動監(jiān)控”,則分別讀取各任務(wù)的超時時間并與系統(tǒng)當(dāng)前時間比較,判斷任務(wù)是否超時。另外,對于“任務(wù)超時時間表”存儲的任務(wù),若其執(zhí)行狀態(tài)為“停止監(jiān)控”,則可刪除對應(yīng)記錄,以減小該“任務(wù)超時時間表”需要的存儲空間并提高系統(tǒng)的查表效率。
本發(fā)明方法之所以在清狗函數(shù)中對任務(wù)執(zhí)行時間進(jìn)行監(jiān)控,是因為無論實時操作系統(tǒng)是采用清狗任務(wù)清狗還是其他方式清狗,清狗函數(shù)都是能夠及時得到執(zhí)行的,從而實現(xiàn)對系統(tǒng)各任務(wù)運(yùn)行狀態(tài)的有效監(jiān)控。如果清狗任務(wù)本身被掛起或者清狗操作本身無法再正常執(zhí)行,則系統(tǒng)會因為無法清狗而導(dǎo)致“看門狗”(Watchdog)復(fù)位整個系統(tǒng),使系統(tǒng)重新運(yùn)行,從而達(dá)到系統(tǒng)自恢復(fù)的目的。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.一種實時操作系統(tǒng)中任務(wù)掛起狀態(tài)監(jiān)控方法,包括以下步驟A、被監(jiān)控任務(wù)啟動時,系統(tǒng)根據(jù)其啟動時間和任務(wù)執(zhí)行時長,確定出該任務(wù)的超時時間;B、系統(tǒng)執(zhí)行清狗操作時,若判斷出被監(jiān)控任務(wù)超時,則確定該任務(wù)已產(chǎn)生異常并被操作系統(tǒng)掛起。
2.如權(quán)利要求1所述的方法,其特征在于,所述系統(tǒng)中設(shè)置有監(jiān)控定時器;所述步驟A中,當(dāng)任務(wù)啟動時,根據(jù)定時器的當(dāng)前時間和任務(wù)執(zhí)行時長,計算并保存該任務(wù)的超時時間;所述步驟B中,系統(tǒng)執(zhí)行清狗操作時,讀取并比較定時器的當(dāng)前時間和保存的超時時間,判斷被監(jiān)控任務(wù)是否超時。
3.如權(quán)利要求2所述的方法,其特征在于,所述監(jiān)控定時器采用系統(tǒng)中CPU內(nèi)部提供的定時器或為設(shè)置的外部邏輯定時器。
4.如權(quán)利要求3所述的方法,其特征在于,所述系統(tǒng)中為每一個被監(jiān)控任務(wù)單獨(dú)設(shè)置一個定時器或多個任務(wù)共用一個定時器。
5.如權(quán)利要求2所述的方法,其特征在于,所述步驟A中還包括有選擇是否啟動任務(wù)監(jiān)控的步驟;若選擇對該任務(wù)進(jìn)行監(jiān)控,則記錄任務(wù)狀態(tài)為啟動監(jiān)控;當(dāng)該任務(wù)執(zhí)行完畢后,記錄任務(wù)狀態(tài)為停止監(jiān)控;否則,記錄任務(wù)狀態(tài)為不監(jiān)控;所述步驟B包括系統(tǒng)執(zhí)行清狗操作時,獲取任務(wù)狀態(tài)信息,若為啟動監(jiān)控,則讀取并比較定時器的當(dāng)前時間和保存的超時時間,判斷該任務(wù)是否超時。
6.如權(quán)利要求1所述的方法,其特征在于,所述系統(tǒng)中設(shè)置有任務(wù)超時時間表;所述步驟A中,當(dāng)任務(wù)啟動時,根據(jù)系統(tǒng)當(dāng)前時間和任務(wù)執(zhí)行時長,計算出該任務(wù)的超時時間,并存入所述任務(wù)超時時間表中;所述步驟B中,系統(tǒng)執(zhí)行清狗操作時,比較系統(tǒng)當(dāng)前時間和所述任務(wù)超時時間表中存儲的超時時間,判斷被監(jiān)控任務(wù)是否超時。
7.如權(quán)利要求6所述的方法,其特征在于,所述步驟A中,當(dāng)任務(wù)啟動時,還包括有選擇是否啟動任務(wù)監(jiān)控的步驟;系統(tǒng)僅對選擇進(jìn)行監(jiān)控的任務(wù),計算出超時時間,并存入所述任務(wù)超時時間表中。
8.如權(quán)利要求6或7所述的方法,其特征在于,還包括任務(wù)執(zhí)行完畢后,刪除該任務(wù)在所述任務(wù)超時時間表中對應(yīng)記錄的步驟。
9.如權(quán)利要求1所述的方法,其特征在于,所述任務(wù)的超時時間為任務(wù)的啟動時間加上該任務(wù)的執(zhí)行時長和預(yù)留的時間裕量。
全文摘要
本發(fā)明有關(guān)一種實時操作系統(tǒng)中任務(wù)掛起狀態(tài)監(jiān)控方法,包括A.被監(jiān)控任務(wù)啟動時,系統(tǒng)根據(jù)其啟動時間和任務(wù)執(zhí)行時長,確定出該任務(wù)的超時時間;B.系統(tǒng)執(zhí)行清狗操作時,若判斷出被監(jiān)控任務(wù)超時,則確定該任務(wù)已產(chǎn)生異常并被操作系統(tǒng)掛起。采用本發(fā)明的方法,可以實時地對實時操作系統(tǒng)中的任務(wù)進(jìn)行監(jiān)控,避免實時系統(tǒng)出現(xiàn)部分關(guān)鍵任務(wù)掛起而毫無所知的問題,從而保證實時系統(tǒng)工作正常。
文檔編號G06F9/46GK1855067SQ20051006657
公開日2006年11月1日 申請日期2005年4月28日 優(yōu)先權(quán)日2005年4月28日
發(fā)明者童運(yùn)民, 葉榮標(biāo), 鄭朝暉 申請人:華為技術(shù)有限公司