嵌入式實時系統中的優先級反轉問題_第1頁
嵌入式實時系統中的優先級反轉問題_第2頁
嵌入式實時系統中的優先級反轉問題_第3頁
嵌入式實時系統中的優先級反轉問題_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上嵌入式實時系統中的優先級反轉問題摘要嵌入式實時系統中由于多任務共享資源,通常會出現一些奇怪的現象。本文就什么是優先級反轉及其產生原因進行分析,并提出2個行之有效的解決方案。關鍵詞嵌入式實時系統多任務信號量優先級反轉1問題的提出目前,市場上占有率比較高的商業有、,、等。這些為數眾多的絕大多數都是多任務實時微內核的結構,采用的是基于優先級的可搶占式調度策略。系統為每一個任務分配一個優先權,調度程序保證當前運行的進程是優先權最高的進程。但是,有時候會出現一種比較奇怪的現象由于多進程共享資源,具有最高優先權的進程被低優先級進程阻塞,反而使具有中優先級的進程先于高優先級的進程執

2、行,導致系統的崩潰。這就是所謂的優先級反轉。2優先級反轉普遍具有2個特點實時性和多任務。實時是指系統的響應時間必須在規定的時間內,超出這個時間限制將會使系統出現致命的錯誤;同時,實時性還要求對時間要求非常急迫的任務要先于對時間不是很緊急的任務執行。正是由于這2個原因,的進程調度普遍采用的是基于優先級的可搶占式的調度策略。多任務是嵌入式系統的內在要求。如今的嵌入式系統普遍要求具有多任務并發執行的能力,因此中也必須提供多任務并發執行的支持。由于多任務并發,必然會導致多個任務共享資源。如有2個任務1和2并發執行,都需要向打印機輸出結果。由于只有1臺打印機,所以在某個時間段內只能有1個任務,如1占有打

3、印機并向打印機輸出,而這時另一個任務2處于等待狀態。當1輸出完畢后,2由等待轉為就緒,當再次調度它時,方可占有打印機向打印機輸出。試想如果不采取這種方式,不對打印機這種共享資源加以控制,而讓1和2同時向打印機輸出,這時候打印機打印的結果誰也看不懂,是一堆亂七八糟的東西。因此,大多數的采用了一種稱作信號量的機制來實現對共享資源的管理。任何一個想使用臨界資源如打印機等共享資源的進程在進入臨界區如1或2中訪問臨界資源的代碼之前必須擁有使用臨界資源的信號量,否則不可以執行臨界區代碼。假設系統中有3個任務,分別為1、2和3。1的優先權高于2,而2的優先權高于3。恰在此時1和2因某種原因被阻塞,這時候系統

4、調度3執行。3執行一段時間后,1被喚醒。由于采取的是的調度策略,因此1搶占3的,1執行。1執行一段時間后要進入臨界區,但此時3占有此臨界資源的信號量。因此1被阻塞,處于等待狀態,等待3釋放此信號量。經過這么一段時間后,2此時此刻處于就緒狀態。因此系統調度2執行。如果3在2的執行期間一直沒有能夠被調度執行的話,那1和3將一直等到2執行完后才能執行,1更要等到3釋放它所把持的信號量才能執行;而這段時間完全有可能超出1的,使得1崩潰。當系統看到有高優先級的任務崩潰時候,系統認為此時有重大事故發生,為了挽救系統,看門狗電路起作用,系統可能被自動復位。從上面的分析可以看到,導致系統崩潰的原因是由于優先級

5、高的任務1要獲取被低優先級任務2占有的臨界資源而被2阻塞,而具有中優先級的任務2搶占3的,從而導致2先于1執行。這時候系統便出現了優先級反轉的情況,如圖1所示。3優先級反轉的解決方法目前解決優先級反轉有許多種方法。其中普遍使用的有2種方法一種被稱作優先級繼承;另一種被稱作優先級極限。在優先級繼承方案中,當高優先級任務在等待低優先級的任務占有的信號量時,讓低優先級任務繼承高優先級任務的優先級,即把低優先級任務的優先權提高到高優先級任務的優先級;當低優先級任務釋放高優先級任務等待的信號量時,立即把其優先權降低到原來的優先權。采用這種方法可以有效地解決上面所述的優先權反轉的問題。當高優先級任務1想要

6、進入臨界區時,由于低優先級任務3占有這個臨界資源的信號量,導致1被阻塞。這時候,系統把3的優先權升到1的優先權,此時優先權處于1和3之間的任務2,即使處于就緒狀態也不可以被調度執行,因為此時3的優先權已經高于2,所以3此時被調度執行。當3釋放1需要的信號量時,系統立即把3的優先權降到原來的高度,來保證1和2正常有序執行。整個情況如圖2所示。目前,有許多是采用這種方法來防止優先級反轉的,如大家比較熟悉的業界有名的公司的。在優先權極限方案中,系統把每一個臨界資源與1個極限優先權相聯系。這個極限優先權等于系統此時最高優先權加1。當1個任務進入臨界區時,系統便把這個極限優先權傳遞給這個任務,使得這個任務的優先權最高;當這個任務退出臨界區后,系統立即把它的優先權恢復正常,從而保證系統不會出現優先權反轉的情況。如上例中,當3進入臨界區時,立即把它的優先權升高到極限優先權,保證3此時能盡快退出臨界區,進而釋放其占有的信號量。當高優先級任務1執行的時候就不會出現其等待低優先級任務3釋放信號量而被阻塞的情況,從而保證不會出現上面所說的優先級反轉。采用這種方案的另一個有利之處,是僅僅通過改變某個臨界資源的優先級就可以使多個任務共享這個臨界資源,如下所示。_;訪問共享資源

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論