国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩


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)

狀  態(tài) 描  述
就緒態(tài) 任務(wù)正在等待CPU資源
休眠態(tài) 任務(wù)正在等待除CPU資源之外的其他資源
延遲態(tài) 任務(wù)正在等待一定時間的延時
懸置態(tài) 任務(wù)無法執(zhí)行,主要是用于調(diào)試的一種狀態(tài)。這種狀態(tài)僅影響任務(wù)的執(zhí)行而不影響任務(wù)狀態(tài)的轉(zhuǎn)換。處于阻塞掛起狀態(tài)的任務(wù)仍然可以被解鎖,處于睡眠掛起的任務(wù)仍然可以被喚醒
延遲態(tài)+ S 處于睡眠掛起的任務(wù)狀態(tài)
懸置態(tài)+ S 處于阻塞掛起的任務(wù)狀態(tài)
懸置態(tài)+ T 帶有超時值的處于阻塞的任務(wù)狀態(tài)
懸置態(tài)+ S + T 帶有超時值的處于阻塞且掛起的任務(wù)狀態(tài)
state + I 帶有繼承優(yōu)先級處于state狀態(tài)的任務(wù)

    
圖1.1 任務(wù)基本狀態(tài)轉(zhuǎn)換

    任務(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)換

狀 態(tài) 轉(zhuǎn) 換 函 數(shù)
就緒態(tài)→懸置態(tài) semTake( )/msgQReceive( )
就緒態(tài)→延遲態(tài) taskDelay( )
就緒態(tài)→休眠態(tài) taskSuspend( )
懸置態(tài)→就緒態(tài) semGive( )/msgQSend( )
懸置態(tài)→休眠態(tài) taskSuspend( )
延遲態(tài)→就緒態(tài) expired delay
延遲態(tài)→休眠態(tài) taskSuspend( )
休眠態(tài)→就緒態(tài) taskResume( )/taskActivate( )
休眠態(tài)→懸置態(tài) taskResume( )
休眠態(tài)→延遲態(tài) taskResume( )

    推薦課程:VxWorks應(yīng)用開發(fā)培訓(xùn)班(TSVW0701)| VxWorks BSP開發(fā)高級班(TSVG0701)

   熱點鏈接:

   1、Android程序開發(fā)好學(xué)嗎
   2、嵌入式linux int進程詳解
   3、5種常用Android數(shù)據(jù)存儲方法
   4、Windows下Android開發(fā)環(huán)境的搭建
   5、嵌入式培訓(xùn)資料:C語言程序結(jié)構(gòu)

更多新聞>>