優先順序反轉


在TSL機制中,可能存在優先順序反轉的問題。讓我們說有兩個合作進程:P1和P2。

P1的優先順序為2,而P2的優先順序為1,P1較早到達並由CPU排程。由於它是一個共同作業進程,並且希望在臨界區執行,因此它將通過將鎖變數設定為1來進入臨界區。

現在,P2到達就緒佇列。 P2的優先順序高於P1,因此根據優先順序排程,P2被排程並且P1被搶占。 P2也是一個合作進程,並希望在臨界區內執行。

雖然,P1被搶占,但它的鎖變數的值將顯示為1,因為P1沒有完成,它還沒有完成其臨界區。

P1需要完成臨界區,但根據排程演算法,CPU使用P2。 P2要在臨界區執行,但根據同步機制,臨界區是用P1。

這是一種鎖,其中每個進程既不執行也不完成。這種型別的鎖被稱為自旋鎖。

這與死鎖不同,因為它們不處於阻塞狀態。一個處於就緒狀態,另一個處於執行狀態,但兩者都沒有執行。