Lassen Sie uns die Unterschiede zwischen der preemptiven und der nicht preemptiven Terminplanung anhand der unten stehenden Vergleichstabelle kurz erläutern.
Vergleichstabelle
Vergleichsgrundlage | Preemptive Scheduling | Nicht präventive Terminplanung |
---|---|---|
Basic | Die 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. |
Unterbrechen | Der Prozess kann dazwischen unterbrochen werden. | Der Prozess kann nicht unterbrochen werden, bis er beendet wird oder in den Wartezustand wechselt. |
Hunger | Wenn 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. |
Overhead | Preemptive Scheduling hat einen Aufwand für die Planung der Prozesse. | Die nicht preemptive Terminplanung hat keine Gemeinkosten. |
Flexibilität | Preemptive Terminplanung ist flexibel. | Die nicht präventive Terminplanung ist starr. |
Kosten | Preemptive 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.
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.
Hauptunterschiede zwischen preemptiver und nicht preemptiver Terminplanung
- 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 .
- 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 .
- 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.
- 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.
- 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.
- 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.