[發(fā)明專利]檢測操作系統(tǒng)中任務(wù)死循環(huán)的方法及操作系統(tǒng)有效
| 申請?zhí)枺?/td> | 201010207176.6 | 申請日: | 2010-06-23 |
| 公開(公告)號: | CN101853191A | 公開(公告)日: | 2010-10-06 |
| 發(fā)明(設(shè)計(jì))人: | 曾健 | 申請(專利權(quán))人: | 邁普通信技術(shù)股份有限公司 |
| 主分類號: | G06F11/00 | 分類號: | G06F11/00 |
| 代理公司: | 成都虹橋?qū)@聞?wù)所 51124 | 代理人: | 鄒裕蓉 |
| 地址: | 610041 四川省*** | 國省代碼: | 四川;51 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 檢測 操作系統(tǒng) 任務(wù) 循環(huán) 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)操作系統(tǒng),尤其涉及基于任務(wù)優(yōu)先級搶占的操作系統(tǒng)中死循環(huán)檢測技術(shù)。
背景技術(shù)
在基于任務(wù)優(yōu)先級調(diào)度策略的操作系統(tǒng)中,當(dāng)高優(yōu)先級任務(wù)處于就緒狀態(tài)時(shí),低優(yōu)先級任務(wù)是肯定不能得到調(diào)度的。一股情況下,高優(yōu)先級任務(wù)不會一直運(yùn)行,任務(wù)的設(shè)計(jì)者會通過主動或被動的方式放棄CPU的執(zhí)行,以使得低優(yōu)先級的任務(wù)能夠得到執(zhí)行。任務(wù)主動放棄CPU的形式一股為:延遲自身的執(zhí)行,等待一段時(shí)間再恢復(fù)執(zhí)行;或者因?yàn)榈却硞€(gè)事件而阻塞自己。被動的形式主要是:該任務(wù)被更高優(yōu)先級任務(wù)搶占。當(dāng)高優(yōu)先級任務(wù)由于設(shè)計(jì)或編碼錯(cuò)誤導(dǎo)致出現(xiàn)死循環(huán),并且死循環(huán)中的代碼都沒有主動放棄CPU的行為,那么低優(yōu)先級任務(wù)將得不到執(zhí)行,導(dǎo)致整個(gè)系統(tǒng)運(yùn)行不正常。
為了檢測死循環(huán),現(xiàn)有的方法是通過時(shí)鐘中斷檢測任務(wù)連續(xù)運(yùn)行時(shí)長來檢測死循環(huán),并進(jìn)行死循環(huán)的處理。如果時(shí)鐘中斷檢測到任務(wù)連續(xù)運(yùn)行時(shí)長超過設(shè)定的閾值,則認(rèn)為該任務(wù)出現(xiàn)死循環(huán),然后產(chǎn)生中斷以記錄該任務(wù)的相關(guān)任務(wù)信息,并進(jìn)行相應(yīng)的處理。具體步驟是,在時(shí)鐘中斷時(shí),記錄當(dāng)前正在運(yùn)行的任務(wù)的運(yùn)行時(shí)長,如果任務(wù)發(fā)生切換則將該任務(wù)的運(yùn)行時(shí)長清零;如果時(shí)鐘中斷時(shí)檢測發(fā)現(xiàn)任務(wù)連續(xù)運(yùn)行時(shí)長超于預(yù)定的閾值,則認(rèn)為任務(wù)出現(xiàn)死循環(huán)。在檢測出死循環(huán)任務(wù)后,獲取死循環(huán)任務(wù)控制塊信息、寄存器信息、堆棧信息等,通過寄存器信息獲取任務(wù)調(diào)用棧信息,然后進(jìn)行記錄以便進(jìn)行問題定位。
上述方法對死循環(huán)的檢測不全面。當(dāng)被檢測任務(wù)不是連續(xù)運(yùn)行,而是斷斷續(xù)續(xù)時(shí),雖然該任務(wù)可能已經(jīng)處于死循環(huán)狀態(tài),但是因?yàn)槠溥€是會暫時(shí)被動放棄CPU。如,某一任務(wù)已經(jīng)出現(xiàn)死循環(huán),但因?yàn)橛懈邇?yōu)先級任務(wù)存在,該死循環(huán)任務(wù)仍然會暫時(shí)停止,此時(shí),現(xiàn)有的死循環(huán)檢測方法由于該死循環(huán)任務(wù)已暫時(shí)放棄CPU的控制,則該任務(wù)的運(yùn)行時(shí)長被清零,死循環(huán)漏檢。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是,提供一種更為全面的任務(wù)死循環(huán)的檢測方法以及實(shí)現(xiàn)該方法的操作系統(tǒng)。
本發(fā)明為解決上述技術(shù)問題所提供的技術(shù)方案是,檢測操作系統(tǒng)中任務(wù)死循環(huán)的方法,其特征在于,包括以下步驟:
a、系統(tǒng)定期啟動最高優(yōu)先級的檢測任務(wù);
b、檢測任務(wù)檢查每個(gè)任務(wù)的就緒狀態(tài)累計(jì)時(shí)間,就緒狀態(tài)累計(jì)時(shí)間大于閾值的任務(wù)被判斷出現(xiàn)死循環(huán)。
不同于現(xiàn)有的死循環(huán)檢測方法通過對任務(wù)連續(xù)運(yùn)行時(shí)長與閾值比較來判斷是否出現(xiàn)死循環(huán),本發(fā)明通過就緒狀態(tài)累計(jì)時(shí)間長度與閾值比較來判斷是否出現(xiàn)死循環(huán)。本發(fā)明基于的原理是,優(yōu)先級搶占式操作系統(tǒng)中,當(dāng)有任務(wù)發(fā)生死循環(huán)而不會主動放棄CPU時(shí),該任務(wù)在任何情況下都處于就緒狀態(tài)。通過統(tǒng)計(jì)一個(gè)任務(wù)的就緒狀態(tài)累計(jì)時(shí)間長度來進(jìn)行死循環(huán)判斷可以避免因被動放棄CPU的死循環(huán)的漏檢。
優(yōu)選的,系統(tǒng)發(fā)生任務(wù)切換時(shí),更新放棄CPU控制權(quán)的任務(wù)的就緒狀態(tài)累計(jì)時(shí)間。
將對就緒狀態(tài)累計(jì)時(shí)間的統(tǒng)計(jì)放在任務(wù)切換時(shí),相對于在時(shí)鐘中斷時(shí)進(jìn)行就緒狀態(tài)累計(jì)時(shí)間的統(tǒng)計(jì)更優(yōu)。當(dāng)然,如果在時(shí)鐘中斷時(shí)進(jìn)行統(tǒng)計(jì)也是可行的,但是時(shí)鐘終端的統(tǒng)計(jì)未考慮到任務(wù)可能因?yàn)闀r(shí)鐘中斷之外的原因而發(fā)生切換的情況。所以,在任務(wù)切換時(shí)進(jìn)行就緒狀態(tài)累計(jì)時(shí)間的統(tǒng)計(jì),能使得死循環(huán)的檢測更為全面,進(jìn)一步避免漏檢。
任務(wù)的就緒狀態(tài)累計(jì)時(shí)間的更新方式為:
對于放棄CPU控制權(quán)的任務(wù),且該任務(wù)保持就緒狀態(tài),將該任務(wù)本次運(yùn)行總時(shí)間累加至就緒狀態(tài)累計(jì)時(shí)間;
對于放棄CPU控制權(quán)的任務(wù),且該任務(wù)未處于就緒狀態(tài),將該任務(wù)的就緒狀態(tài)累計(jì)時(shí)間清零。
就緒狀態(tài)累計(jì)時(shí)間的計(jì)算方式為:
系統(tǒng)針對每一個(gè)任務(wù),記錄其就緒狀態(tài)累計(jì)時(shí)間、本次開始運(yùn)行時(shí)間;
系統(tǒng)發(fā)生任務(wù)切換時(shí),對于放棄CPU控制權(quán)的任務(wù),且該任務(wù)保持就緒狀態(tài),則用當(dāng)前時(shí)間減去本次開始運(yùn)行時(shí)間,得到本次運(yùn)行總時(shí)間,并將本次運(yùn)行總時(shí)間加至就緒狀態(tài)累計(jì)時(shí)間;對于獲得CPU控制權(quán)的任務(wù),將當(dāng)前時(shí)間記錄至該任務(wù)的本次開始運(yùn)行時(shí)間。
本發(fā)明所述檢測出死循環(huán)的情況還包括類死循環(huán)。本發(fā)明將導(dǎo)致了系統(tǒng)運(yùn)行不正常的任務(wù),不論其確為死循環(huán)或類死循環(huán),都統(tǒng)稱為死循環(huán)任務(wù)。所以,為了更有效地對這些死循環(huán)任務(wù)進(jìn)行分析,步驟b中,判斷出死循環(huán)任務(wù)后,檢測任務(wù)每隔一個(gè)TICK運(yùn)行一次,每次運(yùn)行都對死循環(huán)任務(wù)進(jìn)行分析,并獲取該死循環(huán)任務(wù)寄存器的值。讓死循環(huán)任務(wù)不斷運(yùn)行,檢測任務(wù)不斷采樣,得到盡量多的死循環(huán)任務(wù)在各個(gè)時(shí)間點(diǎn)上執(zhí)行的寄存器值,便于從中找到引起異常的直接原因。
針對上述方法,本發(fā)明還提供一種實(shí)現(xiàn)該方法的操作系統(tǒng),包括系統(tǒng)控制模塊、檢測任務(wù)模塊、任務(wù)控制模塊、就緒狀態(tài)累計(jì)時(shí)間計(jì)算模塊;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于邁普通信技術(shù)股份有限公司,未經(jīng)邁普通信技術(shù)股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201010207176.6/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F11-00 錯(cuò)誤檢測;錯(cuò)誤校正;監(jiān)控
G06F11-07 .響應(yīng)錯(cuò)誤的產(chǎn)生,例如,容錯(cuò)
G06F11-22 .在準(zhǔn)備運(yùn)算或者在空閑時(shí)間期間內(nèi),通過測試作故障硬件的檢測或定位
G06F11-28 .借助于檢驗(yàn)標(biāo)準(zhǔn)程序或通過處理作錯(cuò)誤檢測、錯(cuò)誤校正或監(jiān)控
G06F11-30 .監(jiān)控
G06F11-36 .通過軟件的測試或調(diào)試防止錯(cuò)誤
- 任務(wù)協(xié)作裝置及方法
- 用于量化任務(wù)價(jià)值的任務(wù)管理方法及裝置
- 用于運(yùn)行任務(wù)的系統(tǒng)、方法和裝置
- 一種分布式任務(wù)調(diào)度系統(tǒng)及方法
- 任務(wù)信息處理方法
- 一種同步任務(wù)異步執(zhí)行的方法和調(diào)度系統(tǒng)
- 數(shù)據(jù)處理方法、裝置、電子設(shè)備及計(jì)算機(jī)可讀介質(zhì)
- 一種自動分配和推送的任務(wù)管理平臺及方法
- 程序執(zhí)行控制的裝置及方法、終端和存儲介質(zhì)
- 基于會話的任務(wù)待辦方法、系統(tǒng)、電子設(shè)備及存儲介質(zhì)





