新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > uC/OS-II 學(xué)習(xí)筆記之:任務(wù)的概念

uC/OS-II 學(xué)習(xí)筆記之:任務(wù)的概念

作者: 時間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

一、任務(wù):一個任務(wù),也叫一個線程,是一個簡單程序,改程序可以認(rèn)為CPU完全只屬于自己。每個任務(wù)都是整個應(yīng)用的某一部分,

本文引用地址:http://www.butianyuan.cn/article/201609/303414.htm

每個任務(wù)被賦予一定的優(yōu)先級,有它自己的一套CPU寄存器和??臻g。

二、多任務(wù):多任務(wù)運行的實現(xiàn)實際是靠CPU在許多任務(wù)之間轉(zhuǎn)換、調(diào)度。CPU輪流服務(wù)于一系列任務(wù)中的某一個。

三、任務(wù)狀態(tài):每個任務(wù)都是一個無限循環(huán)。每個任務(wù)都處在以下5種狀態(tài)之一:

1)睡眠態(tài):任務(wù)只是以代碼的形式駐留在程序空間(ROM或RAM),還沒有交給操作系統(tǒng)管理時的情況叫做睡眠態(tài)(也稱休眠態(tài))。

簡單說,任務(wù)在沒有被配備任務(wù)控制塊或被剝奪了任務(wù)控制塊時的狀態(tài)叫做任務(wù)的睡眠態(tài)。

2)就緒態(tài):如果系統(tǒng)為任務(wù)配備了任務(wù)控制塊且在任務(wù)就續(xù)表中進行了就緒登記,則任務(wù)就具備了運行的充分條件,

這時任務(wù)的狀態(tài)就叫做就緒態(tài)。

3)運行態(tài):處于就緒態(tài)的任務(wù)如果經(jīng)調(diào)度器的判斷獲得了CPU的使用權(quán),則任務(wù)就進入運行狀態(tài)。

注:任何時刻只能有一個任務(wù)處于運行態(tài),就緒的任務(wù)只有當(dāng)所有優(yōu)先級高于本任務(wù)的任務(wù)都轉(zhuǎn)為等待狀態(tài)時,才能進入運行態(tài)。

4)等待態(tài):正在運行的任務(wù),需要等待一段時間或需要等待一個事件發(fā)生再運行時,該任務(wù)就會把CPU的使用權(quán)讓給其它任務(wù)而使任務(wù)進入等待態(tài)(也稱阻塞態(tài))。

5)中斷態(tài):一個正在運行的任務(wù)一旦響應(yīng)中斷申請就會中止運行而去執(zhí)行中斷服務(wù)程序,這時任務(wù)的狀態(tài)叫做中斷服務(wù)狀態(tài)(也稱掛起態(tài))。

四、任務(wù)不是普通的C語言函數(shù),因此不能被主函數(shù)或其它函數(shù)調(diào)用,主函數(shù)只負(fù)責(zé)創(chuàng)建和啟動它們,而由操作系統(tǒng)負(fù)責(zé)來調(diào)度運行它們。

五、uC/OS-II中預(yù)定義了兩個為應(yīng)用程序服務(wù)的系統(tǒng)任務(wù):空閑任務(wù)和統(tǒng)計任務(wù)。

其中空閑任務(wù)是每個應(yīng)用程序必須使用的,而統(tǒng)計任務(wù)是應(yīng)用程序根據(jù)實際需要來選擇使用的。

六、任務(wù)的組成:任務(wù)控制塊、任務(wù)代碼、任務(wù)堆棧。

七、創(chuàng)建任務(wù)的函數(shù):

INT8U OSTaskCreate (

void (*task)(void *pd),//定義一個函數(shù)指針

void *pdata,//傳遞給任務(wù)的參數(shù)

OS_STK *ptos,//任務(wù)堆棧棧頂?shù)闹羔?/p>

INT8U prio//指定任務(wù)優(yōu)先級的參數(shù)

)

參: 任哲 《嵌入式實時操作系統(tǒng)uC/OS-II原理及應(yīng)用》

參: 盧有亮 《嵌入式實時操作系統(tǒng)uC/OS原理與實踐》



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉