1. 程式人生 > >"可剝奪型核心"與“不可剝奪型核心”

"可剝奪型核心"與“不可剝奪型核心”

1.不可剝奪型核心

概念:不可剝奪型核心要求每個任務自我放棄 CPU 的所有權。 

不可剝奪型排程法也稱作合作型多工,各個任務彼此合作共享一個CPU。非同步事件還是由中斷服務來處理。中斷服務可以使一個高優先順序的任務由掛起狀態變為就緒狀態。 但中斷服務以後控制權還是回到原來被中斷了的那個任務,直到該任務主動放棄 CPU 的使用權時, 那個高優先順序的任務才能獲得 CPU的使用權。
優點1:不可剝奪型核心的一個優點是響應中斷快。

在任務級,不可剝奪型核心允許使用不可重入函式。 每個任務都可以呼叫非可重入性函式,而不必擔心其它任務可能正在使用該函式,從而造成資料的破壞。因為每個任務要執行到完成時才釋放 CPU 的控制權。當然該不可重入型函式本身不得有放棄 CPU 控制權的企圖。
優點2:使用不可剝奪型核心時, 任務級響應時間比前後臺系統快得多。 

此時的任務級響應時間取決於最長的任務執行時間。
優點3:幾乎不需要使用訊號量保護共享資料。 

執行著的任務佔有 CPU,而不必擔心被別的任務搶佔。但這也不是絕對的, 在某種情況下,訊號量還是用得著的。處理共享 I/O 裝置時仍需要使用互斥型訊號量

2.可剝奪型核心

概念:當系統響應時間很重要時,要使用可剝奪型核心。最高優先順序的任務一旦就緒,總能得到 CPU 的控制權。
當一個執行著的任務使一個比它優先順序高的任務進入了就緒態, 當前任務的 CPU 使用權就被剝奪了, 或者說被掛起了, 那個高優先順序的任務立刻得到了 CPU 的控制權。 如果是中斷服務子程式使一個高優先順序的任務進入就緒態, 中斷完成時, 中斷了的任務被掛起, 優先順序高的那個任務開始執行。

優點1:使用可剝奪型核心, 最高優先順序的任務什麼時候可以執行,可以得到 CPU 的控制權是可知的。 使用可剝奪型核心使得任務級響應時間得以最優化。
優點2:使用可剝奪型核心時, 應用程式不應直接使用不可重入型函式。呼叫不可重入型函式時,要滿足互斥條件, 這一點可以用互斥型訊號量來實現。 如果呼叫不可重入型函式時, 低優先級的任務 CPU 的使用權被高優先順序任務剝奪, 不可重入型函式中的資料有可能被破壞。 

綜上所述, 可剝奪型核心總是讓就緒態的高優先順序的任務先執行, 中斷服務程式可以搶佔 CPU,到中斷服務完成時, 核心讓此時優先順序最高的任務執行(不一定是那個被中斷了的任務)。任務級系統響應時間得到了最優化, 且是可知的。