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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

7、條件下,任務(wù)會(huì)在不同的狀態(tài)之間進(jìn)行轉(zhuǎn)化,稱為任務(wù)狀態(tài)遷移,如圖1所示。                                             

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

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

10、狀態(tài)主要由兩種原因引起,一種是等待某事件的發(fā)生,如等待信號(hào)量;第二種為任務(wù)主動(dòng)等待多少個(gè)tick。最后,任務(wù)可以將自己殺死進(jìn)入結(jié)束態(tài)。                                       

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

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

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

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論