![]() |
||||||||||||||||||||||||||||||||||||||||||
VxWorks任務(wù)狀態(tài)的轉(zhuǎn)換 |
||||||||||||||||||||||||||||||||||||||||||
在VxWorks中,任務(wù)的基本狀態(tài)分為5種:就緒態(tài)、休眠態(tài)、延遲態(tài)、懸置態(tài)、運行態(tài)。 就緒態(tài)是指,任務(wù)已經(jīng)獲得除了CPU之外的所有其他資源,所等待的只是CPU的運行,一旦其他任務(wù)釋放了CPU資源,該任務(wù)就可以開始運行。 休眠態(tài)表示任務(wù)正在等待除CPU之外的其他資源,即使當(dāng)前CPU資源可以使用該任務(wù)也無法運行,通常也叫作阻塞狀態(tài)。 處于延遲態(tài)的任務(wù)表示在其執(zhí)行期間主動放棄了CPU資源并處于一種等待延遲時間的狀態(tài),這種任務(wù)不需要獲取任何資源,所需要等待的僅僅是一段時間。 懸置態(tài)是一種用于調(diào)試的狀態(tài),處于這種狀態(tài)的任務(wù)不會因為其不運行而導(dǎo)致狀態(tài)的轉(zhuǎn)換。 整個系統(tǒng)中處于運行態(tài)的任務(wù)只能有一個(單核心系統(tǒng)),這樣的任務(wù)不缺少任何資源,也不需要等待時間延遲,通常其是由高優(yōu)先級的就緒態(tài)任務(wù)轉(zhuǎn)換而來的。如果所有用戶任務(wù)都不能處于就緒狀態(tài),系統(tǒng)將會運行一個IDLE任務(wù)。 除了這些基本狀態(tài)之外,根據(jù)不同的組合還可以列出下面的狀態(tài):延遲態(tài)+S、懸置態(tài)+S、懸置態(tài)+T、懸置態(tài)+S+T以及帶有繼承優(yōu)先級處于任何狀態(tài)的任務(wù)(也就是延遲態(tài)、休眠態(tài)、懸置態(tài)三者之間的組合)。 表1.1中列出了VxWorks中任務(wù)可能出現(xiàn)的狀態(tài),每個狀態(tài)的后面都有一個簡要地說明。圖1.1給出的任務(wù)基本狀態(tài)轉(zhuǎn)換圖中描繪了任務(wù)基本狀態(tài)的轉(zhuǎn)換以及狀態(tài)之間的關(guān)系。 表1.1 任務(wù)狀態(tài)
任務(wù)狀態(tài)的轉(zhuǎn)換主要原因有兩個:等待資源和放棄CPU資源。放棄CPU資源將使任務(wù)處于延遲態(tài),等待CPU資源將使任務(wù)處于就緒態(tài),等待其他資源的任務(wù)則處于休眠態(tài)。這里所指的其他資源包括信號量、外部設(shè)備、消息隊列等,凡是程序運行所需要用到的都可以歸結(jié)到這個范圍。 表1.2列出了任務(wù)狀態(tài)轉(zhuǎn)換以及可能引發(fā)這些轉(zhuǎn)換的函數(shù)。這些函數(shù)中大多是系統(tǒng)提供的操作API,任務(wù)狀態(tài)的轉(zhuǎn)換可以通過這些函數(shù)完成但并不局限于這些方法。 表1.2 任務(wù)狀態(tài)轉(zhuǎn)換
推薦課程:VxWorks應(yīng)用開發(fā)培訓(xùn)班(TSVW0701)| VxWorks BSP開發(fā)高級班(TSVG0701) 熱點鏈接:
1、Android程序開發(fā)好學(xué)嗎 |