嵌入式實(shí)時(shí)系統(tǒng)任務(wù)內(nèi)調(diào)度的策略和實(shí)現(xiàn) 3000字_第1頁(yè)
嵌入式實(shí)時(shí)系統(tǒng)任務(wù)內(nèi)調(diào)度的策略和實(shí)現(xiàn) 3000字_第2頁(yè)
嵌入式實(shí)時(shí)系統(tǒng)任務(wù)內(nèi)調(diào)度的策略和實(shí)現(xiàn) 3000字_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

2任務(wù)調(diào)度的局限性

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

3二級(jí)調(diào)度的機(jī)制

3.1任務(wù)與進(jìn)程之間的關(guān)系

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

3.2進(jìn)程的構(gòu)成

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

4二級(jí)調(diào)度的實(shí)現(xiàn)

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

5調(diào)度流程

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論