|  | ||||||||||||||||||||||||||||||||||||||||||
| VxWorks任務狀態的轉換 | ||||||||||||||||||||||||||||||||||||||||||
|     在VxWorks中(zhong),任務的基本狀態(tai)分為(wei)5種:就緒態(tai)、休眠態(tai)、延(yan)遲態(tai)、懸置(zhi)態(tai)、運行態(tai)。 就緒態是(shi)指,任務已(yi)經獲得除了(le)CPU之外(wai)的所(suo)有(you)其(qi)(qi)他資源,所(suo)等(deng)待的只是(shi)CPU的運行(xing),一旦(dan)其(qi)(qi)他任務釋放了(le)CPU資源,該(gai)任務就可以開始運行(xing)。 休(xiu)眠態表示任務正在(zai)等(deng)待除CPU之(zhi)外的(de)其(qi)他(ta)資源,即使當前(qian)CPU資源可以使用該任務也無法(fa)運行,通(tong)常也叫作阻塞狀態。 處于延(yan)遲(chi)態(tai)的(de)任務表示在其執(zhi)行(xing)期間(jian)主動(dong)放棄了CPU資源并處于一種等(deng)待延(yan)遲(chi)時間(jian)的(de)狀態(tai),這種任務不需(xu)要獲(huo)取任何資源,所需(xu)要等(deng)待的(de)僅(jin)僅(jin)是一段時間(jian)。 懸置(zhi)態(tai)是一種用于調試的狀(zhuang)態(tai),處(chu)于這種狀(zhuang)態(tai)的任務不會因為其不運行而導(dao)致狀(zhuang)態(tai)的轉換(huan)。   整個(ge)系統中(zhong)處(chu)于運(yun)行(xing)態的(de)任(ren)(ren)務只能有一(yi)個(ge)(單(dan)核心(xin)系統),這樣(yang)的(de)任(ren)(ren)務不缺少(shao)任(ren)(ren)何資(zi)源(yuan),也不需要等待時間延遲(chi),通(tong)常(chang)其是由高優先級的(de)就(jiu)緒態任(ren)(ren)務轉換(huan)而來(lai)的(de)。如果所有用(yong)戶(hu)任(ren)(ren)務都不能處(chu)于就(jiu)緒狀態,系統將會運(yun)行(xing)一(yi)個(ge)IDLE任(ren)(ren)務。 除了(le)這些(xie)基(ji)本狀(zhuang)(zhuang)態(tai)之外,根據不同(tong)的(de)組(zu)合(he)還可以列出下面的(de)狀(zhuang)(zhuang)態(tai):延遲態(tai)+S、懸置態(tai)+S、懸置態(tai)+T、懸置態(tai)+S+T以及(ji)帶有繼(ji)承優先級處于(yu)任(ren)何(he)狀(zhuang)(zhuang)態(tai)的(de)任(ren)務(wu)(也就是延遲態(tai)、休眠態(tai)、懸置態(tai)三者之間的(de)組(zu)合(he))。 表1.1中(zhong)列出了(le)VxWorks中(zhong)任(ren)(ren)務可能出現的狀(zhuang)態(tai),每個狀(zhuang)態(tai)的后面(mian)都有一(yi)個簡要(yao)地說明(ming)。圖1.1給出的任(ren)(ren)務基本(ben)狀(zhuang)態(tai)轉換(huan)圖中(zhong)描繪了(le)任(ren)(ren)務基本(ben)狀(zhuang)態(tai)的轉換(huan)以及狀(zhuang)態(tai)之間(jian)的關系(xi)。 表1.1 任務狀(zhuang)態 
      任務(wu)狀態(tai)的(de)(de)(de)轉換(huan)主(zhu)要原因(yin)有(you)兩(liang)個:等(deng)(deng)待資源(yuan)和放棄CPU資源(yuan)。放棄CPU資源(yuan)將使任務(wu)處于延遲(chi)態(tai),等(deng)(deng)待CPU資源(yuan)將使任務(wu)處于就緒態(tai),等(deng)(deng)待其(qi)他資源(yuan)的(de)(de)(de)任務(wu)則處于休眠態(tai)。這里所指的(de)(de)(de)其(qi)他資源(yuan)包(bao)括信號量(liang)、外部設備、消(xiao)息隊列(lie)等(deng)(deng),凡(fan)是程序運(yun)行(xing)所需要用到(dao)的(de)(de)(de)都可(ke)以歸結到(dao)這個范(fan)圍(wei)。 表1.2列(lie)出了任務(wu)狀態(tai)轉換(huan)以及可能引(yin)發這(zhe)些(xie)轉換(huan)的(de)函(han)(han)數(shu)。這(zhe)些(xie)函(han)(han)數(shu)中大(da)多是系統提(ti)供的(de)操作API,任務(wu)狀態(tai)的(de)轉換(huan)可以通過這(zhe)些(xie)函(han)(han)數(shu)完成但并不局限于這(zhe)些(xie)方法。 表1.2   任務狀態轉(zhuan)換(huan) 
 推薦課程:VxWorks應用開發培訓班(TSVW0701)| VxWorks BSP開發高級班(TSVG0701) 熱點鏈接: 
         1、Android程序開發好學嗎 |