私はオペレーティングシステムを学んでいます。質問があります。たとえば、特定のプロセスグループ(グループ1)のスケジューリングポリシーは、SCHED_RR
他のプロセスグループ(グループ2)のスケジューリングポリシーはですSCHED_FIFO
。
カーネルがこれら2つのグループからプロセスを選択する必要がある場合、Linuxはどのスケジューリングポリシーを使用しますか?
このポリシーを変更できますか?それでは、どうすればいいですか?
ベストアンサー1
man sched
概念的には、スケジューラは可能な sched_priority 値ごとに実行可能なスレッドのリストを維持します。次に実行するスレッドを決定するために、スケジューラは最も高い静的優先順位を持つ空でないリストを見つけ、そのリストの先頭にあるスレッドを選択します。
スレッドの予約ポリシーは、同じ静的優先順位を持つスレッドのリストにスレッドが挿入される場所と、このリスト内を移動する方法を決定します。
リアルタイム戦略もありますが、優先順位は(全く?)重要ではありません。
スレッドがSCHED_DEADLINEポリシーに含まれている場合の保証を達成するために、SCHED_DEADLINEスレッドはシステムで最も高い優先順位(ユーザー制御可能)スレッドです。 SCHED_DEADLINEスレッドが実行可能な場合は、次のいずれかで予約されているすべてのスレッドをプリエンプトします。他の方針。