Unterschied zwischen präemptivem und nicht-präemptivem Scheduling in Betriebssystemen

), welche Prozesse der CPU zugeordnet und von ihr entfernt werden

Prozessor Scheduling (oder CPU Scheduling ) bestimmt anhand von Scheduling-Modellen wie Preemptive und Non, welche Prozesse der CPU zugeordnet und von dieser entfernt werden -Preemptive Scheduling (auch bekannt als Co-operative Scheduling ).

Ältere Systeme könnten in einfachen Stand-alone-Modi arbeiten, aber mit steigendem Der Bedarf an reaktionsfähigen, flexiblen Systemen sowie an Virtualisierung führt zu einer effizienten Verwaltung der Mehrfachverarbeitung und ermöglicht eine schnelle Reaktion auf alle Aufgabenverarbeitungsanfragen.

Zeitpläne werden oft als Task bezeichnet und es ist der Task des Planers um diese Tasks bei Bedarf auszuführen und zu verwalten, wählt der Scheduler die Task aus, die entfernt und der CPU zur Verarbeitung zugewiesen werden soll dem verwendeten Planungsmodell.

Wie weiß der Planer, welche Aufgaben Vorrang 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 während der Verarbeitung in zwei Zuständen sein:

  1. In einem CPU Burst , in dem die CPU Berechnungen durchführt, um die Aufgabe zu verarbeiten (die Periode für einen CPU Burst variiert von Aufgabe zu Aufgabe) Programm zu programmieren).
  2. In einem Eingabe / Ausgabe (E / A) Burst warten auf Daten empfangen oder gesendet von dem System.

Wenn die CPU inaktiv ist, liest der Scheduler die Bereit-Warteschlange und wählt die nächste auszuführende Task aus. Dann ist es der Dispatcher , der der ausgewählten Task die Kontrolle über die CPU gibt, also muss sie schnell sein! Jede vom Dispatcher benötigte Zeit wird als Dispatch-Latenz bezeichnet.

Es gibt verschiedene Strukturen und benutzerdefinierte Parameter, um die Bereit-Warteschlange zu definieren, sowie verschiedene Methoden, die verwendet werden können, um die Komplexität des Planungsprozesses zu verwalten.

Im Allgemeinen geht es um Optimierung und Maximierung von CPU-Auslastung, Durchsatz usw.

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

  1. Wenn die Aufgabe von läuft zu einem Wartezustand (z. B. Warten während einer E / A-Anfrage).
  2. Wenn der Task von läuft auf Ready (zB auf einen Interrupt reagiert).
  3. Wenn der Task von Waiting auf Ready wechselt (z. B. ist eine E / A-Anforderung abgeschlossen).
  4. Wenn die Task

Eine neue Task muss ausgewählt werden, wenn Stufe 1 oder 4 die volle Auslastung der CPU gewährleistet, und sowohl in Stufe 2 als auch in Stufe 3 kann die Task weiterlaufen oder eine neue Task ausgeführt werden ausgewählt.

Nachdem wir verstanden haben, wie eine Aufgabe verarbeitet wird, betrachten wir zwei Planungsmodelle, die sich mit CPU-Interrupts befassen.

Beide haben ähnliche Funktionen mit Aufgaben, Aufgabenzuständen, Warteschlangen und Prioritäten (statisch oder dynamisch):

  • Nicht präventive Planung ist, wenn eine Aufgabe ausgeführt wird, bis sie (freiwillig) beendet wird oder beendet wird. Windows® hatte eine nicht-präventive Planung bis Windows 3. x, nach der es von Windows 95 zu Preemptive geändert wurde.
  • Preemptive Scheduling ist, wo eine Task zwangsweise durch eine CPU-Unterbrechung unterbrochen werden kann, im Gegensatz zu Non-Preemptive Aufgabe läuft, bis sie die Kontrolle über die CPU freigibt.

Nicht-Preemptive Scheduling

Tasks in einem nicht preemptiven System werden ausgeführt, bis sie abgeschlossen sind.

Der Scheduler prüft dann alle Tasks und terminiert die Task mit der nächsthöchsten Priorität mit einem Ready -Zustand.

Bei der nicht-präventiven Planung kann eine Task, sobald sie einer CPU zugewiesen wurde, nicht mehr entfernt werden, selbst wenn kurze Tasks auf den Abschluss längerer Tasks warten müssen.

Die Planungsverwaltung über alle Aufgaben hinweg ist "fair" und die Antwortzeiten sind vorhersehbar, da Aufgaben mit hoher Priorität keine wartenden Aufgaben in der Warteschlange mehr behindern können.

Der Scheduler stellt sicher, dass jede Task ihren Anteil an der CPU erhält, wodurch Verzögerungen bei jeder Aufgabe vermieden werden. Die Zeit, die der CPU zugewiesen wird, muss nicht unbedingt gleich sein, da sie davon abhängt, wie lange die Aufgabe dauert.

Preemptive Scheduling

Dieses Scheduling-Modell erlaubt es, Tasks zu unterbrechen - im Gegensatz zur nicht-präemptiven Scheduling-Methode, die einen "run-to-completion" -Ansatz hat.

Die Interrupts, die von externen Aufrufen initiiert werden können, rufen den Scheduler auf, um eine laufende Task anzuhalten, um eine andere Task höherer Priorität zu verwalten - so kann die Steuerung der CPU verhindert werden.

Die Task mit der höchsten Priorität in einem Ready -Zustand wird ausgeführt, um eine schnelle Reaktion auf Echtzeitereignisse zu ermöglichen.

Einige Nachteile bei der Preemptive Scheduling-Methode erhöhen die Overhead-Kosten für Ressourcen bei der Verwendung von Interrupts. Bei zwei Tasks, die Daten gemeinsam nutzen, können Probleme auftreten, da bei der Aktualisierung freigegebener Datenstrukturen Probleme auftreten können.

Auf der anderen Seite ist es praktisch, eine Aufgabe pausieren zu können, um eine andere zu verwalten, die kritisch sein könnte.

In Zusammenfassung

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

Andere Richtlinien umfassen First-In-First-Out , Kürzest-Job-Erstes , Kürzest-Job-Weiter , Kürzeste verbleibende Zeit usw.

Die Analyse historischer Daten kann Informationen über Aspekte wie die Rate, mit der neue Tasks ankommen, die CPU und I / O-Bursts usw. liefern, so dass Wahrscheinlichkeitsverteilungen die Wartezeiten der Tasks berechnen und somit scharfschalten können Administratoren mit relevanten Daten, um Planungsmodelle zu definieren.