Linuxカーネルで同時に機能する3つ以上のスケジューリングポリシーがありますか?FIFOとラウンドロビンは同じマシンで動作できますか?
2 に答える
はい、Linux は 4 つ以上の異なるタスクのスケジューリング方法をサポートしています: SCHED_BATCH、SCHED_FAIR、SCHED_FIFO、および SCHED_RR。
スケジューリング方法に関係なく、すべてのタスクには固定のハード優先度もあります (バッチおよび公平の場合は 0、FIFO および RR の RT スケジューリング方法の場合は 1 ~ 99)。タスクは何よりもまず優先度によって選択されます。優先度が最も高いタスクが優先されます。
ただし、複数のタスクを同じ優先度で実行できる場合、ここでスケジューリング方法が開始されます。公平なタスクは、割り当てられた重み付けされた (重みはタスクのナイス レベルと呼ばれるソフトな優先度に由来する) シェアに対してのみ実行されます。他の公平なタスクに関する CPU 時間。FIFO タスクは、別のタスク (同じ優先度の - 優先度の高いタスクが常に優先される) に譲る前に固定タイム スライスで実行され、RR タスクはブロックされるまで実行され、同じ優先度を持つ他のタスクを無視します。優先順位。
上記の記述は正確ですが完全ではないことに注意してください。これは、事前の CPU 予約機能を考慮していないためです。ただし、相互に作用するさまざまなスケジューリング方法の詳細を示しています。
はい !!現在、OS のさまざまな段階でさまざまなスケジューリング ポリシーがあります.. ラウンド ロビンは通常、コア実行を取得する前に行われます... fifo は、新しく来るプロセスの開始段階で行われます... !!!