簡單地說,調(diào)度點(diǎn)是一組導(dǎo)致調(diào)用調(diào)度程序的操作系統(tǒng)事件。我們已經(jīng)遇到了兩個(gè)這樣的事件:任務(wù)創(chuàng)建和任務(wù)的刪除。每一個(gè)事件期間,方法os.schedule被調(diào)用以選擇下一個(gè)要運(yùn)行的任務(wù)。如果目前運(yùn)行的任務(wù)仍舊在就緒的任務(wù)中具有最高的優(yōu)先級(jí),那么它將被允許繼續(xù)使用處理器。否則,接下來,最高優(yōu)先級(jí)的任務(wù)將被執(zhí)行。當(dāng)然,在任務(wù)刪除的情況下,選擇的總是一個(gè)新任務(wù):根據(jù)它不再存在的事實(shí),所以目前運(yùn)行的任務(wù)不再處于就緒的狀態(tài)。一個(gè)第三方的調(diào)度點(diǎn)叫作時(shí)鐘節(jié)拍。時(shí)鐘節(jié)拍是一個(gè)由時(shí)鐘中斷處觸發(fā)的周期性事件。時(shí)鐘節(jié)拍提供了一個(gè)機(jī)會(huì)以喚醒那些等待軟件時(shí)鐘到期的任務(wù)。這和我們?cè)谇岸鹿?jié)中看到的時(shí)鐘節(jié)拍幾乎是一樣的。實(shí)際上,對(duì)于軟件時(shí)鐘的支持是嵌入式系統(tǒng)的一個(gè)普遍特性。在一個(gè)時(shí)鐘節(jié)拍期間,操作系統(tǒng)使每一個(gè)活動(dòng)的軟件時(shí)鐘減值并且檢測(cè)它們。當(dāng)一個(gè)時(shí)鐘到期了,所有等待它結(jié)束的任務(wù)從等待狀態(tài)變?yōu)榫途w狀態(tài)。然后,tb調(diào)度程序被調(diào)用以確定新喚醒的任務(wù)和此時(shí)鐘中斷之前運(yùn)行的任務(wù)相比是否具有更高的優(yōu)先級(jí)。
在 ADEOS 中時(shí)鐘節(jié)拍例程幾乎與第七章“外圍設(shè)備”中的那個(gè)例程是一樣的。實(shí)際上,我們?nèi)耘f使用相同的Timer 類。只有這個(gè)類的實(shí)現(xiàn)被輕微地改變了。這些變化是為了考慮到多個(gè)任務(wù)可能等待同一個(gè)軟件時(shí)鐘的事實(shí)。此外,所有對(duì)于disable()和enable()的調(diào)用都被enterCS()和exitCS()替換了,并且時(shí)鐘節(jié)拍的長度從1 ms 增加到10 ms。