嵌入式實時操作系統(tǒng)的任務(wù)管理及任務(wù)調(diào)度_第1頁
嵌入式實時操作系統(tǒng)的任務(wù)管理及任務(wù)調(diào)度_第2頁
嵌入式實時操作系統(tǒng)的任務(wù)管理及任務(wù)調(diào)度_第3頁
嵌入式實時操作系統(tǒng)的任務(wù)管理及任務(wù)調(diào)度_第4頁
嵌入式實時操作系統(tǒng)的任務(wù)管理及任務(wù)調(diào)度_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1、嵌入式實時操作系統(tǒng)簡介   11英文名Embedded Real-time Operation System,簡寫為RTOS。   1.2.1定義:當外界事件或數(shù)據(jù)產(chǎn)生時,能夠接受并以足夠快的速度予以處理,其處理的結(jié)果又能在規(guī)定的時間之內(nèi)來控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)作出快速響應(yīng),并控制所有實時任務(wù)協(xié)調(diào)一致運行的嵌入式操作系統(tǒng)。(注:在工業(yè)控制、軍事設(shè)備、航空航天等領(lǐng)域?qū)ο到y(tǒng)的響應(yīng)時間有苛刻的要求,這就需要使用實時系統(tǒng)。我們常常說的嵌入式操作系統(tǒng)都是嵌入式實時操作系統(tǒng)。比如C/OS-II、eCOS和Linux。故對嵌入式實時操作系統(tǒng)的理解應(yīng)該建立在對嵌入

2、式系統(tǒng)的理解之上加入對響應(yīng)時間的要求。)   1.2.2 IEEE定義:嵌入式系統(tǒng)是“用于控制、監(jiān)視或者輔助操作機器和設(shè)備的裝置”。   1.2.3一般定義:以應(yīng)用為中心、以計算機技術(shù)為基礎(chǔ)、軟件硬件可裁剪、功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。   1 . 3分類:VxWorks,uC/OS-,uClinux,eCos,RTXC等。2、嵌入式實時操作系統(tǒng)的任務(wù)管理   21 任務(wù)管理:是嵌入式實時操作系統(tǒng)的核心和靈魂,決定了操作系統(tǒng)的實時性能。它通常包含優(yōu)先級設(shè)置、多任務(wù)調(diào)度

3、機制和時間確定性等部分。   2.1.1 優(yōu)先級設(shè)置:嵌入式操作系統(tǒng)支持多任務(wù),每個任務(wù)都具有優(yōu)先級,任務(wù)越重要,賦予的優(yōu)先級應(yīng)越高。優(yōu)先級的設(shè)置分為靜態(tài)優(yōu)先級和動態(tài)優(yōu)先級兩種。靜態(tài)優(yōu)先級指的是每個任務(wù)在運行前都被賦予一個優(yōu)先級,而且這個優(yōu)先級在系統(tǒng)運行期間是不能改變的;動態(tài)優(yōu)先級則是指每個任務(wù)的優(yōu)先級(特別是應(yīng)用程序的優(yōu)先級)在系統(tǒng)運行時可以動態(tài)地改變。    2.1.2 多任務(wù)調(diào)度機制:任務(wù)調(diào)度主要是協(xié)調(diào)任務(wù)對計算機系統(tǒng)資源的爭奪使用。對系統(tǒng)資源非常匱乏的嵌入式系統(tǒng)來說,任務(wù)調(diào)度尤為重要,它直接影響到系統(tǒng)的實時性能。通常,多任務(wù)調(diào)度機制分為

4、基于優(yōu)先級搶占式調(diào)度和時間片輪轉(zhuǎn)調(diào)度。(1)基于優(yōu)先級搶占式調(diào)度:系統(tǒng)中每個任務(wù)都有一個優(yōu)先級,內(nèi)核總是將CPU分配給處于就緒態(tài)的優(yōu)先級最高的任務(wù)運行。如果系統(tǒng)發(fā)現(xiàn)就緒隊列中有比當前運行任務(wù)更高的優(yōu)先級任務(wù),就把當前運行任務(wù)置于就緒隊列中,調(diào)入高優(yōu)先級任務(wù)運行。系統(tǒng)采用優(yōu)先級搶占方式進行調(diào)度,可以保證重要的突發(fā)事件及時得到處理。(2)時間片輪轉(zhuǎn)調(diào)度:讓優(yōu)先級相同的處于就緒狀態(tài)的任務(wù)按時間片使用CPU,以防止同優(yōu)先級的某一任務(wù)長時間獨占CPU。在一般情況下,嵌入式實時操作系統(tǒng)采用基于優(yōu)先級搶占式調(diào)度與時間片輪轉(zhuǎn)調(diào)度相結(jié)合的調(diào)度機制。   2.1.3 時間的可確定性:嵌入式實時

5、操作系統(tǒng)甬數(shù)調(diào)用與服務(wù)的執(zhí)行時間應(yīng)具有可確定性。系統(tǒng)服務(wù)的執(zhí)行時間不依賴于應(yīng)用程序任務(wù)的多少?;诖颂卣鳎到y(tǒng)完成某個確定任務(wù)的時間是可預(yù)測的。   2 . 2 任務(wù)管理機制:在內(nèi)核的設(shè)計過程中,最先應(yīng)考慮的是任務(wù)的狀態(tài)以及遷移時序,然后根據(jù)此狀態(tài)設(shè)計相應(yīng)的隊列,如就緒隊列、等待隊列等。內(nèi)核時鐘也依賴任務(wù)的狀態(tài)。可以看出,任務(wù)管理實現(xiàn)的核心和基礎(chǔ)是任務(wù)狀態(tài)和遷移時序。   2.2.1任務(wù)狀態(tài):在多任務(wù)狀態(tài)中,任務(wù)要參與資源的競爭,只有在所需資源得到滿足的情況下才能得到執(zhí)行。然而,任務(wù)擁有的資源情況是不斷變化的,這將導(dǎo)致任務(wù)狀態(tài)也表現(xiàn)出不斷變化的特性。不同

6、的實時內(nèi)核實現(xiàn)方式對狀態(tài)的定義不盡相同,但都包括以下三種基本狀態(tài):(1)等待:任務(wù)在等待I/O完成或者等待某事件的發(fā)生;(2)就緒:任務(wù)已經(jīng)得到需要運行的資源,并等待獲得處理器資源;(3)執(zhí)行:任務(wù)獲得處理器和其他所有需要的資源,相關(guān)代碼正在被運行。在單處理器系統(tǒng)中,任何時候只有一個任務(wù)處于運行狀態(tài)。如果沒有任何任務(wù)需要運行,那么內(nèi)核會運行一個空閑任務(wù)。任何一個可以執(zhí)行的任務(wù)都必須處于就緒狀態(tài),實時內(nèi)核會從所有就緒的任務(wù)中,使用合適的調(diào)度策略選擇一個運行。當一個任務(wù)請求I/O操作,或者等待信號量將會處于等待狀態(tài)。   2.2.2任務(wù)狀態(tài)轉(zhuǎn)移:在一定條件下,任務(wù)會在不同的狀態(tài)

7、之間進行轉(zhuǎn)化,稱為任務(wù)狀態(tài)遷移,如圖1所示。                                                

8、圖1 任務(wù)狀態(tài)遷移圖                                         圖2 實際實現(xiàn)的任務(wù)狀態(tài)轉(zhuǎn)換圖    圖2在描述任務(wù)狀態(tài)遷移的同時,也描述了任

9、務(wù)的生存周期,任務(wù)的生命期從新建態(tài)時開始直到結(jié)束態(tài)時結(jié)束。在給定的時刻,任務(wù)的狀態(tài)一定處在這六種狀態(tài)之一。新建狀態(tài)是指任務(wù)被創(chuàng)建的過程,在這個過程中主要工作有:為任務(wù)分配TCB和??臻g以及其他資源。當任務(wù)創(chuàng)建完成以后,任務(wù)就具備運行的能力了,與此同時,任務(wù)進入就緒狀態(tài),并等待調(diào)度器為它分配運行的機會。當任務(wù)得到運行的機會,任務(wù)開始執(zhí)行。處于運行態(tài)的任務(wù)會在任意時刻由運行態(tài)進入休眠態(tài)、就緒態(tài)或結(jié)束狀態(tài)。其中進入休眠態(tài)是任務(wù)的主動過程,這主要是任務(wù)調(diào)用了內(nèi)核提供的休眠函數(shù),任務(wù)在休眠狀態(tài),如果沒有其他任務(wù)喚醒它,它將永遠休眠下去直到系統(tǒng)關(guān)閉,這種方式也可用于任務(wù)同步。等待狀態(tài)主要由兩種原因引起,一

10、種是等待某事件的發(fā)生,如等待信號量;第二種為任務(wù)主動等待多少個tick。最后,任務(wù)可以將自己殺死進入結(jié)束態(tài)。                                          圖3 任

11、務(wù)狀態(tài)遷移示意圖    圖3描述了三個任務(wù)狀態(tài)遷移過程。圖中包含三個任務(wù)和一個調(diào)度程序。調(diào)度程序確定下一個需要投入運行的任務(wù),因此調(diào)度程序本身也占用一定的處理時間。3、嵌入式實時操作系統(tǒng)的任務(wù)調(diào)度   3. 1 任務(wù)調(diào)度:調(diào)度是內(nèi)核的主要職責之一,調(diào)度的主要任務(wù)就是要決定該輪到哪個任務(wù)運行。多數(shù)實時內(nèi)核采用基于優(yōu)先級調(diào)度的算法?;趦?yōu)先級的調(diào)度算法是指,每個任務(wù)根據(jù)重要程度被賦予一定的優(yōu)先級,CPU總是讓處在就緒態(tài)的優(yōu)先級最高的任務(wù)運行。然而,究竟何時讓高優(yōu)先級任務(wù)掌握CPU的使用權(quán),有兩種不同的情況,這取決于內(nèi)核的類型(是可剝奪型的

12、還是可剝奪型內(nèi)核)。當調(diào)度程序決定新的任務(wù)獲得CPU的使用權(quán)時,這時內(nèi)核將執(zhí)行任務(wù)切換。任務(wù)切換過程為:首先保存當前任務(wù)的上下文,即CPU寄存器中的全部內(nèi)容。這些內(nèi)容可以保存在任務(wù)的自己的棧中,也可以保存在TCB中。然后,將需要運行的任務(wù)的上下文從該任務(wù)的棧中重新裝入CPU的寄存器,并開始運行。任務(wù)切換過程增加了應(yīng)用程序的額外負荷。CPU的內(nèi)部寄存器越多,額外負荷就越重。   3. 2 調(diào)度算法   3.2.1時間片輪轉(zhuǎn)調(diào)度算法:當兩個或兩個以上任務(wù)有同樣優(yōu)先級,內(nèi)核允許一個任務(wù)運行事先確定的一段時間,該段時間叫做時間片,然后切換給另一個任務(wù)。內(nèi)核在滿足

13、以下條件時,把CPU控制權(quán)交給下一個就緒態(tài)的任務(wù):當前任務(wù)運行的時間片到期; 當前任務(wù)在時間片還沒結(jié)束時已經(jīng)完成了。    3.2.2 基于優(yōu)先級的調(diào)度算法:每個任務(wù)都賦予優(yōu)先級。任務(wù)越重要,賦予的優(yōu)先級就越高。優(yōu)先級的分配方式可分為靜態(tài)分配和動態(tài)分配的方式。靜態(tài)優(yōu)先級是指應(yīng)用程序執(zhí)行過程中諸任務(wù)的優(yōu)先級不變。在靜態(tài)優(yōu)先級系統(tǒng)中,各個任務(wù)以及它們的時間約束在程序編譯時是已知的。動態(tài)優(yōu)先級指應(yīng)用程序執(zhí)行過程中,任務(wù)的優(yōu)先級是可變的。    Linux采取的調(diào)度策略結(jié)合了這幾種調(diào)度方案。在Linux系統(tǒng)中,調(diào)度算法最基本的一類就是基于優(yōu)先

14、級的調(diào)度。優(yōu)先級高的任務(wù)先運行,相同優(yōu)先級的任務(wù)按照輪轉(zhuǎn)方式進行調(diào)度。Linux也實現(xiàn)了基于動態(tài)優(yōu)先級的調(diào)度方法。一開始,利用靜態(tài)優(yōu)先級的方法設(shè)置任務(wù)的優(yōu)先級,然而它允許調(diào)度程序根據(jù)需要來提升、降低優(yōu)先級。   3. 3 調(diào)度器實現(xiàn):在整個任務(wù)管理中,任務(wù)調(diào)度無疑是系統(tǒng)的核心,任務(wù)調(diào)度通常由內(nèi)核中的調(diào)度器實現(xiàn)。調(diào)度器的實現(xiàn)與任務(wù)運行狀態(tài)遷移,任務(wù)隊列有密切的聯(lián)系,可以說任務(wù)運行狀態(tài)遷移和任務(wù)隊列決定了調(diào)度器的實現(xiàn)。調(diào)度器的主要作用是在就緒隊列中選擇優(yōu)先級最高的任務(wù)運行,如果優(yōu)先級最高的任務(wù)不止一個,則選擇隊頭的任務(wù)運行。雖然整個調(diào)度器的功能可以用上面的幾句話概括,但調(diào)度器的

15、實現(xiàn)遠遠沒有那么簡單,主要困難來源下面的原因:確定調(diào)度器運行的時機;中斷處理程序完了后,是執(zhí)行當前任務(wù),還是馬上調(diào)度;調(diào)度器的性能;調(diào)度中伴隨著任務(wù)上下文的切換,尤其對處理器架構(gòu)有關(guān)的上下文,應(yīng)該設(shè)計良好的接口以便移植。    對于實時系統(tǒng)來說,中斷處理程序執(zhí)行完畢后,應(yīng)該馬上執(zhí)行調(diào)度,這是因為中斷常常伴隨著有新的任務(wù)處于就緒隊列中,在這些任務(wù)中可能會有高優(yōu)先級的任務(wù)就緒,所以在實時內(nèi)核中要求必須支持在中斷后馬上進行任務(wù)調(diào)度。不管是在實時系統(tǒng),還是在其他系統(tǒng)中,調(diào)度器性能顯得非常重要,常常要求調(diào)度器的時間復(fù)雜度至少應(yīng)該為線性,當然常數(shù)是最好的。對于不同的處理器架構(gòu)

16、,其提供的寄存器,狀態(tài)寄存器都有很大的區(qū)別,調(diào)度器應(yīng)該留出良好的接口給不同的處理器,以便以后方便移植。在實現(xiàn)調(diào)度器時,基本上考慮了上面的幾個基本問題。根據(jù)任務(wù)狀態(tài)遷移、內(nèi)核隊列等方面的內(nèi)容,在byCore中實現(xiàn)了一個叫scheduler( )的調(diào)度程序。在scheduler( )中調(diào)用幾個與硬件相關(guān)的函數(shù),這幾個函數(shù)主要用于實現(xiàn)任務(wù)硬件上下文的切換,這部分代碼用匯編完成,并且與處理器有關(guān)。圖4描述了scheduler( )的算法流程圖。              &

17、#160;                          圖4 scheduler( )的算法流程圖    該調(diào)度程序的算法非常簡單,首先,在允許調(diào)度的情況下,如果有高優(yōu)先級任務(wù)就緒,則進行任務(wù)切換。任務(wù)切換會發(fā)生在兩種處理器模式下,一種是處理器處于正常的運行態(tài),另一種發(fā)生在中斷態(tài)中。因此,內(nèi)核使用兩組函數(shù)分別處理這兩種情況

18、。在兩種處理器狀態(tài)下都有“啟動新任務(wù)”和“新舊任務(wù)切換”函數(shù)接口實現(xiàn)最后的任務(wù)切換工作,這兩組函數(shù)與處理器有關(guān),并由匯編實現(xiàn)?!皢有氯蝿?wù)”的主要功能是將任務(wù)的初始上下文復(fù)制給處理器的各個寄存器,這包括通用寄存器、堆棧指針寄存器、狀態(tài)寄存器和指令指針寄存器等。這些初始值在新任務(wù)創(chuàng)建時被初始化。啟動新任務(wù)發(fā)生的時機有兩種情況,第一種情況是內(nèi)核初始化完畢后,啟動第一個任務(wù);第二種情況為任務(wù)主動結(jié)束后,當前任務(wù)指針被置位NULL時。“任務(wù)切換”發(fā)生在兩個任務(wù)之間,一個是被換切換出去的任務(wù),另一個是將要執(zhí)行的任務(wù)。任務(wù)切換函數(shù)也由匯編代碼實現(xiàn)。它所要完成的工作主要有兩個,第一是將舊任務(wù)(被換切換出去的任務(wù))的上下文保存到自己的棧中,第二是新任務(wù)(將要執(zhí)

溫馨提示

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

評論

0/150

提交評論