2011-09-21 80 views
0

我需要一些幫助。我有一個項目爲freeRTos構建另一個調度程序,使用不同的算法,並嘗試在操作系統中替換它。在免費RTos中實現調度器

我的問題是:

  1. 是否有可能在正常的時間? (大約幾個月)

  2. 如何在整個OS代碼中識別調度程序的代碼?

+3

如果你有這些問題,那麼你可能不應該寫一個調度器,特別是對於實時操作系統。 – 2011-09-21 20:53:07

+1

我必須備份@Vald Lazarenko - 儘量不要嘗試這個。對內核進行黑客攻擊需要一個廣泛的測試階段,以確保你所做的任何事情都不會破壞別的東西。每當你的代碼不起作用時,你會對你的操作系統黑客有一個嘮叨的疑問。 FreeRTOS已經非常靈活 - 它可以執行線程或協程,並具有所有通常的同步機制來控制/通信/線程之間的信號 - 它不能用這些線程來構建? –

回答

4

鑑於FreeRTOS只有幾千行代碼,在幾個月內肯定有可能。當然,如果你知道如何編寫調度程序。

然而,FreeRTOS甚至沒有真正的調度程序。它維護可運行任務的列表,並且在每個調度點(從中斷返回或顯式良率)中,它都會從該列表中獲取最高優先級的任務。

+0

不過,整個事情都集中在代碼中的某個地方?我的意思是,在代碼中有一個地方,它負責處理所有的任務併爲他們分配內存,以便改變我的需求?改變算法,所以它不會僅僅考慮其他限制?或者這些內存分配散佈在操作系統的許多地方,這意味着我們需要挖掘任何代碼來查找和更改分配內存的標準?非常感謝,抱歉併發症,這很重要,讓我有點緊張...... – laughingMike

1

要添加更多的答案對問題2:

任務控制是在tasks.c,便攜式/ port.c包含上下文切換。

看看source organization doc;給定的函數名稱會給出它定義的文件。真的沒有太多的地方可以做到。使用grep :)