[發(fā)明專利]嵌入式linux系統(tǒng)用戶態(tài)任務(wù)獨(dú)占的監(jiān)測定位方法有效
申請?zhí)枺?/td> | 201210362848.X | 申請日: | 2012-09-25 |
公開(公告)號: | CN102929770A | 公開(公告)日: | 2013-02-13 |
發(fā)明(設(shè)計(jì))人: | 徐鑫;劉應(yīng)江;劉昊;簡楹;楊紅霞 | 申請(專利權(quán))人: | 烽火通信科技股份有限公司 |
主分類號: | G06F11/34 | 分類號: | G06F11/34 |
代理公司: | 北京捷誠信通專利事務(wù)所(普通合伙) 11221 | 代理人: | 魏殿紳;龐炳良 |
地址: | 430074 湖北省武*** | 國省代碼: | 湖北;42 |
權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
摘要: | |||
搜索關(guān)鍵詞: | 嵌入式 linux 系統(tǒng) 用戶 任務(wù) 獨(dú)占 監(jiān)測 定位 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及嵌入式系統(tǒng),具體涉及嵌入式linux系統(tǒng)用戶態(tài)任務(wù)獨(dú)占的監(jiān)測定位方法。
背景技術(shù)
嵌入式linux系統(tǒng)是將日益流行的Linux操作系統(tǒng)進(jìn)行裁剪修改,使之能在嵌入式計(jì)算機(jī)系統(tǒng)上運(yùn)行的一種操作系統(tǒng)。它繼承了Linux的開放源代碼資源的優(yōu)點(diǎn),又具有嵌入式操作系統(tǒng)的特性,因此,性能優(yōu)異、軟件移植容易、實(shí)時性能和穩(wěn)定性、安全性好,使用嵌入式linux系統(tǒng)開發(fā)新產(chǎn)品周期短,如今已被廣泛的應(yīng)用于工業(yè)制造、過程控制、通訊、儀器、儀表、汽車、船舶、航空、航天、軍事裝備、消費(fèi)類產(chǎn)品等眾多領(lǐng)域。
?Linux支持多任務(wù)(進(jìn)程),通過進(jìn)程調(diào)度進(jìn)行調(diào)度管理。但是,如果某一個任務(wù)在執(zhí)行過程中進(jìn)入死循環(huán)或者始終等待其他資源,則會長時間獨(dú)占CPU,從而導(dǎo)致整個系統(tǒng)死鎖,任何進(jìn)程都無法運(yùn)行。為此,嵌入式linux系統(tǒng)必須對用戶態(tài)任務(wù)獨(dú)占進(jìn)行監(jiān)測,以確保系統(tǒng)正常運(yùn)行。
目前,嵌入式系統(tǒng)針對任務(wù)獨(dú)占監(jiān)測定位主要有以下兩種方法:
第一種方法:通過硬時鐘中斷實(shí)現(xiàn)。即在嵌入式軟件中啟動硬時鐘定時器,并在定時器的中斷服務(wù)例程中循環(huán)監(jiān)控系統(tǒng)中各任務(wù)的消息處理時間是否超過預(yù)定閥值,從而判斷是否有任務(wù)發(fā)生獨(dú)占,之后直接打印信息通知開發(fā)人員任務(wù)獨(dú)占或者向調(diào)試任務(wù)發(fā)送填充有獨(dú)占的任務(wù)標(biāo)識的消息,在調(diào)試任務(wù)中獲取函數(shù)調(diào)用棧信息并輸出。
第二種方法:通過插樁代碼實(shí)現(xiàn)。即在系統(tǒng)中各任務(wù)循環(huán)體的入口處增加統(tǒng)計(jì)變量,每次系統(tǒng)調(diào)度時,該變量的值遞增;然后創(chuàng)建一個高優(yōu)先級的任務(wù),循環(huán)遍歷被監(jiān)控的任務(wù),當(dāng)任務(wù)連續(xù)N次出現(xiàn)統(tǒng)計(jì)變量值不為零、統(tǒng)計(jì)變量值不變的時間超過規(guī)定的閥值、CPU占用率超過閥值且任務(wù)處于運(yùn)行狀態(tài),則判定任務(wù)發(fā)生獨(dú)占,之后輸出獨(dú)占的異常信息。
第一種方法有如下主要弊端:首先,要求嵌入式系統(tǒng)必須具有硬時鐘中斷功能,而嵌入式LINUX系統(tǒng)在用戶態(tài)下不存在硬時鐘中斷功能;其次,對監(jiān)測的任務(wù)具有局限性,只能監(jiān)測到具有處理消息功能的任務(wù)。
第二種方法有如下主要弊端:首先,任務(wù)統(tǒng)計(jì)變量如果需要在每次調(diào)度的時候遞增,則需要在系統(tǒng)調(diào)度時設(shè)置,而不是在任務(wù)循環(huán)體入口處設(shè)置,這就需要修改內(nèi)核調(diào)度代碼;其次,任務(wù)規(guī)格受限,需要循環(huán)遍歷系統(tǒng)中所有任務(wù),對這些任務(wù)排序并監(jiān)測,當(dāng)系統(tǒng)中任務(wù)較多時,該方法會占用較多資源,效率較低。
由此可見,現(xiàn)有嵌入式系統(tǒng)針對任務(wù)獨(dú)占監(jiān)測定位的方法應(yīng)用到嵌入式LINUX系統(tǒng)上時,存在較大的缺陷。
發(fā)明內(nèi)容
為了解決上述技術(shù)問題,本發(fā)明所采用的技術(shù)方案是提供一種嵌入式linux系統(tǒng)用戶態(tài)任務(wù)獨(dú)占的監(jiān)測定位方法,包括以下步驟:
在任務(wù)切換時,記錄正在運(yùn)行的任務(wù)的ID和任務(wù)開始運(yùn)行時的系統(tǒng)TICK;?
啟動高優(yōu)先級監(jiān)測任務(wù)循環(huán)監(jiān)測系統(tǒng)中正在運(yùn)行的任務(wù),計(jì)算任務(wù)運(yùn)行時長,并根據(jù)任務(wù)的運(yùn)行時長是否大于預(yù)先設(shè)定的閥值獲得該任務(wù)是否為獨(dú)占任務(wù),如該任務(wù)為獨(dú)占任務(wù),則向該任務(wù)發(fā)送控制信號,啟動獨(dú)占任務(wù)定位處理函數(shù),所述運(yùn)行時長為:任務(wù)當(dāng)前時刻的系統(tǒng)TICK與任務(wù)開始運(yùn)行時的系統(tǒng)TICK之間的差值;
根據(jù)所述控制信號啟動獨(dú)占任務(wù)定位處理函數(shù)獲取所述獨(dú)占任務(wù)的ID,并實(shí)時打印和保存所述獨(dú)占任務(wù)的任務(wù)名、上下文以及函數(shù)調(diào)用關(guān)系。
在上述方法中,根據(jù)正在運(yùn)行任務(wù)的任務(wù)屬性和連續(xù)兩次高優(yōu)先級監(jiān)測的任務(wù)是否發(fā)生任務(wù)切換,判斷該任務(wù)是搶占式任務(wù)還是非搶占式任務(wù);如果該任務(wù)是搶占式任務(wù),則執(zhí)行搶占式任務(wù)的獨(dú)占監(jiān)測;否則進(jìn)行當(dāng)前連續(xù)運(yùn)行任務(wù)的獨(dú)占監(jiān)測。
在上述方法中,獨(dú)占任務(wù)定位處理函數(shù)和處理流程如下:
根據(jù)所述獨(dú)占任務(wù)的ID,讀取/proc/目錄下與所述獨(dú)占任務(wù)對應(yīng)的maps文件,獲取所述獨(dú)占任務(wù)對應(yīng)的所有虛擬內(nèi)存起始地址和終止地址;
根據(jù)linux內(nèi)核封裝的上下文信息,獲取所述獨(dú)占任務(wù)的當(dāng)前指令地址和函數(shù)調(diào)用棧基值,根據(jù)當(dāng)前指令地址和內(nèi)存映射信息,獲得當(dāng)前指令所在靜態(tài)或動態(tài)庫的文件名和當(dāng)前指令相對庫文件的偏移地址;
根據(jù)函數(shù)調(diào)用時的入棧和出棧規(guī)律以及獲取到的函數(shù)調(diào)用棧基值,逐級獲取每一層函數(shù)調(diào)用棧信息,并實(shí)時打印和保存當(dāng)前任務(wù)的任務(wù)名、上下文以及函數(shù)調(diào)用關(guān)系。
本發(fā)明,克服了需要操作系統(tǒng)提供硬時鐘中斷功能的限制,且不需要修改操作系統(tǒng)內(nèi)核代碼,完全在用戶態(tài)下實(shí)現(xiàn)了任務(wù)獨(dú)占監(jiān)測,并通過提供多級函數(shù)調(diào)用棧信息,為精確定位任務(wù)獨(dú)占發(fā)生的位置提供多級調(diào)用函數(shù)名、源文件、行號等重要信息。
附圖說明
圖1為本發(fā)明提供的嵌入式linux系統(tǒng)用戶態(tài)任務(wù)獨(dú)占的監(jiān)測定位方法流程圖;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于烽火通信科技股份有限公司,未經(jīng)烽火通信科技股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210362848.X/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:帶有平抑裝置的LED照明裝置
- 下一篇:手電筒
- 同類專利
- 專利分類
- LINUX內(nèi)核動態(tài)加載方法
- 一種Linux嵌入式系統(tǒng)的安全啟動方法
- 一種加快嵌入式Linux系統(tǒng)啟動的方法
- Linux文件系統(tǒng)的多點(diǎn)備份和實(shí)時保護(hù)方法
- 基于硬件的Linux軟件開發(fā)系統(tǒng)及其構(gòu)建方法
- 將VxWorks任務(wù)移植到Linux的方法及裝置
- 一種Linux內(nèi)核接管socket鏈接的方法和裝置
- 一種Linux系統(tǒng)的備份和還原方法
- 一種基于Linux系統(tǒng)盤的寫過濾系統(tǒng)和方法
- 一種基于Linux系統(tǒng)盤的熱插拔方法和系統(tǒng)