2012-09-23 32 views
1

我正在閱讀關於real-time kernels的文章,作者解釋瞭如何爲具有鏈接列表的任務實現調度器。他還表示,這並不是根據優先級插入和刪除任務的最佳方式;但是,他並沒有解釋其他方法。使用鏈接列表的調度程序有哪些替代方法?

實現除鏈接列表之外的其他調度程序的其他方法是什麼?

+1

鏈表是一個集合的實現。一個數組,雙向鏈表,二叉樹,哈希列表等都是可能的選擇。鏈表對於調度器來說是一個糟糕的選擇,因爲你必須遍歷列表才能找到一個通常按優先級排序的元素。這違背實時要求。 –

回答

1

仔細查看隊列數據結構。如果每個優先級都有一個隊列,那麼您可以從最高優先級隊列開始,然後進行處理直到隊列爲空,然後進入下一個優先級查詢,直到您擊中了所有優先級。

讓隊列中的任務處於相同的優先級,可以保證每個任務在被引入(可能是另一個)隊列的尾部之前至少獲得一個處理量。

當然,對於實時處理,您希望快速響應中斷。也許某種優先隊列可能適用。

1

有很多,例如可能是一個雙鏈表,所以插入一個低優先級的任務,可以從尾部向後搜索。

您可以在任務列表中使用數組中的任何內容來實現計劃,您可以使用哪個計劃取決於您計劃的內容。

鏈接列表,如果它相當短,可能是最佳解決方案。

相關問題