UCOS iii 任務排程

2021-08-19 01:22:19 字數 866 閱讀 9055

任務排程的時機:

1、當前任務給其他任務發訊號,結束時呼叫。

任務呼叫提交服務函式

os???post()

, 傳送訊號量或訊息給其它任務時排程發生

2、任務呼叫ostimedly()或ostimedlyhmsm();

如果延時引數不是0,排程發生。排程會在該任務被放入掛起佇列後馬上執行。

3、任務所等待的事件發生或超時。

4、任務取消掛起時排程發生。

5、新任務被建立時發生。

6、任務被刪除時發生。

7、核心物件被刪除時。

任務所等待的核心物件被刪除時(事件標誌組、訊號量、訊息佇列、 mutex都是核心物件), 這些任務就可能被就緒。 然後排程發生。

8、任務改變自身優先順序或其它任務優先順序時,排程發生。

9、任務呼叫ostasksuspend()停止自身時,排程發生。

10、任務呼叫ostaskresume()恢復其它停止了的任務時,排程發生。

11、當退出中斷服務程式時,排程發生。這種情況下,排程器呼叫osintexit()函式開始排程而不是ossched()。

12、用osschedlock()鎖排程器,排程發生。需要注意的是,鎖排程器可以被巢狀,解鎖次數必須等於加鎖次數。

13、用osschedroundrobinyield()任務放棄了分配給它的時間片時發生排程。

14、使用者程式呼叫ossched()時。

任務排程任務級:ossched(),

任務排程中斷級:osintexit(),

os_schedroundrobin():時間片輪轉排程時的相關函式,主要是把對應優先順序的第乙個tcb塊,移動到最後乙個。下次再找最高優先順序的就緒任務時,就找到了相同優先順序的的下乙個任務的tcb。

ucosIII 系統任務

系統任務 空閒任務 空閒任務特點 1.空閒任務是ucosiii建立的第乙個任務。2.空閒任務是ucosiii必須建立的。3.空閒任務優先順序總是為os cfg prio mak 1。4.空閒任務中不能呼叫任何可使空閒任務進入等待態的函式!在osinit 中呼叫 os idletaskinit p e...

uc OS III任務的理解

在實際應用中一般是將工作拆分為多個任務的,並且每個任務都是可靠的。在使用uc os就可以很好的解決這個問題,任務又叫執行緒,在對於單個cpu來說,在任何時刻,都是只能有有乙個任務被執行。uc os iii 支援多工且對任務數量沒有限制,任務數僅取決於處理器記憶體的大小 ram 多任務排程是任務間占用...

UCOSIII的任務狀態

1 休眠態 任務已經在cpu的flash中了,但是還沒有交給ucosiii管理。2 就緒態 系統為任務分配了任務控制塊,並且任務已經在就緒表中登記,這時這個任務就具有了執行的條件,此時任務的狀態就是就緒態。3 執行態 任務獲得cpu的使用權,正在執行。任何時刻只能有乙個任務處於執行態。4 等待態 正...