web-dev-qa-db-ja.com

Linux SCHED_OTHER、SCHED_FIFO、およびSCHED_RR-違い

SCHED_OTHER、SCHED_FIFO、SCHED_RRの違いを誰かが説明できますか?

ありがとう

27
eve

SCHED_FIFOとSCHED_RRは、いわゆる「リアルタイム」ポリシーです。 POSIX標準で指定された固定優先度のリアルタイムスケジューリングを実装します。これらのポリシーを持つタスクは、他のすべてのタスクよりも優先されるため、簡単に飢into状態に陥ります(CPUを解放しない場合)。

SCHED_FIFOとSCHED_RRの違いは、同じ優先度のタスク間で、SCHED_RRが特定のタイムスライスでラウンドロビンを実行することです。代わりに、SCHED_FIFOには、プロセッサを明示的に解放するタスクが必要です。

SCHED_OTHERは、システムで実行されている他のタスクに応じて特定のタイムスライスのタスクをスケジュールする一般的なラウンドロビンタイムシェアリングスケジューリングポリシーです。

Update:Linux 3.14以降、 SCHED_DEADLINE と呼ばれる追加のポリシーがあります。このポリシーは、 Earliest Deadline First キューの上にConstant Bandwidth Server(CBS)アルゴリズムを実装します。このポリシーに基づく各タスクには期限が割り当てられ、最も早い期限のタスクが実行されます。このアルゴリズムを説明する最適なリソースは、 Linuxカーネルの締切スケジューリング です。

更新2:Linux 4.13以降、SCHED_DEADLINEはCBSを Greedy Reclamation of Unused Bandwidth(GRUB)アルゴリズム に置き換えました。

47
Claudio