10 Unterschied zwischen präemptiver und nicht präemptiver Planung mit Beispiel

Das Prozessor-Scheduling (CPU-Scheduling) bestimmt basierend auf Scheduling-Modellen wie präemptiven und nicht-präemptiven Scheduling, welche Prozesse der CPU zugewiesen und aus ihr entfernt werden. CPU-Scheduling nutzt die CPU voll aus, was zu einem schnellen und effizienten System führt.

präemptive vs. nicht-präemptive Planung

Üblicherweise werden Aufgaben in Computersystemen nach Prioritäten zugewiesen. Irgendwann ist es notwendig, eine bestimmte Aufgabe vor einer anderen auszuführen, obwohl sie läuft. Daher wird die laufende Task für einige Zeit unterbrochen und später fortgesetzt, wenn die Ausführung der priorisierten Task beendet ist. Dies wird als präemptives Scheduling bezeichnet . Die präemptive Planung wird verwendet, wenn ein Prozess vom laufenden Zustand in den Bereitschaftszustand oder vom Wartezustand in den Bereitschaftszustand wechselt.

Beim nicht-präemptiven Scheduling unterbricht das Scheduling keinen Prozess, der die CPU mitten in der Ausführung ausführt. Stattdessen wartet er, bis der Prozess seine CPU-Burstzeit abgeschlossen hat, und kann dann die CPU einem anderen Prozess zuweisen. Nicht-präemptives Scheduling ist das einzige Verfahren, das auf bestimmten Hardwareplattformen verwendet werden kann, da es keine spezielle Hardware benötigt, beispielsweise einen Timer, der für präemptives Scheduling benötigt wird.

Der Unterschied

  1. Preemptives Scheduling bedeutet, dass die Prozesse mit höheren Prioritäten zuerst ausgeführt werden. Ein Prozess kann während seiner Ausführung von einem anderen Prozess unterbrochen werden. Andererseits bedeutet die nicht-präemptive Planung, dass, sobald die CPU einem Prozess zugewiesen wurde, der Prozess die CPU behält, bis er die CPU entweder durch Beenden oder durch Umschalten in den Wartezustand freigibt.
  2. Nicht-präemptives Scheduling kann als starr bezeichnet werden, denn selbst wenn ein kritischer Prozess in die Bereitschaftswarteschlange eintritt, wird der Prozess, auf dem die CPU ausgeführt wird, nicht unterbrochen. Andererseits kann präemptives Scheduling als flexibel bezeichnet werden, da es den kritischen Prozessen ermöglicht, auf die CPU zuzugreifen, wenn sie in der Bereitschaftswarteschlange ankommen, unabhängig davon, welcher Prozess gerade ausgeführt wird.
  3. Wenn bei der präemptiven Planung ein Prozess mit höherer Priorität in eine Bereitschaftswarteschlange eintritt, wird der Prozess mit der niedrigeren Priorität entfernt, während bei der nicht präemptiven Planung der Prozess, sobald der Prozess der CPU zugewiesen wurde, seine Ausführung abschließt.
  4. Bei der nicht-präemptiven Planung kann der Prozess nicht geplant werden, während bei der präemptiven Planung der Prozess geplant werden kann.
  5. Die präemptive Planung kann ein Problem verursachen, wenn zwei Prozesse Daten gemeinsam nutzen, da einer während der Aktualisierung gemeinsam genutzter Datenstrukturen unterbrochen werden kann. Dies ist bei der nicht-präemptiven Planung normalerweise nicht der Fall.
  6. Nicht-präemptives Scheduling hat keinen Overhead des Umschaltens des Prozesses vom laufenden Zustand in den bereit-Zustand, wohingegen präemptives Scheduling den Overhead des Umschaltens des Prozesses vom bereit-Zustand in den laufenden Zustand, den laufenden Zustand in den bereit-Zustand hat.
  7. Beim präemptiven Scheduling ist die CPU-Auslastung höher als beim nicht-präemptiven Scheduling.
  8. Wenn bei der nicht-präemptiven Planung die CPU dem Prozess mit einer größeren Burst-Zeit zugewiesen wird, müssen die Prozesse mit einer kleinen Burst-Zeit möglicherweise hungern. Im Gegensatz dazu muss beim präemptiven Scheduling, wenn ein Prozess mit hoher Priorität häufig in der Bereitschaftswarteschlange ankommt, der Prozess mit niedriger Priorität lange warten und muss möglicherweise verhungern.
  9. Das präemptive Scheduling ist im Vergleich zum nicht-präemptiven Scheduling teuer, da es die Integrität der gemeinsam genutzten Daten aufrechterhalten muss

Präventive Planung vs. Nicht-präemptive Planung in Tabellenform

VERGLEICHSGRUNDLAGEPRÄEMPTIVE PLANUNGNICHT-PRÄEMPTIVE PLANUNG
BeschreibungPreemptives Scheduling bedeutet, dass die Prozesse mit höheren Prioritäten zuerst ausgeführt werden. Ein Prozess kann während seiner Ausführung von einem anderen Prozess unterbrochen werden. Eine nicht-präemptive Planung bedeutet, dass, sobald die CPU einem Prozess zugewiesen wurde, der Prozess die CPU behält, bis er die CPU entweder durch Beenden oder durch Umschalten in den Wartezustand freigibt.  
Alternative BeschreibungDas präemptive Scheduling kann als flexibel bezeichnet werden, da es den kritischen Prozessen ermöglicht, auf die CPU zuzugreifen, sobald sie in der Bereitschaftswarteschlange ankommen, unabhängig davon, welcher Prozess gerade ausgeführt wird.  Nicht-präemptives Scheduling kann als starr bezeichnet werden, denn selbst wenn ein kritischer Prozess in die Bereitschaftswarteschlange eintritt, wird der Prozess, auf dem die CPU ausgeführt wird, nicht unterbrochen.
ProzessausführungWenn beim präemptiven Scheduling ein Prozess mit höherer Priorität in eine Bereitschaftswarteschlange eintritt, wird der Prozess mit niedrigerer Priorität entfernt.  Beim nicht-präemptiven Scheduling wird der Prozess, sobald er der CPU zugewiesen wurde, seine Ausführung abschließen.
ProzessplanungBei der präemptiven Planung kann der Prozess geplant werden.  Bei der nicht präemptiven Planung kann der Prozess nicht geplant werden.  
Problem bei der DatenfreigabeDie präemptive Planung kann ein Problem verursachen, wenn zwei Prozesse Daten gemeinsam nutzen, da einer während der Aktualisierung gemeinsam genutzter Datenstrukturen unterbrochen werden kann.Dies ist bei der nicht-präemptiven Planung normalerweise nicht der Fall.  
Overhead für das Umschalten des ProzessesDas präemptive Scheduling hat den Overhead, den Prozess vom Bereitschaftszustand in den Ausführungszustand und vom Ausführungszustand in den Bereitschaftszustand zu schalten.  Nicht-präemptives Scheduling hat keinen Overhead für das Umschalten des Prozesses vom laufenden Zustand in den Bereitschaftszustand
CPU-AuslastungBeim präemptiven Scheduling ist die CPU-Auslastung höher als beim nicht-präemptiven Scheduling.  Beim nicht-präemptiven Scheduling ist die CPU-Auslastung niedriger als beim präemptiven Scheduling.
wird bearbeitetWenn 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 muss möglicherweise verhungern.  Wenn bei der nicht-präemptiven Planung die CPU dem Prozess mit einer größeren Burst-Zeit zugewiesen wird, müssen die Prozesse mit einer kleinen Burst-Zeit möglicherweise hungern.
KostenDas präemptive Scheduling ist im Vergleich zum nicht-präemptiven Scheduling teuer, da es die Integrität der gemeinsam genutzten Daten aufrechterhalten muss.  Das nicht-präemptive Scheduling ist im Vergleich zum präemptiven Scheduling weniger kostspielig, da es die Integrität gemeinsam genutzter Daten nicht aufrechterhalten muss.  

Lesen Sie auch : Unterschied zwischen Prozess und Thread

Vor- und Nachteile der präemptiven Planung gegenüber der nicht präemptiven Planung 

Das präemptive Scheduling ermöglicht es dem Scheduler, die Antwortzeiten zu steuern, indem er die CPU von einem Prozess wegnimmt, von dem er entschieden hat, dass er zu lange läuft, um einen anderen Prozess laufen zu lassen. Es verursacht mehr Overhead als nicht-präemptives Scheduling, da es mit dem Overhead von Kontextwechselprozessen fertig werden muss, anstatt zuzulassen, dass ein Prozess bis zum Abschluss oder bis zur nächsten E/A-Operation oder einem anderen Systemaufruf läuft. Es ermöglicht jedoch einen höheren Grad an Parallelität und eine bessere interaktive Leistung.