互斥型信號量專(zhuān)
1.互斥型信號量(mutex)
本文引用地址:http://dyxdggzs.com/article/201609/304507.htm互斥型信號量具備uc/os-ii信號量的所有機制,但還具有其他一些特性。
任務(wù)可利用互斥型信號量來(lái)實(shí)現對共享資源的獨占處理。
Mutex是二值信號量,1表示資源是可以使用的。
2.關(guān)于優(yōu)先級反轉(PIP)
下面概述優(yōu)先級反轉原理:
假設有三個(gè)任務(wù),分別命名為A,B,C;A的優(yōu)先級最高,C的優(yōu)先級最低。任務(wù)A和任務(wù)B處于掛起狀態(tài)(請注意這條件),等待某一事件的發(fā)生,任務(wù)C正在運行。當任務(wù)C等待到共享資源(命名為S1)并使用后,如果任務(wù)A等待得事件到來(lái)之后,由于A(yíng)的優(yōu)先級最高,所以就會(huì )剝奪任務(wù)C的CPU使用權。運行過(guò)程中,任務(wù)A也要使用資源S1,但S1的信號量還被任務(wù)C占用著(zhù),所有任務(wù)A只能進(jìn)入掛起狀態(tài),等待任務(wù)C對S1的信號量的釋放。此時(shí)任務(wù)C得以繼續運行。
同理,任務(wù)B的事件到來(lái)后,會(huì )剝奪任務(wù)C的CPU使用權。任務(wù)B把事情搞定以后,把CPU使用權歸還給任務(wù)B。任務(wù)B又得以繼續運行,任務(wù)B認真處理完畢資源S1后,終于可以釋放S1的信號量。而處于等待該信號量的任務(wù)A馬上得到信號量并開(kāi)始處理共享資源S1。
綜述上面情況,任務(wù)C和任務(wù)A的優(yōu)先級發(fā)生了反轉。而互斥型信號量就是具有解決優(yōu)先級反轉問(wèn)題的特性。
3.UC/OS-II的互斥型信號量由三個(gè)部分組成:
◆一個(gè)標志,指示mutex是否可以使用(0或1)
◆一個(gè)優(yōu)先級,準備一旦高優(yōu)先級的任務(wù)需要這個(gè)mutex,賦予給占有mutex的任務(wù)。
◆一個(gè)等待該mutex的任務(wù)列表。
評論