12 Stack-Resource Policy,縮寫SRP
堆疊資源策略(Stack-Resource Policy,縮寫SRP)是一種特殊的排程與同步協議,主要用於實時系統中以避免優先級倒置(Priority Inversion)和死鎖(Deadlock)。[*]先占等級(Preemption Levels):在SRP中,每個任務被賦予一個先占等級,這個等級與任務的週期成反比,週期短的任務有較高的先占等級。這與任務的優先級相似,但在SRP中,任務的優先級被稱為"先占等級"。
[*]基本想法(Basic Idea):SRP中的基本想法是,當一個任務開始執行時,它所需的所有資源都已經被其他任務釋放。這種策略遵循後進先出(LIFO,Last-In-First-Out)原則,這有助於避免死鎖情況的發生。
[*]資源/系統天花板(Resource/System Ceiling):在SRP中,每個資源的天花板被設定為所有需要該資源的任務中先占等級最高的那個。當一個任務嘗試鎖定一個資源時,它的先占等級會被提升至該資源的天花板。系統天花板則是所有當前被鎖定的資源的天花板中最高的那個。
[*]繼承(Inheritance):當一個高先占等級的任務被一個低先占等級的任務阻塞時,低先占等級的任務將繼承高先占等級任務的先占等級,直到它釋放了正在使用的資源。
[*]排程(Scheduling):在SRP中,一個任務只有當其先占等級高於當前的系統天花板時,才能開始執行。
透過這種方式,SRP協議確保了高先占等級的任務不會被低先占等級的任務無限期地阻塞,從而避免了優先級倒置問題。同時,由於SRP遵循後進先出(LIFO)原則,當一個任務需要使用多個資源時,它將按照相反的順序釋放這些資源。這種方式確保了任務不會同時鎖定多個資源,因此能有效防止死鎖(Deadlock)的情況出現。
此外,SRP協議還能夠確保資源的有效利用,因為它允許高先占等級的任務在低先占等級的任務釋放資源之前就獲得該資源的使用權,從而減少了任務的等待時間,提高了系統的效率。
整體而言,堆疊資源策略(SRP)是一種非常有效的實時作業系統中的資源同步協議,它能有效防止優先級倒置和死鎖問題,並確保系統的高效運行。
在PCP+RM的組合中,一個任務可能在執行中被阻塞一次。這是因為在PCP中,如果一個高優先級的任務需要某個資源,但該資源正在被低優先級的任務使用並鎖定,那麼高優先級的任務就會被阻塞,直到低優先級的任務釋放了該資源。這種情況會增加兩個單位的上下文切換(Context Switch)開銷,因為在進行上下文切換時需要儲存當前任務的狀態並恢復新任務的狀態。
相比之下,SRP+EDF的組合中,一個任務一旦開始執行就不會被阻塞。這是因為SRP遵循後進先出(LIFO)原則,即任務在使用資源時必須遵循一種嚴格的順序,當一個任務需要使用多個資源時,它將按照相反的順序釋放這些資源。這種方式確保了任務不會同時鎖定多個資源,因此能有效防止死鎖的情況出現。這也意味著,在SRP下,所有的任務都可以共享一個執行堆疊,這不僅可以節省記憶體空間,還可以減少Context Switch。
頁:
[1]