2010-12-09 47 views
13

我已經開發了一個調度算法,它提供了概率性的軟實時保證,但它看起來太明顯而且很簡單。儘管將它與已發佈的實時調度算法(EDF,零星服務器等)相關聯,但我還是很難過。下面的調度算法是已知的實時算法嗎?該算法是現有的實時系統算法嗎?

假設:

  • 所有任務是從分佈中抽取其中任務的X個需要除了R CPU秒較少
  • 所有任務具有相同的期限。如果任務花費的時間超過T秒,則該任務失敗
  • 任務到達間隔已知的最短到達間隔時間,MIN_INTER_ARRIVE_T
  • 調度程序有一個taskset,它可以容納最多H個任務

    • (1)如果X:在任何時候
    • 任務不能互相影響

    保證(在每個時間步長,在taskset的所有任務,通過共享CPU同樣使等於進步) PE任務rcentage需要除R CPU-秒和(2)R < = T/H,(3)MIN_INTER_ARRIVE_T> = T/H,則至少任務的X的比例將在T秒內完成

算法更少的:

  • 如果任務到達並且任務集已滿,則清除已使用最多CPU的任務。假設保證這樣的任務將至少使用R cpu-seconds。因此唯一可以驅逐的任務就是無論如何都是失敗的任務。任何需要少於R cpu-seconds的任務都會按時完成。
+0

第二個假設似乎是在現實生活中的問題。「•所有任務具有相同的期限。如果一個任務比T秒的時間較長,那麼它是失敗的爲那個任務「。在真實的計算環境中,有許多任務不遵守這個假設。 – rkellerm 2010-12-09 15:21:47

回答

1

我不是硬實時調度的專家,但這就是你的算法聽起來對我來說的樣子。

它與航空航天系統中發生的事情非常相似。你的系統看起來更加靈活,但基本上這一切都是事先知道你有足夠的資源來運行你需要運行的任務。

關鍵的嵌入式航空航天系統更喜歡確定性,但作爲防範潛在缺陷(任務可以比分配運行更長的時間,如果允許),任務引擎將中斷這些任務,讓其他任務完成。有時可以使用任何空閒循環來完成中斷的任務,或者認爲任務失敗。

請注意,您只能對不重要的任務進行失敗,因此您必須仔細構建您的關鍵任務,或者擁有一個優先系統,從而無論如何重要任務都有機會完成。

您現在回到原點:您需要確保資源足以運行預先需要的任務。

hth,
asoundmove。

0

這似乎類似於恆定帶寬服務器算法