2012-02-22 146 views
24

有人可以解釋SCHED_OTHER,SCHED_FIFO和SCHED_RR之間的差異嗎?Linux SCHED_OTHER,SCHED_FIFO和SCHED_RR - 差異

感謝

+2

相當與那一個linux重複:-):http://stackoverflow.com/questions/9374653/real-time-scheduling-in- – 2012-02-22 12:44:38

+0

不完全是,SCHED_OTHER沒有提到 – eve 2012-02-23 09:06:20

回答

35

SCHED_FIFO和SCHED_RR是所謂的 「實時」 的政策。它們實現POSIX標準指定的固定優先級實時調度。使用這些策略的任務會搶佔所有其他任務,因此可能會輕易陷入飢餓(如果它們不釋放CPU)。

SCHED_FIFO和SCHED_RR之間的區別在於,在具有相同優先級的任務中,SCHED_RR執行具有特定時間片的循環;相反,SCHED_FIFO需要明確產生處理器的任務。

SCHED_OTHER是常用的循環分時調度策略,它根據系統中運行的其他任務爲特定時間片安排任務。

更新:自從Linux 3.14以來,有一個額外的策略叫SCHED_DEADLINE。此策略在Earliest Deadline First隊列之上實施恆定帶寬服務器(CBS)算法。此策略下的每個任務都會分配一個截止日期,並執行最早的截止日期任務。描述此算法的最佳資源是Deadline scheduling in the Linux kernel

更新2:自Linux 4.13開始,SCHED_DEADLINE已將CBS替換爲Greedy Reclamation of Unused Bandwidth (GRUB) algorithm

+1

請注意,Linux調度程序可以減少SCHED_DEADLINE下的不正常進程,以便其他進程獲得CPU時間。見例如https://www.youtube.com/watch?v=AmyfSjRMcIY和http://retis.sssup.it/~jlelli/talks/rts-like14/SCHED_DEADLINE.pdf。即如果一個SCHED_DEADLINE過程說它需要5個時間片中的2個時間片,但是消耗的時間多於這個時間片,那麼它將在必要時被調整。爲了在Linux上實現硬實時,SCHED_DEADLINE可能是最好的選擇。 – 2015-10-25 12:19:44