优先级反转和解决方法
生活随笔
收集整理的這篇文章主要介紹了
优先级反转和解决方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
優(yōu)先級反轉(zhuǎn)的描述:
假設(shè)任務(wù)1,任務(wù)2,任務(wù)3;他們的優(yōu)先級順序分別為1 > 2 > 3。有一個稀缺資源S,S由一個信號量控制為互斥訪問。
以上可以看出,任務(wù)2雖然比任務(wù)1優(yōu)先級低,但是比任務(wù)1優(yōu)先執(zhí)行。也就是說任務(wù)1的優(yōu)先級被降低到了任務(wù)3的級別。
分析:
由于稀缺資源S的獨占性,任務(wù)3在申請到資源后,任務(wù)1必然會在任務(wù)3釋放資源后才能執(zhí)行完成。而任務(wù)2肯定會搶占任務(wù)3的執(zhí)行。這個時候,要想任務(wù)1比任務(wù)2之前執(zhí)行,有兩種方法:任務(wù)3釋放資源,任務(wù)2不能搶占任務(wù)3。
- 任務(wù)3釋放資源。這條路走不通,因為獨占資源沒有操作完成就釋放,要么回滾,要么出錯。(X)
- 任務(wù)2不能搶占任務(wù)3。提升任務(wù)3的優(yōu)先級高于任務(wù)2就可以了。(V)提高到多少?假如任務(wù)1和任務(wù)5共搶資源S,那么任務(wù)2、3、4都有可能搶去任務(wù)5的執(zhí)行權(quán),所以任務(wù)提升一定要和資源S被申請的最高優(yōu)先級平等或者大于。對于有相同優(yōu)先級的內(nèi)核來說,任務(wù)5提升到任務(wù)1的優(yōu)先級即可,對于優(yōu)先級單一的內(nèi)核,如ucos,就要提升到高一點。
解決方法:
總結(jié)
以上是生活随笔為你收集整理的优先级反转和解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于CPU Cache——程序猿需要知道
- 下一篇: OSTimeTick()函数解析