嵌入式實時系統(tǒng)任務內調度的策略和實現(xiàn) 3000字_第1頁
嵌入式實時系統(tǒng)任務內調度的策略和實現(xiàn) 3000字_第2頁
嵌入式實時系統(tǒng)任務內調度的策略和實現(xiàn) 3000字_第3頁
全文預覽已結束

下載本文檔

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

文檔簡介

嵌入式實時系統(tǒng)任務內調度的策略和實現(xiàn)3000字1嵌入式實時系統(tǒng)提供的任務調度應用在一些大型的系統(tǒng),如移動通信系統(tǒng)中需要同時處理成百上千的呼叫建立、呼叫撤除以及其他各種效勞,僅僅進行任務間調度,將產(chǎn)生頻繁的任務間切換,造成任務棧的開銷太大,效率明顯降低,不合乎通信實時性的要求。任務內調度利用嵌入式實時系統(tǒng)的任務調度機制和消息隊列構造的二級調度可以有效的提高系統(tǒng)通信的效率。

2任務調度的局限性

嵌入式實時操作系統(tǒng)提供了非常靈活的任務調度機制,以VxWorks為例,Wind內核采用基于優(yōu)先級的搶占式調度法作為它的缺省策略,同時它也提供了輪轉調度法,同優(yōu)先級的假設干任務間又可以基于時間片進行調度[1]。每個任務都被分配一定的以數(shù)字方式表示的優(yōu)先級,通常從0到255。操作系統(tǒng)總是每次調度優(yōu)先級最高的就緒任務執(zhí)行,低優(yōu)先級的就緒任務只有在高優(yōu)先級的任務都處于阻塞態(tài)時才有時機被調度運行。任務是可被搶占的,一個可被搶先的低優(yōu)先級任務在運行時將被一個剛才從阻塞態(tài)醒來的高優(yōu)先級任務所搶占。如果任務工作在時間片方式,某一個就緒任務也可以搶先另外一個優(yōu)先級相同但時間片已經(jīng)用盡的運行任務[2]。任務調度將調度問題全部交給操作系統(tǒng)內核,應該說是最省事最平安的一種辦法,但是由于系統(tǒng)資源的限制,支持的任務數(shù)有限,這種方式在某些軟件復雜度不高的產(chǎn)品中是可行的。而在一些大型的系統(tǒng)如移動通信系統(tǒng)中,由于同時可能要處理大量的包括已經(jīng)建鏈的、正在建鏈的和正在拆鏈的呼叫,這些要同時處理的呼叫數(shù)量可能是幾百個,也可能到達幾千個,此時任務間需要頻繁切換,造成任務棧的開銷太大,因此效率并不是很高,在這種情況下僅采用任務調度是遠遠不能滿足要求的。因而在任務調度(一級調度)的根底之上繼續(xù)構建以進程為單位的二級調度就十分必要了。當然隨著嵌入式實時操作系統(tǒng)性能的改善、CPU速度的提高,這個問題可能會逐漸弱化。

3二級調度的機制

3.1任務與進程之間的關系

調度任務之間的切換由任務優(yōu)先級決定,低優(yōu)先級任務不能搶占高優(yōu)先級任務,只有高優(yōu)先級任務進入阻塞狀態(tài),低優(yōu)先級任務才有時機運行,整個過程由操作系統(tǒng)來完成調度。二級調度即進程調度以調度任務為運行載體,就是要利用嵌入式實時操作系統(tǒng)的任務調度機制和消息隊列構造自己的以進程為單位的二級調度策略,調度任務根據(jù)進程消息的類型和所處的運行狀態(tài)對進程進行調度。進程調度支持用狀態(tài)、信號來描述的SDL進程的C程序語言編程結構,具有不同優(yōu)先級的調度任務分別調度假設干個完成不同功能、有不同時延要求的進程運行,并實現(xiàn)進程的二級調度。進程的優(yōu)先級別取決與任務的優(yōu)先級,不同任務下的進程具有不同的優(yōu)先級。同一任務下的進程具有相同的優(yōu)先級,在使用優(yōu)先級作為調度策略的系統(tǒng)中,往往對許多具有相同優(yōu)先級的進程采用先來先效勞調度算法(FCFS)[3]。因此在每個調度任務下,進程采用FCFS算法,只有在運行進程交出控制權,其它進程才能進行處理。進程與調度任務之間的關系如圖1所示。任務由VxWorks根據(jù)任務的優(yōu)先級和任務當前所處的狀態(tài)(就緒、阻塞、運行)進行調度,調度任務從任務控制塊和進程控制塊中獲得調度進程運行時所需的有關數(shù)據(jù)。進程也有三種運行狀態(tài):就緒態(tài)、阻塞態(tài)、運行態(tài)。因此每個調度任務就有三個隊列:就緒進程隊列、阻塞進程隊列、運行進程隊列,這三個隊列分別用來指示該調度任務下處于不同運行狀態(tài)的進程[2]。

3.2進程的構成

每個進程是由假設干函數(shù)代碼、一個堆棧區(qū)、一個靜態(tài)數(shù)據(jù)區(qū)、一個消息隊列和一個進程高低文核心數(shù)據(jù)結構,即進程控制塊(PCB)組成。之所以每個進程都有一個消息隊列的原因,是因為如果一個任務下的所有進程共用一個消息隊列(可用VxWorks的消息隊列實現(xiàn)),那么只能在消息隊列上從前到后取消息,如果連續(xù)有幾個消息同屬于一個進程,那么可能使其它進程的處理滯后,不合乎同一任務下不同進程間的公平調度原那么。進程的PCB、堆棧和靜態(tài)數(shù)據(jù)區(qū)隨進程的動態(tài)創(chuàng)立而創(chuàng)立、隨進程的動態(tài)刪除而釋放。進程的代碼實際上是用狀態(tài)、信號所描述的SDL進程的C程序語言實現(xiàn)。進程作為有限狀態(tài)機的匯合體,其運行過程實質上是由一個狀態(tài)機到另外一個狀態(tài)機的遷移過程,遷移的原因是外部信號(消息)的鼓勵。任何時刻,進程總是在某個狀態(tài)機上等待某個特定的信號,收到信號并做相應的處理后又遷移到另一狀態(tài)機。在新狀態(tài)機上,又重復開始了信號的等待。

4二級調度的實現(xiàn)

每個調度任務創(chuàng)立一個VxWorks定長消息隊列,任務被創(chuàng)立后就無限循環(huán)運行,不斷從自己要處理的消息隊列中取消息,如果任務下所有進程的消息隊列都為空,任務在其所操作的VxWorks消息隊列上等待消息,此時,VxWorks令該任務阻塞,直到在其所等待的消息隊列上有一個消息到來時,VxWorks才喚醒該任務,這種策略使其它被低優(yōu)先級調度任務所調度的進程獲得運行時機[2]。當一個調度任務被VxWorks調度運行后,該任務將從其所操作的VxWorks消息隊列上獲得消息,并把取到的消息指派給相應的進程,同時把阻塞且獲得消息的進程放到任務的進程就緒隊列尾部,然后開始循環(huán)調度進程的執(zhí)行[3]。調度任務每次調度進程就緒隊列中的第一個進程,當將被調度的進程是由于同步消息已經(jīng)應答或延時已經(jīng)到時而被喚醒時,調度任務將控制轉移到保留在進程堆棧中的指令地址;否那么,如果進程消息隊列頭上的是一條新消息,調度任務依據(jù)進程消息隊列頭上的消息和PCB中的數(shù)據(jù)為進程的主處理函數(shù)傳遞相應入口參數(shù),并從主處理函數(shù)的第一條語句開始執(zhí)行。進程依據(jù)入口參數(shù)獲得當前消息,完成對應用層的通用外部接口調用和VxWorks的接口函數(shù)調用后,調用“退出進程〞外部接口函數(shù)通知調度進程已經(jīng)完成了一次消息處理,并將控制返回給調用任務??刂茩喾祷亟o調度任務后,調度任務將剛才處理過的進程從進程就緒隊列頭摘下,并將剛處理過的消息從該進程的消息隊列頭摘下,如果此時的進程消息隊列為空,當前任務將進程置到任務的進程阻塞隊列尾部,否那么將進程置到進程就緒隊列尾部,任務每調度進程執(zhí)行一次,所有進程就緒隊列中進程的相對位置就要發(fā)生一次變化,即循環(huán)向前移動了一下,這種調度機制保證了同一任務下的所有就緒進程獲得平等的運行時機。

5調度流程

在派發(fā)消息鏈表中的消息時:(1)如果接收消息的進程處在阻塞狀態(tài),且此時不是在等待同步應答,消息將成為進程PCB消息隊列的當前消息,該進程PCB將從阻塞隊列進入就緒隊列尾;假設此時在等待同步應答,那么僅將該消息添加到進程PCB消息隊列尾。(2)如果接收消息的進程已經(jīng)在就緒狀態(tài),那么將該消息添加到進程PCB消息隊列尾。(3)如果待分發(fā)的消息是同步定時器超時消息或同步應答消息,則此消息不進入進程PCB的消息隊列,直接把該PCB從阻塞隊列中掛到就緒隊列頭。6結論采用二級調度機

溫馨提示

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

最新文檔

評論

0/150

提交評論