Empfohlen, 2019

Tipp Der Redaktion

Unterschied zwischen preemptiver und nicht preemptiver Planung im Betriebssystem

Es liegt in der Verantwortung des CPU-Schedulers, einen Prozess der CPU zuzuordnen, wenn sich die CPU im Ruhezustand befindet. Der CPU-Scheduler wählt einen Prozess aus der Ready-Warteschlange aus und ordnet den Prozess der CPU zu. Die Planung, die stattfindet, wenn ein Prozess vom laufenden Zustand in den Bereitschaftszustand oder vom Wartezustand in den Bereitschaftszustand wechselt, wird als präventive Planung bezeichnet . Auf der Hand ist die Zeitplanung, die stattfindet, wenn ein Prozess beendet wird oder von einem laufenden in einen wartenden Zustand übergeht, diese Art der CPU-Zeitplanung als nicht vorrangige Zeitplanung bezeichnet . Der grundlegende Unterschied zwischen der präventiven und der nicht preemptiven Terminplanung liegt in ihrem Namen. Das heißt, eine preemptive Terminplanung kann verhindert werden; Die Prozesse können geplant werden. Bei der nicht präventiven Terminplanung können die Prozesse nicht geplant werden.

Lassen Sie uns die Unterschiede zwischen der preemptiven und der nicht preemptiven Terminplanung anhand der unten stehenden Vergleichstabelle kurz erläutern.

Vergleichstabelle

VergleichsgrundlagePreemptive SchedulingNicht präventive Terminplanung
BasicDie Ressourcen werden für einen begrenzten Zeitraum einem Prozess zugeordnet.Sobald einem Prozess Ressourcen zugewiesen sind, hält der Prozess ihn so lange, bis er seine Burst-Zeit beendet oder in den Wartezustand wechselt.
UnterbrechenDer Prozess kann dazwischen unterbrochen werden.Der Prozess kann nicht unterbrochen werden, bis er beendet wird oder in den Wartezustand wechselt.
HungerWenn häufig ein Prozess mit hoher Priorität in der Bereitschaftswarteschlange eingeht, kann der Prozess mit niedriger Priorität verhungern.Wenn ein Prozess mit langer Burst-Zeit die CPU ausführt, kann ein anderer Prozess mit weniger CPU-Burst-Zeit verhungern.
OverheadPreemptive Scheduling hat einen Aufwand für die Planung der Prozesse.Die nicht preemptive Terminplanung hat keine Gemeinkosten.
FlexibilitätPreemptive Terminplanung ist flexibel.Die nicht präventive Terminplanung ist starr.
KostenPreemptive Scheduling ist mit Kosten verbunden.Nicht-preemptive Terminplanung ist nicht kostenassoziativ.

Definition der vorbeugenden Einplanung

Preemptive Scheduling kann unter den Umständen durchgeführt werden, wenn ein Prozess vom Betriebszustand in den Bereitschaftszustand oder vom Wartezustand in den Bereitschaftszustand wechselt . Hier werden die Ressourcen (CPU-Zyklen) für eine begrenzte Zeit dem Prozess zugewiesen und dann entfernt, und der Prozess wird wieder in die Bereitschaftswarteschlange gestellt, wenn noch CPU-Burst-Zeit übrig ist. Der Prozess bleibt in der Warteschlange, bis er die nächste Chance zur Ausführung erhält.

Wenn ein Prozess mit hoher Priorität in der Bereitschaftswarteschlange ankommt, muss er nicht warten, bis der aktuelle Prozess seine Burst-Zeit abgeschlossen hat. Stattdessen wird der aktuelle Prozess mitten in der Ausführung unterbrochen und in die Bereitschaftswarteschlange gestellt, bis der Prozess mit hoher Priorität die CPU-Zyklen verwendet. Auf diese Weise erhält jeder Prozess in der Ready-Warteschlange etwas Zeit, um die CPU auszuführen. Dadurch wird die preemptive Terminplanung flexibel, erhöht jedoch den Aufwand für die Umstellung des Prozesses vom Betriebszustand in den Bereitschaftszustand und umgekehrt.

Algorithmen, die nach präemptiven Zeitplänen arbeiten, sind Round Robin. Shortest Job First (SJF) und Prioritätsplanung können unter die präemptive Planung fallen oder auch nicht.

Nehmen wir ein Beispiel für Preemptive Scheduling. Sehen Sie sich das Bild unten an. Wir haben vier Prozesse P0, P1, P2, P3. Davon kommt P2 zum Zeitpunkt 0 an. Die CPU wird also dem Prozess P2 zugewiesen, da sich in der Warteschlange kein anderer Prozess befindet. Während P2 ausgeführt wurde, kommt P3 zum Zeitpunkt 1 an, jetzt ist die verbleibende Zeit für Prozess P2 (5 Millisekunden) länger als die von P3 benötigte Zeit (4 Millisekunden). Die CPU ist also dem Prozessor P3 zugeordnet.

Während P3 ausgeführt wurde, kommt der Prozess P1 zum Zeitpunkt 2. Nun ist die verbleibende Zeit für P3 (3 Millisekunden) geringer als die Zeit, die von den Prozessen P1 (4 Millisekunden) und P2 (5 Millisekunden) benötigt wird. P3 darf also weiterfahren. Während P3 fortfährt, kommt P0 zum Zeitpunkt 3 an, jetzt ist die verbleibende Zeit für P3 (2 Millisekunden) gleich der Zeit, die für P0 (2 Millisekunden) erforderlich ist. P3 fährt also fort und nach Beendigung von P3 wird die CPU P0 zugewiesen, da sie weniger Burst-Zeit hat als andere. Nach Beendigung von P0 wird die CPU P1 und dann P2 zugewiesen.

Definition der nicht präventiven Terminplanung

Nicht-preemptive Scheduling ist eine Planung, die unter den Umständen angewendet werden kann, wenn ein Prozess beendet wird oder ein Prozess vom laufenden in den Wartezustand wechselt . Sobald die Ressourcen (CPU) einem Prozess zugeordnet sind, hält der Prozess die CPU so lange an, bis sie beendet wird oder einen Wartezustand erreicht.

Im Gegensatz zur vorbeugenden Planung unterbricht die nicht vorbeugende Planung keinen Prozess, in dem die CPU mitten in der Ausführung ausgeführt wird. Stattdessen wartet er darauf, dass der Prozess seine CPU-Burst-Zeit abgeschlossen hat, und kann dann die CPU einem anderen Prozess zuordnen.

Wenn ein Prozess mit langer CPU-Burst-Zeit ausgeführt wird, muss der andere Prozess eine lange Zeit warten, was die durchschnittliche Wartezeit der Prozesse in der Bereitschaftswarteschlange erhöht. Die nicht preemptive Terminplanung hat jedoch keinen Aufwand für das Umschalten der Prozesse von der Bereitschaftswarteschlange auf die CPU, sie macht jedoch die Terminplanung starr, da der gerade ausgeführte Prozess für einen Prozess mit höherer Priorität nicht einmal ausgeschlossen ist.

Lassen Sie uns das obige Planungsbeispiel auf nicht präventive Weise lösen. Da der Prozess P2 anfänglich zum Zeitpunkt 0 ankommt, ist die CPU dem Prozess P2 zugeordnet, dessen Ausführung 6 Millisekunden dauert. Dazwischen kommen alle Prozesse, dh P0, P1, P3, in die Warteschlange. Aber alles wartet, bis der Prozess P2 seine CPU-Burst-Zeit beendet hat. Dann wird der Prozess, der nach P2 ankommt, dh P3 wird der CPU zugewiesen, bis die Burst-Zeit abgelaufen ist. In ähnlicher Weise wird dann P1 ausgeführt, und die CPU wird später an den Prozess P0 übergeben.

Hauptunterschiede zwischen preemptiver und nicht preemptiver Terminplanung

  1. Der grundlegende Unterschied zwischen preemptive und non preemptive Scheduling besteht darin, dass bei preemptive Scheduling die CPU den Prozessen für die begrenzte Zeit zugewiesen wird. Während der nicht präventiven Planung wird die CPU dem Prozess zugewiesen, bis er beendet wird oder in den Wartezustand wechselt .
  2. Der ausführende Prozess in der präemptiven Zeitplanung wird mitten in der Ausführung unterbrochen, wohingegen der ausführende Prozess in der nicht präemptiven Zeitplanung mitten in der Ausführung nicht unterbrochen wird .
  3. Preemptive Scheduling hat den Aufwand, den Prozess vom Bereitschaftszustand in den Laufzustand zu wechseln, Vise-Verse zu machen und die Bereitschafts-Warteschlange aufrechtzuerhalten. Auf der anderen Seite hat eine nicht preemptive Planung keinen zusätzlichen Aufwand, um den Prozess vom Betriebszustand in den Bereitschaftszustand umzuschalten.
  4. Wenn bei der präemptiven Planung häufig ein Prozess mit hoher Priorität in der Bereitschaftswarteschlange ankommt, muss der Prozess mit niedriger Priorität lange warten, und er muss möglicherweise hungern. Auf der anderen Seite müssen in der nicht präventiven Planung, wenn die CPU dem Prozess mit einer größeren Burstzeit zugewiesen wird, die Prozesse mit einer kleinen Burstzeit möglicherweise verhungern.
  5. Preemptive Scheduling ist sehr flexibel, da die kritischen Prozesse auf die CPU zugreifen dürfen, sobald sie in der Warteschlange ankommen, unabhängig davon, welcher Prozess gerade ausgeführt wird. Die nicht preemptive Planung ist starr, da selbst wenn ein kritischer Prozess in die Warteschlange einläuft, der laufende Prozess der CPU nicht gestört wird.
  6. Das Preemptive Scheduling ist kostenassoziativ, da es die Integrität gemeinsam genutzter Daten aufrechterhalten muss, was bei Non-Preemptive Scheduling nicht der Fall ist.

Fazit:

Es ist nicht so, dass preemptive Scheduling besser ist als nicht preemptive Scheduling oder Vise-verse. Alles hängt davon ab, wie eine Planung die durchschnittliche Wartezeit der Prozesse minimiert und die CPU-Auslastung maximiert.

Top