2013-08-26 35 views
1

關於調用調度程序的情況,我有read here。但是當一個高優先級任務到來時會發生什麼?調度程序在高優先級任務來臨時如何被調用

+1

高優先級的任務比低優先級的任務更經常地被調度,但是當高優先級的任務到來時,它仍然要等到[量子](http://en.wikipedia.org/wiki/Preemption_(computing)#Time_slice )正在運行的任務結束。編輯:張貼作爲anwser – Ben

回答

1

高優先級的任務比低優先級的任務往往計劃,但是當一個高優先級任務來它仍然必須等待,直到正在運行的任務的quantum結束。

0

優先級更改,並根據過去的CPU使用情況進行調整。

The longer version

在Linux中,處理優先級是動態的。調度程序跟蹤哪些進程正在執行並定期調整其優先級;通過這種方式,通過動態增加優先級來提高已經被拒絕長時間使用CPU的進程。相應地,長時間運行的流程會因減少其優先級而受到懲罰。

0

調度程序維護一組準備在系統中運行的任務。在多優先級系統中,任務集通常支持優先級的概念。當一個高優先級任務到達系統時,它被放入按優先級排序的任務集合中。

在內核中,我們檢查是否有更好的進程可以運行,與當前正在運行的進程相比,有一些要點。這可能發生在時間片到期或ISR完成時或者鎖被解鎖時等。查找調用switch()或_switch()或類似的東西...這是檢查任務集的例程並確定當前任務是否是最高prio。

如果當前任務不是最高prio任務,則切換當前任務,並從任務集中獲取最高prio任務並計劃運行。

相關問題