嵌入式實時操作系統(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、度:系統(tǒng)中每個任務(wù)都有一個優(yōu)先級,內(nèi)核總是將CPUCPU 分配給處于就緒態(tài)的優(yōu)先級最高的1 1、嵌入式實時操作系統(tǒng)簡介1 1 1 1 英文名 EmbeddedEmbedded Real-timeReal-time OperationOperation SystemSystem ,簡寫為 RTOSRTOS。1.2.11.2.1 定義:當(dāng)外界事件或數(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)時間有苛刻的要求, 這就

2、需要使用實時系統(tǒng)。 我們常常說的嵌入式操作系統(tǒng)都是嵌入 式實時操作系統(tǒng)。比如卩 C/OSIIC/OSII、eCOSeCOS 和 LinuxLinux。故對嵌入式實時操作系統(tǒng)的理解應(yīng)該建立在對嵌入式系統(tǒng)的理解之上加入對響應(yīng)時間的要求。)1.2.21.2.2 IEEEIEEE 定義:嵌入式系統(tǒng)是 “用于控制、監(jiān)視或者輔助操作機器和設(shè)備的裝置 ”。1.2.31.2.3 一般定義:以應(yīng)用為中心、以計算機技術(shù)為基礎(chǔ)、軟件硬件可裁剪、功能、可靠性、 成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。1 1 . . 3 3 分類:VxWorksVxWorks , uC/OS-uC/OS-n,uClinuxuClin

3、ux , eCoseCos, RTXCRTXC 等。2 2、嵌入式實時操作系統(tǒng)的任務(wù)管理2 21 1 任務(wù)管理:是嵌入式實時操作系統(tǒng)的核心和靈魂,決定了操作系統(tǒng)的實時性能。它 通常包含優(yōu)先級設(shè)置、多任務(wù)調(diào)度機制和時間確定性等部分。2.1.12.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.22.1.

4、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)度機制分為基于優(yōu)先級搶占式調(diào)度和時間片輪轉(zhuǎn)調(diào)度。(1 1)基于優(yōu)先級搶占式調(diào)任務(wù)運行。 如果系統(tǒng)發(fā)現(xiàn)就緒隊列中有比當(dāng)前運行任務(wù)更高的優(yōu)先級任務(wù), 就把當(dāng)前運行任 務(wù)置于就緒隊列中, 調(diào)入高優(yōu)先級任務(wù)運行。 系統(tǒng)采用優(yōu)先級搶占方式進行調(diào)度, 可以保證 重要的突發(fā)事件及時得到處理。(2 2)時間片輪轉(zhuǎn)調(diào)度:讓優(yōu)先級相同的處于就緒狀態(tài)的任務(wù)按時間片使用 CPUCPU,以防止同優(yōu)先級的某一任務(wù)長時間獨占CPUCPU。在一般情況下,

5、嵌入式實時操作系統(tǒng)采用基于優(yōu)先級搶占式調(diào)度與時間片輪轉(zhuǎn)調(diào)度相結(jié)合的調(diào)度機制。2.1.32.1.3 時間的可確定性: 嵌入式實時操作系統(tǒng)甬?dāng)?shù)調(diào)用與服務(wù)的執(zhí)行時間應(yīng)具有可確定性。 系統(tǒng)服務(wù)的執(zhí)行時間不依賴于應(yīng)用程序任務(wù)的多少。 基于此特征, 系統(tǒng)完成某個確定任務(wù)的 時間是可預(yù)測的。2 2 . . 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.12.2.1 任務(wù)狀態(tài):在多任務(wù)狀態(tài)中,任務(wù)要參與資源的競爭,只有在所需資源得

6、到滿足的情況下才能得到執(zhí)行。 然而, 任務(wù)擁有的資源情況是不斷變化的, 這將導(dǎo)致任務(wù)狀態(tài)也表現(xiàn) 出不斷變化的特性。 不同的實時內(nèi)核實現(xiàn)方式對狀態(tài)的定義不盡相同, 但都包括以下三種基 本狀態(tài):( 1 1)等待:任務(wù)在等待 I/OI/O 完成或者等待某事件的發(fā)生;( 2 2)就緒:任務(wù)已經(jīng)得 到需要運行的資源,并等待獲得處理器資源;(3 3)執(zhí)行:任務(wù)獲得處理器和其他所有需要的資源,相關(guān)代碼正在被運行。在單處理器系統(tǒng)中,任何時候只有一個任務(wù)處于運行狀態(tài)。如果沒有任何任務(wù)需要運行, 那么內(nèi)核會運行一個空閑任務(wù)。 任何一個可以執(zhí)行的任務(wù)都必 須處于就緒狀態(tài), 實時內(nèi)核會從所有就緒的任務(wù)中, 使用合適的

7、調(diào)度策略選擇一個運行。 當(dāng) 一個任務(wù)請求 I/OI/O 操作,或者等待信號量將會處于等待狀態(tài)。2.2.22.2.2 任務(wù)狀態(tài)轉(zhuǎn)移:在一定條件下,任務(wù)會在不同的狀態(tài)之間進行轉(zhuǎn)化,稱為任務(wù)狀態(tài) 遷移,如圖 1 1 所示。圖 1 1 任務(wù)狀態(tài)遷移圖圖 2 2 實際實現(xiàn)的任務(wù)狀態(tài)轉(zhuǎn)換圖圖 2 2 在描述任務(wù)狀態(tài)遷移的同時,也描述了任務(wù)的生存周期,任務(wù)的生命期從新建態(tài)時開始直到結(jié)束態(tài)時結(jié)束。 在給定的時刻,任務(wù)的狀態(tài)一定處在這六種狀態(tài)之一。新建狀態(tài)是指任務(wù)被創(chuàng)建的過程,在這個過程中主要工作有: 為任務(wù)分配 TCBTCB 和??臻g以及其他資源。 當(dāng)任務(wù)創(chuàng)建完成以后,任務(wù)就具備運行的能力了,與此同時,任務(wù)進

8、入就緒狀態(tài), 并等待調(diào)度器為它分配運行的機會。當(dāng)任務(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)主要由兩種原因引起, 一種是等待某事件的發(fā)生,如等待信號量;第二種為任務(wù)主動等待多少個ticktick。最后,任務(wù) 可以將自己殺死進入結(jié)束態(tài)。茯猖CPU休運行就繕孝待圖 3 3 任務(wù)狀態(tài)遷移示意圖圖 3 3 描述了三個任務(wù)狀態(tài)遷移過程。圖中包含三個任務(wù)和一個調(diào)度程序。調(diào)度程序

9、確定下一個需要投入運行的任務(wù),因此調(diào)度程序本身也占用一定的處理時間。3 3、嵌入式實時操作系統(tǒng)的任務(wù)調(diào)度3.3. 1 1 任務(wù)調(diào)度:調(diào)度是內(nèi)核的主要職責(zé)之一,調(diào)度的主要任務(wù)就是要決定該輪到哪個任務(wù)運行。多數(shù)實時內(nèi)核采用基于優(yōu)先級調(diào)度的算法。基于優(yōu)先級的調(diào)度算法是指,每個任務(wù)根據(jù)重要程度被賦予一定的優(yōu)先級,CPUCPU 總是讓處在就緒態(tài)的優(yōu)先級最高的任務(wù)運行。然而,究竟何時讓高優(yōu)先級任務(wù)掌握 CPUCPU 的使用權(quán),有兩種不同的情況,這取決于內(nèi)核的類型(是 可剝奪型的還是可剝奪型內(nèi)核)。當(dāng)調(diào)度程序決定新的任務(wù)獲得CPUCPU 的使用權(quán)時,這時內(nèi)核將執(zhí)行任務(wù)切換。任務(wù)切換過程為:首先保存當(dāng)前任務(wù)的

10、上下文,即CPUCPU 寄存器中的全部內(nèi)容。這些內(nèi)容可以保存在任務(wù)的自己的棧中,也可以保存在TCBTCB 中。然后,將需要運行的任務(wù)的上下文從該任務(wù)的棧中重新裝入CPUCPU 的寄存器,并開始運行。任務(wù)切換過程增加了應(yīng)用程序的額外負荷。CPUCPU 的內(nèi)部寄存器越多,額外負荷就越重。3.3. 2 2 調(diào)度算法3.2.13.2.1 時間片輪轉(zhuǎn)調(diào)度算法:當(dāng)兩個或兩個以上任務(wù)有同樣優(yōu)先級,內(nèi)核允許一個任務(wù)運行事先確定的一段時間, 該段時間叫做時間片, 然后切換給另一個任務(wù)。 內(nèi)核在滿足以下條 件時,把 CPCPU U控制權(quán)交給下一個就緒態(tài)的任務(wù): 當(dāng)前任務(wù)運行的時間片到期; 當(dāng)前任 務(wù)在時間片還沒結(jié)

11、束時已經(jīng)完成了。3.2.23.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)先級是可變的。LinuxLinux 采取的調(diào)度策略結(jié)合了這幾種調(diào)度方案。 在 LinuxLinux 系統(tǒng)中,調(diào)度算法最基本的一類 就是基于優(yōu)先級的調(diào)度。 優(yōu)先級高的任務(wù)先運行, 相同優(yōu)先級的任務(wù)按照輪轉(zhuǎn)方式進行調(diào)度。 LinuxLinux 也實現(xiàn)了基于動態(tài)優(yōu)先級的調(diào)度

12、方法。一開始,利用靜態(tài)優(yōu)先級的方法設(shè)置任務(wù)的優(yōu) 先級,然而它允許調(diào)度程序根據(jù)需要來提升、降低優(yōu)先級。3.3. 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)度器的實現(xiàn)遠遠沒有那么簡單, 主要困難來源下 面的原因:確定調(diào)度器運行的時機;中斷處理程序完了后,是

13、執(zhí)行當(dāng)前任務(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)該為線性, 當(dāng)然常數(shù)是最好 的。對于不同的處理器架構(gòu),其提供的寄存器,狀態(tài)寄存器都有很大的區(qū)別,調(diào)度器應(yīng)該留 出良好的接口給不同的處理器,以便以后方便移植。

14、在實現(xiàn)調(diào)度器時,基本上考慮了上面的幾個基本問題。根據(jù)任務(wù)狀態(tài)遷移、內(nèi)核隊列等方面 的內(nèi)容, 在 byCorebyCore中實現(xiàn)了一個叫 scheduler(scheduler( ) ) 的調(diào)度程序。在 scheduler(scheduler( ) )中調(diào)用幾個與硬 件相關(guān)的函數(shù),這幾個函數(shù)主要用于實現(xiàn)任務(wù)硬件上下文的切換,這部分代碼用匯編完成, 并且與處理器有關(guān)。圖 4 4 描述了 scheduler(scheduler( ) )的算法流程圖。無舊任務(wù)忖瀆1_M11在中師蕊NS功輻任揮在中斷垂下任野騎用任爭圳松堆跆前仔務(wù)圖 4 4 scheduleschedule )的算法流程圖該調(diào)度程序的算

15、法非常簡單,首先,在允許調(diào)度的情況下,如果有高優(yōu)先級任務(wù)就緒,調(diào)螫就軸仏列辻于爭SHFF .為荊圧尋招併*空1越在中昕限笛程VIN則進行任務(wù)切換。任務(wù)切換會發(fā)生在兩種處理器模式下,一種是處理器處于正常的運行態(tài),另一種發(fā)生在中斷態(tài)中。因此,內(nèi)核使用兩組函數(shù)分別處理這兩種情況。在兩種處理器狀態(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é)束后,當(dāng)前任務(wù)指針被置位 NULLNULL 時。“任務(wù)切換 ”發(fā)生在兩個任務(wù)之間,一個是被換切換出去的任務(wù),另一個是將要執(zhí)行的任 務(wù)。任務(wù)切換函數(shù)也由匯編代碼實現(xiàn)。它所要完成的工作主要有兩個, 第一是將舊任務(wù) (被 換切換出去的任務(wù)) 的上下文保存到自己的棧中, 第二是新任務(wù)(將要執(zhí)行的任務(wù))將保存 在棧中的上下文復(fù)制到處理器的相關(guān)寄存器中。任

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論