點擊看原圖
圖2 引入中級調(diào)度的進程調(diào)度的調(diào)度隊列模型
4 VxWorks 實時內(nèi)核Wind 調(diào)度分析Wind 內(nèi)核缺省調(diào)度機制為基于優(yōu)先級的搶占式調(diào)度。采用這種機制時,系統(tǒng)把處理機分配給優(yōu)先級最高的進程,使之執(zhí)行。一旦出現(xiàn)了另一個優(yōu)先級更高的進程時,進程調(diào)度程序剝奪當前任務的執(zhí)行,將處理機分配給高優(yōu)先級任務。而在相同優(yōu)先級的多個任務之間,采用時間片輪
轉(zhuǎn)調(diào)度機制。采用這種機制時,當一個任務到達時,它被排在輪轉(zhuǎn)隊列的后面,等待分配給自己的間片的到來,如果在時間片內(nèi)沒有結束,則再等待屬于自己的時間片的到來,直到任務完成。
4. 1 基于優(yōu)先級的搶占式調(diào)度
采用基于優(yōu)先級的搶占式調(diào)度,系統(tǒng)中每個任務都有一個介于最高0 到最低255 之間的優(yōu)先級。任一時刻,系統(tǒng)內(nèi)核一旦發(fā)現(xiàn)一個優(yōu)先級更高的任務轉(zhuǎn)變?yōu)榫途w態(tài),內(nèi)核就保存當前任務的上下文并把當前任務狀態(tài)轉(zhuǎn)換為阻塞態(tài),同時切換到這個高優(yōu)先級任務的上下文執(zhí)行。如圖3 ,低優(yōu)先級的task1 被中優(yōu)先級的task2 搶占,task2又被高優(yōu)先級的task3 搶占。
點擊看原圖
圖3 基于優(yōu)先級的搶占式調(diào)度
4. 2 輪轉(zhuǎn)調(diào)度算法
采用輪轉(zhuǎn)調(diào)度算法,系統(tǒng)讓處于就緒態(tài)的優(yōu)先級相同的一組任務依次輪流執(zhí)行預先確定長度的時間片。這是一種處理機平均分配的方法。如果不使用輪轉(zhuǎn)調(diào)度算法,優(yōu)先級相同的一組任務中第一個獲得處理機的任務將不會被阻塞而獨占處理機,如果沒有阻塞或其他情況發(fā)生,它不會放棄處理機的使用權。如圖4 , 相同優(yōu)先級的task1 、task2 和task3 平均分配預先確定的處理機時間片。
點擊看原圖
圖4 優(yōu)先級相同輪轉(zhuǎn)調(diào)度
4. 3 基于優(yōu)先級的搶占式調(diào)度與輪轉(zhuǎn)調(diào)度相結合有時,基于優(yōu)先級的搶占式調(diào)度可與輪轉(zhuǎn)調(diào)度相結合。當優(yōu)先級相同的一組任務依次輪流平均分配處理機時,若有高優(yōu)先級的任務轉(zhuǎn)變?yōu)榫途w態(tài)則可搶占該組任務。直到再一次符合執(zhí)行條件時,該組任務才可再次共享處理機。如圖5 ,相同優(yōu)先級的task1 、task2 和task3 輪流占有處理機時,高于該組優(yōu)先級的task4 搶占處理機,等task4執(zhí)行結束,該組任務再次共享處理機。