admin 發表於 2023-5-14 17:42:38

9 Ceiling-Priority Protocol

Ceiling-Priority Protocol,也被稱為Priority-Ceiling Protocol,是一種用於處理共享資源問題的實時操作系統調度協議。此協議主要解決的是優先級倒置(Priority Inversion)的問題。

在此協議中,每個共享資源被分配一個優先級天花板(Priority Ceiling)。該優先級天花板是所有可能請求該資源的任務中最高優先級的值。當一個任務獲得該資源的使用權時,它的優先級會提升到這個優先級天花板。在任務釋放資源之前,其他任何優先級低於天花板的任務都無法獲得CPU的控制權。

這種設計有效地防止了優先級倒置的情況。例如,低優先級的任務不能阻止高優先級的任務運行,因為當高優先級的任務需要某個資源時,它會立即獲得最高的優先級。同時,由於優先級天花板的設定,比當前使用資源的任務優先級高的任務也不會被阻塞,因為它們的優先級一定高於所有資源的天花板。

然而,Ceiling-Priority Protocol也有一些限制。例如,它需要知道所有任務的優先級和所有資源的使用情況,這在實踐中可能難以實現。此外,它可能會導致資源的使用效率降低,因為某些任務可能需要等待具有更高天花板的任務釋放資源才能運行。


[*]防止優先級倒置(Priority Inversion):
當一個低優先級的任務獲得一個資源並進入臨界區(Critical Section)時,它的優先級會被提升到該資源的天花板優先級(Priority Ceiling)。這就確保了在該任務持有資源的期間,沒有其他任務可以搶占它,從而避免了優先級倒置的情況。當任務釋放資源時,其優先級再恢復到原來的值。

[*]防止死鎖(Deadlock):
在Ceiling-Priority Protocol中,如果一個任務試圖鎖定一個資源,並且該資源的天花板優先級高於目前系統中所有正在執行的任務的優先級,那麼該任務將被允許鎖定資源。如果不是,那麼該任務將被阻塞,直到沒有其他更高優先級的任務在運行。這種機制防止了一個任務在等待一個資源的同時,又持有另一個資源,導致其他任務無法進行,從而避免了死鎖的發生。
頁: [1]
查看完整版本: 9 Ceiling-Priority Protocol