FreeRTOS與UCOSIII的任務(wù)狀態(tài)

運(yùn)行態(tài)(與FreeRTOS相同):正在運(yùn)行的任務(wù)、正在使用處理器(CPU)的任務(wù),單核處理器中任務(wù)時候只有一個任務(wù)(線程)處于運(yùn)行態(tài)
就緒態(tài)(與FreeRTOS相同):已經(jīng)準(zhǔn)備就緒的任務(wù)(非阻塞或掛起),可以立刻運(yùn)行但是還沒有運(yùn)行的任務(wù)就處于就緒態(tài)
處于就緒態(tài)的任務(wù)等待的是CPU的調(diào)度,等待獲取CPU的使用權(quán)
等待態(tài)(類比FreeRTOS阻塞態(tài))
正在運(yùn)行的任務(wù)需要等待某一外部事件,暫時讓出CPU使用權(quán),進(jìn)入等待事件狀態(tài)。
正在等待信號量、消息、事件標(biāo)志組等的任務(wù)
休眠態(tài)(不同于FreeRTOS)
可以理解為任務(wù)函數(shù)存在,但是該任務(wù)還沒有被創(chuàng)建的狀態(tài),被刪除的任務(wù)也處于休眠態(tài)。休眠態(tài)只是以任務(wù)函數(shù)的方式存在,只是存儲區(qū)的一段代碼。并未使用OSTaskCreate()函數(shù)創(chuàng)建任務(wù),不受UCOSIII任務(wù)調(diào)度器管理。
中斷服務(wù)態(tài)(不同于FreeRTOS)
一個正在執(zhí)行的任務(wù)被中斷打斷,CPU去執(zhí)行中斷服務(wù)程序,被打斷任務(wù)進(jìn)入中斷服務(wù)態(tài)。
FreeRTOS的任務(wù)狀態(tài)

運(yùn)行態(tài):正在運(yùn)行的任務(wù)、正在使用處理器(CPU)的任務(wù),單核處理器中任務(wù)時候只有一個任務(wù)(線程)處于運(yùn)行態(tài)
就緒態(tài):已經(jīng)準(zhǔn)備就緒的任務(wù)(非阻塞或掛起),可以立刻運(yùn)行但是還沒有運(yùn)行的任務(wù)就處于就緒態(tài)
處于就緒態(tài)的任務(wù)等待的是CPU的調(diào)度,等待獲取CPU的使用權(quán)
阻塞態(tài):正在等待某個外部事件的任務(wù)處于阻塞態(tài)
使用vTaskDelay()后,就會進(jìn)入阻塞態(tài),直到延時結(jié)束
正在等待隊(duì)列、信號量、事件組、任務(wù)通知或互斥量的任務(wù),也會進(jìn)入阻塞態(tài)。
阻塞態(tài)下的任務(wù)不進(jìn)入調(diào)度器,等待事件到來后在退出阻塞態(tài)。進(jìn)入阻塞態(tài)會有一個超時時間,等待事件的超時時間到了,會退出阻塞態(tài),超時時間可以是無線(一直阻塞,直到事件帶來)
掛起態(tài):任務(wù)被暫時停止進(jìn)入的狀態(tài),掛起態(tài)任務(wù)也不進(jìn)入任務(wù)調(diào)度器,掛起態(tài)任務(wù)沒有超時事件。
進(jìn)入掛起態(tài):vTaskSuspend();