2014-08-31 100 views
0

爲了說明方便,我試圖定義一個算法,該算法創建一個任務池(每個任務都有一個單獨的時間片來操作) 並且在沒有系統時鐘的情況下管理它們。在不使用系統時鐘的情況下管理任務

我遇到的問題是,在我採取的每種方法中,具有較高時間片的任務都被餓死了。

我試圖做的是創建一個包含一對任務/(int)「時間」的任務向量。 我已經用最低的「時間」先對向量排序&然後迭代並以零(0)的時間執行每個任務。當遍歷整個矢量時,我減少了每個任務的「時間」。

有沒有更好的方法來解決這類「問題」。用我的方法,肯定會發生啓動。

+0

「時間」的定義是什麼?最初如何爲每項任務設定?它能增加嗎? – 2014-08-31 17:35:19

+0

讓我澄清它: Vector = {Task1 | int time = 12,Task2 | int time = 10} 因此,Task2將首先運行,而後Task1將運行另外2個「ticks」。 爲了論證的緣故,我不能使用系統時間(時鐘)來優先考慮任務。 – Erez 2014-08-31 19:55:01

+0

更準確的辯護:「設計一個管理任務的系統,無需使用系統時間(時鐘)」 – Erez 2014-08-31 19:56:59

回答

1

管理任務根本不需要系統時鐘。 您只需設法確定每個任務之間的優先級,然後按優先級運行每個任務。

您可能想要暫停任務以執行其他任務,然後需要爲已暫停的任務設置新的優先級。此功能(多任務)需要根據事件(通常是時鐘時間)進行中斷,但您可以使用任何其他事件,如溫度或猴子按下按鈕或發送信號的其他進程。

你說你的問題是具有較高時間片的任務正在捱餓。 當您在運行時減少每個任務的「時間」並假設「時​​間」不會爲負數時,較高時間片任務最終將達到0,並且與其他任務一樣。

相關問題