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