我正在開發嵌入式系統的調度器。 該調度程序將每X毫秒調用一次進程;當然,這個時間可以爲每個進程單獨配置。如何隨着時間的推移獲得最小數量的「衝突」
所有東西都被編碼並調用每個過程,因爲它應該;我所面臨的問題是這樣的: 想象我設置4個過程被稱爲每10,15,第5和30毫秒分別爲:
A: 10ms
B: 15ms
C: 5ms
D: 30ms
所得主叫隨着時間的推移將是:
A |
A B A B |
C C C C C C C | processes being called
D |
----------------------------------
0 5 10 15 20 25 30 35... ms
問題是,當達到30ms時,所有進程都在同一時刻(一個接一個)被調用,並且這可能會延遲從此處執行的正確執行。
這可以通過爲每個進程添加延遲(但保留其呼叫頻率)來解決,因此頻率不再是對方的倍數。我的問題是,我不知道如何計算應用到每個過程的延遲,以便最小化碰撞次數。
是否有任何已知的算法,或一些數學指導?
謝謝。
間隔之間的碰撞將是他們區間的LCM。所以當你所有的時間間隔都是互質的時候,你會有最小的碰撞。 – 2010-01-17 13:45:45