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