Scheduling-Policies legen fest, nach welchen Regeln ein Betriebssystem-Scheduler aus den laufbereiten Prozessen den nächsten auswählt und welche Prozessklasse welche Priorität erhält. Linux unterscheidet normale und Echtzeit-Policies, die über sched_setscheduler(2) bzw. sched_setattr(2) gesetzt werden.
Normale Policies
- SCHED_OTHER: Standard-Policy für fast alle Prozesse; fairer Time-Sharing-Scheduler (CFS/EEVDF), Gewichtung über nice-Werte (−20 bis +19).
- SCHED_BATCH: für stapelartige, wenig interaktive Jobs; läuft länger ohne Unterbrechung, spart Kontextwechsel.
- SCHED_IDLE: extrem niederpriore Hintergrundarbeit, läuft nur, wenn sonst nichts zu tun ist.
Echtzeit-Policies
- SCHED_FIFO: First-In-First-Out ohne Zeitscheiben — ein laufender FIFO-Prozess gibt die CPU nur selbst oder durch Präemption durch höherprioren FIFO-Prozess ab.
- SCHED_RR: Round-Robin mit fester Zeitscheibe unter gleichprioren Echtzeit-Prozessen.
- SCHED_DEADLINE: termingesteuertes Echtzeit-Scheduling (seit Linux 3.14), garantiert jedem Task einen Anteil innerhalb einer Deadline.
Echtzeit-Policies laufen grundsätzlich vor allen normalen Prozessen; deshalb sind sie nur für zeitkritische Anwendungen gedacht (Audio, Steuerung). Das Werkzeug chrt(1) setzt Policies in der Shell.
Zusammenspiel
Die Policy bestimmt, wie der Scheduler seine Prio-Queue abarbeitet; Aging und Zeitscheiben sind Ergänzungen innerhalb einer Policy. Zusammen mit Kontextwechsel und Multitasking bilden Policies das konkrete Regelwerk des Prozess-Schedulings.