版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、(1)8Task3Task完畢,鎖,T維續(xù)(1Task2運(yùn)行完畢,TASK3維續(xù)運(yùn)行(12)假設(shè)有個任務(wù)設(shè),行首先去獲得輪到因?yàn)橥炅瞬泡喌絻?yōu)先級最咼,優(yōu)先級其次,優(yōu)先級最低。假k2阻塞在內(nèi)核對象上比如等,然后輪到去運(yùn)獲得了一個鎖,然后運(yùn)行了一段時間后,中斷喚醒了出中斷的時候馬上跑因?yàn)榈膬?yōu)先級高,然后也嘗試鎖,,但是已經(jīng)得到了這個鎖,所以只能睡眠,繼續(xù)跑,這個時候中斷喚醒了出中斷的時候輪到的優(yōu)先級比要高。運(yùn)行完了然后給要咼。跑,去跑,跑去跑。優(yōu)先級反轉(zhuǎn)問題以及解決方式優(yōu)先級反轉(zhuǎn)的問題是每一個實(shí)時操作系統(tǒng)所必須考慮到的問題,也是嵌入式軟件面試所常提問的問題。下面會詳細(xì)闡述優(yōu)先級反轉(zhuǎn)產(chǎn)生的根源,以及
2、解決方式。首先來談?wù)剝?yōu)先級反轉(zhuǎn)問題的出現(xiàn)的方式。下圖是演示優(yōu)先級反轉(zhuǎn)出現(xiàn)的問題。Task1Taskl搶占Task3占有,TasklR能睡(10)(11)Task3并運(yùn)行眠OTask2Th“I申請鎖,但被Task3被Task2占以上的現(xiàn)象就是一個完整的優(yōu)先級反轉(zhuǎn)的問題出現(xiàn)的現(xiàn)象,整個邏輯貌似都是完全沒有任何問題的,唯一的問題就是跑完了再去跑也就是說插了一腳。的優(yōu)先級比起要低的,這樣的話要同時承受和跑完才能繼續(xù)跑。承受跑完是沒有任何爭議的,因?yàn)榕R界區(qū)的原因,只能等跑完,但是等待跑完確是不應(yīng)該的,因?yàn)檫@兩個任務(wù)之間毫無關(guān)系。解決優(yōu)先級反轉(zhuǎn)的方式有兩種,第一種是優(yōu)先級置頂?shù)姆椒ǎ诙N是優(yōu)先級繼承的方
3、法,詳細(xì)請參考以下mutex章節(jié)。utexX作原理以及應(yīng)用mutex的出現(xiàn)是為了解決優(yōu)先級反轉(zhuǎn)的問題,由于優(yōu)先級反轉(zhuǎn)對實(shí)時性影響太大,所以mutex的穩(wěn)定性直接影響了實(shí)時性??v觀目前多種實(shí)時操作系統(tǒng)mutex的設(shè)計原理是多多少少有一點(diǎn)問題的,很多t沒有實(shí)現(xiàn)mutex優(yōu)先級逐步還原的問題,導(dǎo)致了實(shí)時性以及其它的一些邏輯錯誤等等。的mutex模塊成功彌補(bǔ)了其它實(shí)時系統(tǒng)在這方面的不足。的mutex同時支持優(yōu)先級置頂和優(yōu)先級繼承的方式來解決優(yōu)先級反轉(zhuǎn)的問題。優(yōu)先級置頂方法需要給每一個mutex靜態(tài)指定一個優(yōu)先級,第一個獲得mutex的任務(wù)會把優(yōu)先級提高到靜態(tài)指定的優(yōu)先級。優(yōu)先級置頂?shù)姆椒ㄐ枰迅偁庍@個
4、mutex的所有任務(wù)優(yōu)先級都要搞清楚,通常適用于系統(tǒng)中運(yùn)行的任務(wù)優(yōu)先級不改變的情況。如果一個任務(wù)會獲得多層嵌套的mutex鎖,這個時候使用優(yōu)先級繼承的方法設(shè)計不好的話容易死鎖,但是使用優(yōu)先級置頂?shù)姆椒軌虮苊獯朔N情況出現(xiàn)。下圖是任務(wù)t3獲得mutxl的情況,示例如下假設(shè)訪問mutexl的任務(wù)有tltt3t1的優(yōu)先級為0t的優(yōu)先級為,t3優(yōu)先級為30,數(shù)字越小表明優(yōu)先級越高。這個時候mutex1指定的優(yōu)先級置頂?shù)膬?yōu)先級是19,即比tlt的優(yōu)先級要高。假設(shè)任務(wù)t3的首先獲得mutexl這個時候任務(wù)的優(yōu)先級會提升為,所以會運(yùn)行完之后釋放鎖輪到運(yùn)行綜上所述,優(yōu)先級置頂?shù)脑捫枰孪褥o態(tài)分析清楚,的確是比
5、較麻煩的,好處是系統(tǒng)可以一目了然,不存在暗箱,做到系統(tǒng)每一個點(diǎn)都是很清楚。再來談?wù)剝?yōu)先級繼承的方法,所謂優(yōu)先級繼承的含義是,當(dāng)優(yōu)先級反轉(zhuǎn)發(fā)生的時候,低優(yōu)先級任務(wù)的優(yōu)先級被自動提升為高優(yōu)先任務(wù)的優(yōu)先級,示例如下:Task1|搶占了然后也嘗鬱獲得鎖,因?yàn)橐呀?jīng)獲得了鎖,所以只能睡眠,就在此時,任務(wù)的優(yōu)先級被任務(wù)拉升為。任務(wù)會接著繼續(xù)運(yùn)行,如果此時被喚醒,因?yàn)閮?yōu)先級低于所以不會搶占所以會繼續(xù)運(yùn)行直到釋放鎖,然后的優(yōu)先級會被還原到最初值,接著輪到最高優(yōu)先級任務(wù)運(yùn)行。整個過程的關(guān)鍵是中間優(yōu)先級的任務(wù)不會打斷也就避免了優(yōu)先級反轉(zhuǎn)的問題。優(yōu)先級反轉(zhuǎn)的問題掌握著實(shí)時系統(tǒng)的命脈,這個問題上處理的不當(dāng)?shù)迷?,用戶的?/p>
6、統(tǒng)實(shí)時性是得不到任何保障的,縱觀目前的在這個問題上很多都是處理的不當(dāng)?shù)?,具體以下分析代碼會細(xì)談這個問題。應(yīng)用函數(shù)功能:此函數(shù)創(chuàng)建了一個此函數(shù)的參數(shù)有4個,分別含義如下:為實(shí)體控制塊的地址。是這個的名字是指以下的二種之一:指定采用優(yōu)先級置頂?shù)姆椒āV付ú捎脙?yōu)先級繼承的方法。不采用任何方法。如果米用了的話,可以為任何的值。函數(shù)的返回值:示例代碼如下這鎖。個如果不能成功獲得鎖的話,任務(wù)可能會睡眠函數(shù)功能:此函數(shù)會試圖得到一個或者返回。此函數(shù)的參數(shù)有2個,分別含義如下:為實(shí)體控制塊的地址。為具體的超時函數(shù),有以下選擇:得不到立馬返回為超時時間,單位為系統(tǒng),得不到時經(jīng)過一定的超時時間會返回。得不到時會永
7、遠(yuǎn)阻塞住。函數(shù)的返回值:成功得到得不到而且為得不到而且系統(tǒng)的搶占關(guān)了。得不到期間,睡眠的時候被異常中斷。得不到期間超時了。得不到期間,該對象被意外刪除掉。函數(shù)功能釋放一個函數(shù)的返回值::成功釋放沒有讓原先持有者釋放。此函數(shù)的參數(shù)有為個,含義如下實(shí)體控制塊的地址。函數(shù)功能:刪除一個如果有任務(wù)阻塞在會喚醒這些任務(wù)并可能還原鎖獲得者原先的優(yōu)先級。系統(tǒng)內(nèi)部函數(shù)功能:改變一個任務(wù)優(yōu)先級的時候會調(diào)用到此函數(shù)。這個函數(shù)主要限制任務(wù)優(yōu)先級的改變,因?yàn)楫?dāng)一個任務(wù)持有的時候,優(yōu)先級是不能被隨意設(shè)置成任何值的,不然會導(dǎo)致優(yōu)先級反轉(zhuǎn)的問題出現(xiàn)。所以必須要有限制的改變。當(dāng)然一個任務(wù)釋放了所有鎖的時候,優(yōu)先級會自動變?yōu)樗?/p>
8、設(shè)置的優(yōu)先級。函數(shù)的返回值::優(yōu)先級超越了該對象優(yōu)先級置頂?shù)膬?yōu)先級。:被限制過的優(yōu)先級。此函數(shù)的參數(shù)有3個,分別含義如下:被改變優(yōu)先級的任務(wù)的控制塊地址。:改變成具體的優(yōu)先級。錯誤填充,如果可能的話。函數(shù)功能:此函數(shù)的功能是釋放并可能逐步還原這個任務(wù)的優(yōu)先級。此函數(shù)的參數(shù)有個,分別含義如下:為釋放的任務(wù):為釋放的對象。函數(shù)功能:如果改變阻塞在上的任務(wù)的優(yōu)先級時會調(diào)用此函數(shù),可能會動態(tài)的改變下持有者的任務(wù)優(yōu)先級。模塊的具體實(shí)現(xiàn)原理配套視頻會詳細(xì)講解,有興趣深入的讀者可以看視頻了解。函數(shù)功能當(dāng)阻塞在獲得這個上的任務(wù)超時,終止,或者被刪除的時候,可能需要重新調(diào)整鎖的任務(wù)優(yōu)先級。此函數(shù)的參數(shù)有1個,含義如下:為阻塞在內(nèi)核對象上的任務(wù)。函數(shù)功能:當(dāng)任務(wù)被刪除時,會調(diào)用此函數(shù)。此函數(shù)會處理這個任務(wù)所獲得的并自動調(diào)整鎖的獲得者。此函數(shù)的參數(shù)有1個,含義如下:為即將被刪除的任務(wù)。對比其它實(shí)時操作系統(tǒng)的比較其它實(shí)時系統(tǒng),比如等占盡了優(yōu)勢,因?yàn)楫?dāng)一個任務(wù)經(jīng)歷兩次以上的優(yōu)先級提升時,其它系統(tǒng)基本都不支持優(yōu)先級的逐步還原,那樣帶來的后果是不能解決優(yōu)先級反轉(zhuǎn)帶來的問題。而且像
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 非營利組織教師志愿者培訓(xùn)方案
- 醫(yī)院外包服務(wù)管理方案
- 建設(shè)工程疏浚作業(yè)安全保障方案
- 2024-2030年中國裝卸起重機(jī)械行業(yè)供需狀況發(fā)展戰(zhàn)略規(guī)劃分析報告
- 城市公共交通儲能方案
- 2024-2030年中國藍(lán)濕牛皮行業(yè)發(fā)展模式及投資策略分析報告版
- 2024-2030年中國茶多酚行業(yè)需求狀況及投資潛力研究報告版
- 2024-2030年中國航空客運(yùn)市場規(guī)模分析及投資戰(zhàn)略建議報告
- 2024-2030年中國自助服務(wù)終端行業(yè)商業(yè)模式分析及未來發(fā)展規(guī)劃研究報告
- 2024-2030年中國脫綠茶行業(yè)競爭格局展望及投資潛力分析報告
- 幼兒園三年發(fā)展規(guī)劃(2024年-2026年)
- 2024-2030年中國重癥監(jiān)護(hù)監(jiān)護(hù)系統(tǒng)行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 2024年艾滋病知識題庫
- 2024年安徽龍亢控股集團(tuán)限公司公開招聘人員13人(高頻重點(diǎn)提升專題訓(xùn)練)共500題附帶答案詳解
- 湖南美術(shù)出版社六年級上冊《書法練習(xí)指導(dǎo)》表格教案
- 投標(biāo)項(xiàng)目進(jìn)度計劃
- 中醫(yī)腦病科缺血性中風(fēng)(腦梗死恢復(fù)期)中醫(yī)診療方案臨床療效分析總結(jié)
- 部編版語文二年級上冊《語文園地三我喜歡的玩具》(教案)
- 軟件開發(fā)項(xiàng)目驗(yàn)收方案
- 崗位整合整治與人員優(yōu)化配置實(shí)施細(xì)則
- 康復(fù)治療技術(shù)的職業(yè)規(guī)劃課件
評論
0/150
提交評論