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