8. UCOS下優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題

1. 寫(xiě)在前面:

1.1. ucos的進(jìn)程調(diào)度是基于搶占式的,優(yōu)先級(jí)較高的任務(wù)可以搶占系統(tǒng)的內(nèi)核。

1.2. 只是由于搶占式的機(jī)制,導(dǎo)致ucos下的優(yōu)先級(jí)不能相同。

1.3. 優(yōu)先級(jí)反轉(zhuǎn)本質(zhì)上是由互斥信號(hào)量引起,為了解決反轉(zhuǎn)問(wèn)題,內(nèi)核使用了優(yōu)先級(jí)提升方法。讓當(dāng)前獲得互斥信號(hào)量的任務(wù)的優(yōu)先級(jí)短暫提升到系統(tǒng)可以接受的最大優(yōu)先級(jí),盡量讓該任務(wù)快速的完成并釋放信號(hào)量,釋放之后在恢復(fù)為任務(wù)原來(lái)的優(yōu)先級(jí)別.

2. 優(yōu)先級(jí)反轉(zhuǎn)定義:

? ? ? ?在可剝奪性的內(nèi)核中,當(dāng)任務(wù)以獨(dú)占方式使用共享資源的時(shí)候,會(huì)出現(xiàn)低優(yōu)先級(jí)任務(wù)高于高優(yōu)先級(jí)任務(wù)運(yùn)行的情況,這種情況叫做優(yōu)先級(jí)反轉(zhuǎn)。

3. 優(yōu)先級(jí)反轉(zhuǎn)的原因:

? ? ? ?我們假設(shè)有三個(gè)任務(wù)a,b,c,a優(yōu)先級(jí)高于b,b優(yōu)先級(jí)高于c,a和c都需要訪問(wèn)一個(gè)共享資源s,保護(hù)該資源的信號(hào)量為互斥信號(hào)量,假設(shè)當(dāng)前任務(wù)c申請(qǐng)了信號(hào)量訪問(wèn)s,還沒(méi)有釋放,此時(shí)任務(wù)a開(kāi)始運(yùn)行,那么a就會(huì)剝奪c的運(yùn)行而運(yùn)行a,當(dāng)a去訪問(wèn)資源s的時(shí)候,因?yàn)榈貌坏叫盘?hào)量,所以必須釋放以等待信號(hào)量,任務(wù)c得以重新運(yùn)行,到這里流程都是正常的,信號(hào)量的設(shè)計(jì)也是為了滿(mǎn)足這個(gè)功能,但是,當(dāng)任務(wù)c在運(yùn)行并準(zhǔn)備釋放信號(hào)量的時(shí)候,任務(wù)b開(kāi)始運(yùn)行,那么任務(wù)b就要?jiǎng)儕Z任務(wù)c的運(yùn)行,這個(gè)時(shí)候系統(tǒng)就只有b在運(yùn)行,而a能打斷b的運(yùn)行但是需要信號(hào)量,可是c優(yōu)先級(jí)比較低得不到運(yùn)行,這樣,a就只能等到b運(yùn)行完主動(dòng)釋放使用權(quán)才能得到運(yùn)行了.

? ? ? ?到這里問(wèn)題就發(fā)生了,優(yōu)先級(jí)比較高的a在優(yōu)先級(jí)比較低的b運(yùn)行的時(shí)候無(wú)法搶斷,可剝奪性?xún)?nèi)核卻剝奪不了,系統(tǒng)故障,在這種故障極大地降低了系統(tǒng)的實(shí)時(shí)性以上說(shuō)的情況就是操作系統(tǒng)的優(yōu)先級(jí)反轉(zhuǎn)。

4. 如何解決

? ? ? ?而ucos為了解決這種問(wèn)題,在互斥信號(hào)量中引入了優(yōu)先級(jí)提升的方法,他的基本思想是:讓當(dāng)前獲得互斥信號(hào)量的任務(wù)的優(yōu)先級(jí)短暫提升到系統(tǒng)可以接受的最大優(yōu)先級(jí),盡量讓該任務(wù)快速的完成并釋放信號(hào)量,釋放之后在恢復(fù)為任務(wù)原來(lái)的優(yōu)先級(jí)別.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容