Ein Prozess-Scheduler (Scheduler = Steuerprogramm; vom englischen schedule für „Zeitplan“) ist eine Arbitrationslogik, die die zeitliche Ausführung mehrerer Prozesse in Betriebssystemen und der Anwendungsvirtualisierung regelt.
Prozess-Scheduler lassen sich grob aufteilen in:
Eine weitere mögliche Unterscheidung ist diejenige in:
Man kann verschiedene Systeme unterscheiden, in welchen jeweils verschiedene Anforderungen an den Scheduler gestellt werden:
Typische Desktop-PCs sind interaktive Systeme, auf denen gelegentlich auch Prozesse als Hintergrundprozesse mit niedrigerer Priorität ablaufen können.
Die Zuteilung der CPU an die Prozesse sollte bestmöglich erfolgen, wobei (abhängig vom ausführenden System) unterschiedliche Ziele verfolgt werden können:
Das größte Problem des Schedulers ist die Tatsache, dass die benötigten Betriebsmittel für die einzelnen Prozesse nicht im Vorfeld bekannt sind. Es lässt sich also im Allgemeinen keine optimale Planung erstellen, sondern der Scheduler muss dynamisch auf geänderte Anforderungen reagieren. Dabei können (abhängig vom Scheduler) verschiedene Zuteilungsstrategien zum Einsatz kommen, u. a.: