優(yōu)先級反轉(zhuǎn)問題以及解決方式_第1頁
優(yōu)先級反轉(zhuǎn)問題以及解決方式_第2頁
優(yōu)先級反轉(zhuǎn)問題以及解決方式_第3頁
優(yōu)先級反轉(zhuǎn)問題以及解決方式_第4頁
優(yōu)先級反轉(zhuǎn)問題以及解決方式_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論