操作系统:优先级反转
(1)什么是優(yōu)先級反轉(zhuǎn)
簡單從字面上來說,就是低優(yōu)先級的任務(wù)先于高優(yōu)先級的任務(wù)執(zhí)行了,優(yōu)先級搞反了。那在什么情況下會生這種情況呢?
假設(shè)三個任務(wù)準(zhǔn)備執(zhí)行,A,B,C,優(yōu)先級依次是A>B>C;
首先:C處于運(yùn)行狀態(tài),獲得CPU正在執(zhí)行,同時占有了某種資源;
其次:A進(jìn)入就緒狀態(tài),因?yàn)閮?yōu)先級比C高,所以獲得CPU,A轉(zhuǎn)為運(yùn)行狀態(tài);C進(jìn)入就緒狀態(tài);
第三:執(zhí)行過程中需要使用資源,而這個資源又被等待中的C占有的,于是A進(jìn)入阻塞狀態(tài),C回到運(yùn)行狀態(tài);
第四:此時B進(jìn)入就緒狀態(tài),因?yàn)閮?yōu)先級比C高,B獲得CPU,進(jìn)入運(yùn)行狀態(tài);C又回到就緒狀態(tài);
第五:如果這時又出現(xiàn)B2,B3等任務(wù),他們的優(yōu)先級比C高,但比A低,那么就會出現(xiàn)高優(yōu)先級任務(wù)的A不能執(zhí)行,反而低優(yōu)先級的B,B2,B3等任務(wù)可以執(zhí)行的奇怪現(xiàn)象,而這就是優(yōu)先反轉(zhuǎn)。
說白了就是,低優(yōu)先級的任務(wù)占有高優(yōu)先級的任務(wù)所需要的資源!某一時刻高、低優(yōu)先級任務(wù)都在就緒,中間優(yōu)先級由于沒有資源關(guān)聯(lián),因此可以運(yùn)行,這就出現(xiàn)了高優(yōu)先級任務(wù)等待低優(yōu)先級任務(wù),也即是低優(yōu)先級任務(wù)由于高優(yōu)先級任務(wù)的執(zhí)行!
(2)如何解決優(yōu)先級反轉(zhuǎn)
高優(yōu)先級任務(wù)A不能執(zhí)行的原因是C霸占了資源,而C如果不能獲得CPU,不釋放資源,那A也只好一直等在那,所以解決優(yōu)先級反轉(zhuǎn)的原則肯定就是讓C盡快執(zhí)行,盡早把資源釋放了。基于這個原則產(chǎn)生了兩個方法:
2.1 優(yōu)先級繼承
當(dāng)發(fā)現(xiàn)高優(yōu)先級的任務(wù)因?yàn)榈蛢?yōu)先級任務(wù)占用資源而阻塞時,就將低優(yōu)先級任務(wù)的優(yōu)先級提升到等待它所占有的資源的最高優(yōu)先級任務(wù)的優(yōu)先級。
2.2 優(yōu)先級天花板
優(yōu)先級天花板是指將申請某資源的任務(wù)的優(yōu)先級提升到可能訪問該資源的所有任務(wù)中最高優(yōu)先級任務(wù)的優(yōu)先級.(這個優(yōu)先級稱為該資源的優(yōu)先級天花板)? ?其實(shí)這里也就是,將C的優(yōu)先級提升到A的優(yōu)先級
2.3 兩者的區(qū)別
優(yōu)先級繼承:只有一個任務(wù)訪問資源時一切照舊,沒有區(qū)別,只有當(dāng)高優(yōu)先級任務(wù)因?yàn)橘Y源被低優(yōu)先級占有而被阻塞時,才會提高占有資源任務(wù)的優(yōu)先級;而優(yōu)先級天花板,不論是否發(fā)生阻塞,都提升,即誰先拿到資源,就將這個任務(wù)提升到該資源的天花板優(yōu)先級。
?
總結(jié)
以上是生活随笔為你收集整理的操作系统:优先级反转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多线程:Executor、Sleep、D
- 下一篇: 系统设计:性能指标、伸缩性、扩展性、可用