答えて

7

はい、Linuxでは、タスクのスケジューリング方法がSCHED_BATCH、SCHED_FAIR、SCHED_FIFO、SCHED_RRの4つ以下です。

スケジューリング方法にかかわらず、すべてのタスクも固定のハードプライオリティ(バッチおよびフェアでは0、FIFOおよびRRのRTスケジューリング方法では1から99)が固定されています。まず、タスクが優先順位で選択されます。最も優先度の高いものが優先されます。

しかし、同じ優先度のを実行するためのいくつかのタスクでは、スケジューリング方法が次のようになっています。公正なタスクは割り当てられた重み付けに対してのみ実行されます他の公平なタスクに関するCPU時間の分け前、FIFOタスクは別のタスクに降伏する前に固定されたタイムスライスのために実行されます(同じ優先度 - より高い優先度のタスクが常に勝ちます)。そしてRRタスクはブロックするまで同じ優先度を持つ他のタスクを無視します。

上記の記述は正確ではあるが、完全ではないことに注意してください。CPU予約機能を考慮していないため、異なるスケジューリング方法の詳細が相互に作用します。

+0

スケジューリングポリシーごとに独立した実行キューと待機キューがありますか? –

+0

スケジューリングポリシーファミリには、RT実行キュー(RRとFIFO)とフェアランキュー(niceレベルとバッチ)の実行キューがあります。 AFAIK、待機キューは、待機中のオブジェクトごとであり、スケジューリング方針には関係しません。 – gby

+0

ええ..待ち行列はデバイスごとです –

1

はい! OSの異なる段階で異なるスケジューリング方針をとっている日。ラウンドロビンは、コア実行を開始する前に一般的に行われます... FIFOは、新しいプロセスの開始段階で完了しました... !!!

+1

@chandra:あなたは中期の長期スケジューラを見ることができます。彼らはすべて同じカーネルに住んでいます。 – RKT

関連する問題