Prozess-Scheduler

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:

  1. Stapelverarbeitungssysteme: hier sieht der Scheduler denkbar einfach aus: ankommende Aufträge werden in eine Warteschlange eingereiht und jedes Mal, wenn ein Job abgearbeitet ist, kommt der nächste aus der Schlange dran (Queue-Manager).
  2. interaktive Systeme: der Benutzer legt Wert auf kurze Antwortzeit. Wenn er beispielsweise in einem Texteditor eine Tastatureingabe tätigt, sollte der Text sofort erscheinen.
  3. Echtzeitsysteme: sie müssen garantieren, dass ein Prozess eine Aufgabe innerhalb einer vorgegebenen Zeitspanne abgearbeitet haben muss. Bei harten Echtzeitanforderungen wird das in 100 % aller Fälle garantiert, während bei weichen Anforderungen das Zeitlimit in einigen wenigen Fällen überschritten werden darf.

Typische Desktop-PCs sind interaktive Systeme, auf denen gelegentlich auch Prozesse als Hintergrundprozesse mit niedrigerer Priorität ablaufen können.

Ziele

Die Zuteilung der CPU an die Prozesse sollte bestmöglich erfolgen, wobei (abhängig vom ausführenden System) unterschiedliche Ziele verfolgt werden können:

Allgemein

  • Fairness: Kein Prozess sollte unverhältnismäßig lange warten müssen, während ein anderer bevorzugt wird.
  • Balance: Die Prozesse sollten der CPU auf eine Weise zugeteilt werden, dass auch andere Ressourcen wie Massenspeicher, Netzwerk-Schnittstelle u. a. ausgelastet sind.
  • Einhaltung der Systemregeln.

Stapelverarbeitungssysteme

  • CPU-Auslastung: Die CPU sollte zu jeder Zeit ausgelastet sein. Es soll nicht vorkommen, dass die CPU sich im Leerlauf befindet, nur weil ein Prozess auf Daten von der Festplatte wartet.
  • Durchsatz: Die Anzahl beendeter Aufgaben pro Zeitspanne sollte maximiert werden. Dies ergibt eine ähnliche Strategie wie die Auslastung, betrachtet aber mehr das tatsächliche Ergebnis.
  • kurze Turnaroundzeit (Durchlaufzeit): Die Zeit, die von der Ankunft eines Prozesses bis zu seiner vollständigen Beendigung vergeht, sollte minimiert werden.

Interaktive Systeme (Dialogsysteme)

  • Niedrige Antwortzeiten: Die Wartezeiten des Benutzers (oder anderer Systeme) sollten minimiert werden. Prozesse, die eine Interaktion mit dem Benutzer erfordern, sollten also bevorzugt werden vor solchen, die im Hintergrund stattfinden können.
  • Proportionalität: Die Antwortzeiten verschiedener Prozesse sollten den Erwartungen des Benutzers entsprechen. Werden Prozesse (wie z. B. das Schließen einer Anwendung) vom Benutzer als simpel betrachtet, sollten diese auch schnell ausgeführt werden.

Echtzeitsysteme

Strategien

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.:

Scheduling-Verfahren

Literatur

Einzelnachweise

  1. ↑ Otto Spaniol: Systemprogrammierung : Skript zur Vorlesung an der RWTH Aachen. 1996, ISBN 3-86073-470-9
  2. ↑ David Petrou, John W. Milford, Garth A. Gibson: Implementing Lottery Scheduling: Matching the Specializations in Traditional Schedulers. (PDF) In: USENIX. USENIX Annual Technical Conference, 6. Juni 1999, abgerufen am 8. November 2021 (englisch).
  3. ↑ Credit Scheduler im Xen-Wiki
  4. ↑ Credit2 Scheduler im Xen-Wiki