linux核心的優先順序繼承協議(pip)和μC/OSII2.52核心的優先順序置頂協議(pcp)

科技小能手發表於2017-11-12

在實時系統中,不確定的阻塞是盡力要避免的,因為這可能影響到任務的實時性,在常規的系統中,如果一個低優先順序的任務佔有了一個獨佔式資源,那麼高優先順序任務請求該資源時必然要阻塞,這是可以的,因為系統相信這個低優先順序的任務總會釋放該資源的,但是在實時系統中,即使再相信資源總會被釋放,實時的要求也 不允許任務被長時間的阻塞,更糟糕的是不確定時長的阻塞,那麼就有必要讓低優先順序任務儘快完成任務釋放資源,在實施中可以用到兩種協議來做到這一點:1. 優先順序繼承協議(pip);2.優先順序置頂協議(pcp)。關於什麼是優先順序反轉我就不多說了,這個概念在任何作業系統都有解釋,可以嘲笑一下 windows nt關於優先順序反轉的解決辦法,極其老土。 

在linux核心中的/kernel/rtmutex.c原始檔實現了pip。所謂的pip就是當一個高優先順序程式請求一個已經被低優先順序程式佔有的資源時,此低優先順序程式繼承高優先順序程式的優先順序。我們先來熟悉一下資料結構,每個資源都表示為一個

struct rt_mutex {

 本文轉自 dog250 51CTO部落格,原文連結:http://blog.51cto.com/dog250/1274042


相關文章