Unterschied zwischen preemptiver und nicht preemptiver Terminplanung in Betriebssystemen

Prozessorplanung (oder CPU-Planung) legt fest, welche Prozesse der CPU zugewiesen und aus dieser entfernt werden, basierend auf Zeitplanungsmodellen wie z Vorkaufsrecht und Nicht preemptive Terminplanung (auch bekannt als Co-operative Terminplanung).

Ältere Systeme könnten in einfachen Stand-Alone-Modi arbeiten, aber mit zunehmendem Bedarf an reaktionsfähigen, flexiblen Systemen sowie Virtualisierung bietet das effiziente Verwalten der Mehrfachverarbeitung eine schnelle Antwort auf alle Aufgaben, die die Verarbeitung der Aufgaben betreffen.

Planungseinheiten werden häufig als a bezeichnet Aufgabe und es ist die Aufgabe des Schedulers, diese Aufgaben bei Bedarf auszuführen und zu verwalten. Der Scheduler wählt die Aufgabe aus, die entfernt und der CPU zur Verarbeitung zugewiesen werden soll, abhängig vom verwendeten Scheduling-Modell.

Wie weiß der Scheduler, welche Aufgaben Priorität haben?

Der Scheduler muss einen fairen und effizienten Auswahlprozess ausführen, der variable, dynamische Verarbeitungsanforderungen berücksichtigt und die CPU-Zyklen optimal nutzt.

Aufgaben können sich während der Verarbeitung in zwei Zuständen befinden:

  1. In einem CPU-Burst wo die CPU Berechnungen zur Verarbeitung der Task ausführt (der Zeitraum für einen CPU-Burst variiert von Task zu Task und von Programm zu Programm).
  2. In einem (n Input / Output (I / O) Burst Warten auf Daten, die vom System empfangen oder gesendet werden.

Wenn sich die CPU im Leerlauf befindet, liest der Scheduler die Warteschlange bereit, und wählt die nächste auszuführende Aufgabe aus. Dann ist es das Dispatcher das gibt der ausgewählten Task die Kontrolle über die CPU, also muss sie schnell sein! Jede vom Dispatcher in Anspruch genommene Zeit wird als bezeichnet Versandlatenz.

Es gibt verschiedene Strukturen und benutzerdefinierte Parameter, um das zu definieren Warteschlange bereit, sowie mehrere Methoden, mit denen die Komplexität des Scheduling-Prozesses verwaltet werden kann.

Im Allgemeinen geht es um die Optimierung und Maximierung der CPU-Auslastung, des Durchsatzes usw.

Der Scheduler muss eine Entscheidung in einer der folgenden Stufen treffen:

  1. Wenn sich die Aufgabe von a ändert Laufen zu einem Wartezustand (z. B. Warten während einer E / A-Anforderung).
  2. Wenn sich die Aufgabe von ändert Laufen zu Bereit (zum Beispiel auf einen Interrupt reagieren).
  3. Wenn sich die Aufgabe von ändert Warten zu Bereit (zum Beispiel ist eine E / A-Anfrage abgeschlossen).
  4. Wenn der Aufgabe

Eine neue Aufgabe muss ausgewählt werden, wenn Stufe 1 oder 4 auftritt, um die volle Auslastung der CPU zu gewährleisten. In Stufe 2 und 3 kann die Aufgabe weiterlaufen oder eine neue ausgewählt werden.

Nachdem wir verstanden haben, wie eine Task verarbeitet wird, betrachten wir zwei Planungsmodelle, die sich mit CPU-Interrupts beschäftigen.

Beide verfügen über ähnliche Funktionen mit Aufgaben, Aufgabenstatus, Warteschlangen und Prioritäten (statisch oder dynamisch):

  • Nicht preemptive Terminplanung ist, wenn eine Aufgabe ausgeführt wird, bis sie (freiwillig) beendet oder beendet wird. Windows® verfügte bis Windows 3.x über eine nicht preemptive Planung. Danach wurde es von Windows 95 zu Preemptive geändert.
  • Preemptive Scheduling In diesem Fall kann eine Task durch einen CPU-Interrupt zwangsweise ausgesetzt werden, im Gegensatz zu Nicht-Preemptive, bei dem die Task ausgeführt wird, bis sie die Kontrolle über die CPU freigibt.

Nicht preemptive Terminplanung

Aufgaben innerhalb eines nicht präventiven Systems werden bis zum Abschluss ausgeführt.

Der Scheduler überprüft dann den Status aller Tasks und plant die nächste Priorität mit einem Task Bereit Zustand.

Mit der nicht preemptiven Planung kann eine Aufgabe, sobald eine Aufgabe der CPU zugewiesen wurde, nicht mehr weggenommen werden, selbst wenn kurze Aufgaben auf den Abschluss längerer Aufgaben warten müssen.

Das Planungsmanagement für alle Aufgaben ist "fair" und die Antwortzeiten sind vorhersehbar, da Aufgaben mit hoher Priorität die wartenden Aufgaben nicht weiter in die Warteschlange stellen können.

Der Scheduler stellt sicher, dass jede Aufgabe ihren Anteil an der CPU erhält, wodurch eine Verzögerung bei jeder Aufgabe vermieden wird. Die der CPU zugewiesene Zeitspanne ist möglicherweise nicht unbedingt gleich, da sie davon abhängt, wie lange die Aufgabe dauert, bis sie abgeschlossen ist.

Preemptive Scheduling

Dieses Planungsmodell ermöglicht das Unterbrechen von Tasks - im Gegensatz zu Non-Preemptive Scheduling, bei dem es um einen "Run-to-Completion-Ansatz" geht.

Die Interrupts, die von externen Aufrufen ausgelöst werden können, rufen den Scheduler auf, um eine laufende Task anzuhalten, um eine weitere Task mit höherer Priorität zu verwalten. Auf diese Weise kann die Steuerung der CPU unterbunden werden.

Die Aufgabe mit der höchsten Priorität in a Bereit Der Status wird ausgeführt, wodurch eine schnelle Reaktion auf Echtzeitereignisse ermöglicht wird.

Einige der Nachteile von Preemptive Scheduling beinhalten die Erhöhung des Ressourcenaufwands bei der Verwendung von Interrupts. Bei zwei Tasks, die Daten gemeinsam nutzen, können Probleme auftreten, da beim Aktualisieren gemeinsam genutzter Datenstrukturen eine unterbrochen werden kann und die Datenintegrität negativ beeinflusst werden kann.

Auf der anderen Seite ist es praktisch, eine Aufgabe anhalten zu können, um eine andere zu erledigen, die möglicherweise kritisch ist.

In Summe

Viele Abweichungen und Abhängigkeiten in verschiedenen Richtlinien können definiert werden, z. B. die Verwendung von "Round Robin Policy [i]" wo jede Task (mit gleicher Priorität) einmal ausgeführt und dann am Ende der Warteschlange für den nächsten Zyklus platziert wird.

Andere Richtlinien umfassen Als Erster rein, als erster raus, Kürzester Job-Erster, Shortest-Job-Next, Kürzeste verbleibende Zeit, usw.

Die Analyse historischer Daten kann Informationen zu Aspekten liefern, wie z. B. der Geschwindigkeit, mit der neue Aufgaben ankommen, CPU- und E / A-Bursts usw. So kann Wahrscheinlichkeitsverteilungen Merkmale der Wartezeiten von Aufgaben berechnen, sodass Administratoren relevante Daten erhalten und Planungsmodelle definieren.