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.