Präventive und nicht-präventive Planung
Hauptunterschiede zwischen präemptiver und nicht präemptiver Planung
- Bei der präemptiven Planung wird die CPU den Prozessen für einen bestimmten Zeitraum zugewiesen, und die nicht präemptive Planungs-CPU wird dem Prozess zugewiesen, bis er beendet wird.
- Beim präemptiven Scheduling werden Aufgaben basierend auf der Priorität gewechselt, während beim nicht präemptiven Scheduling kein Wechsel stattfindet.
- Beim präemptiven Algorithmus entsteht der Overhead, den Prozess vom Bereitschaftszustand in den laufenden Zustand zu schalten, während bei der nicht präemptiven Planung kein solcher Overhead des Umschaltens entsteht.
- Preemptive Scheduling ist flexibel, während Non-Preemptive Scheduling starr ist.
Was ist Preemptive Scheduling?
Preemptive Scheduling ist eine Planungsmethode, bei der die Aufgaben meist mit ihren Prioritäten zugewiesen werden. Manchmal ist es wichtig, eine Aufgabe mit höherer Priorität vor einer anderen Aufgabe mit niedrigerer Priorität auszuführen, auch wenn die Aufgabe mit niedrigerer Priorität noch ausgeführt wird.
Zu diesem Zeitpunkt hält die Aufgabe mit niedrigerer Priorität einige Zeit an und wird fortgesetzt, wenn die Aufgabe mit höherer Priorität ihre Ausführung beendet hat.
Was ist nicht präemptive Planung?
Bei dieser Art von Planungsmethode wurde die CPU einem bestimmten Prozess zugewiesen. Der Prozess, der die CPU beschäftigt hält, gibt die CPU frei, indem er entweder den Kontext wechselt oder beendet wird.
Dies ist die einzige Methode, die für verschiedene Hardwareplattformen verwendet werden kann. Das liegt daran, dass keine spezielle Hardware (z. B. ein Timer) wie bei der präventiven Planung erforderlich ist.
Nicht-präventive Planung erfolgt, wenn ein Prozess freiwillig in den Wartezustand wechselt oder beendet wird.
Präventive und nicht-präventive Planung: Vergleichstabelle
Hier finden Sie einen direkten Vergleich zwischen präemptiver und nicht präemptiver Planung. Die Hauptunterschiede zwischen präemptiver und nicht präemptiver Planung im Betriebssystem sind folgende:
Präventive Planung | Nicht präemptive Planung |
---|---|
Ein Prozessor kann dazu verpflichtet werden, die verschiedenen Prozesse mitten in einer aktuellen Prozessausführung auszuführen. | Sobald der Prozessor seine Ausführung beginnt, muss er diese beenden, bevor er die andere ausführt. Es kann nicht mittendrin angehalten werden. |
Die CPU-Auslastung ist effizienter als bei Non-Preemptive Scheduling. | Die CPU-Auslastung ist im Vergleich zur präventiven Planung weniger effizient. |
Die Warte- und Reaktionszeit der präventiven Planung ist kürzer. | Die Warte- und Antwortzeit der nicht präemptiven Planungsmethode ist höher. |
Präventive Planung hat Priorität. Der Prozess mit der höchsten Priorität ist der Prozess, der aktuell genutzt wird. | Wenn ein Prozess in den Ausführungsstatus wechselt, wird der Status dieses Prozesses erst dann aus dem Scheduler gelöscht, wenn er seine Aufgabe beendet hat. |
Die präventive Planung ist flexibel. | Die nicht präventive Planung ist starr. |
Beispiele: – Kürzeste verbleibende Zeit zuerst, Round Robin usw. | Beispiele: Wer zuerst kommt, malt zuerst, Kürzester Job zuerst, Prioritätsplanung usw. |
Der Preemptive-Scheduling-Algorithmus kann präventiv ausgeführt werden, d. h. der Prozess kann geplant werden | Im nicht präventiven Planungsprozess kann kein Zeitplan erstellt werden |
Dabei wird den Prozessen die CPU für einen bestimmten Zeitraum zugewiesen. | In diesem Prozess wird dem Prozess CPU zugewiesen, bis er beendet wird oder in den Wartezustand wechselt. |
Der präventive Algorithmus hat den Aufwand, den Prozess vom Bereitschaftszustand in den laufenden Zustand und umgekehrt zu schalten. | Bei der nicht-präventiven Planung entsteht kein solcher Aufwand, den Prozess vom laufenden in den Bereitschaftszustand zu versetzen. |
Vorteile der präventiven Planung
Hier sind die Vorteile/Vorteile der Preemptive Scheduling-Methode:
- Die präemptive Planungsmethode ist ein robusterer Ansatz, sodass ein Prozess die CPU nicht monopolisieren kann
- Wahl der laufenden Aufgabe wird nach jeder Unterbrechung neu überdacht.
- Jedes Ereignis führt zu einer Unterbrechung laufender Aufgaben
- Das Betriebssystem stellt sicher, dass die CPU-Auslastung aller laufenden Prozesse gleich ist.
- Dabei ist die CPU-Nutzung gleich, dh alle laufenden Prozesse nutzen die CPU gleichermaßen.
- Diese Planungsmethode verbessert auch die durchschnittliche Antwortzeit.
- Preemptive Scheduling ist vorteilhaft, wenn wir es für die Multiprogrammierungsumgebung verwenden.
Vorteile der nicht präventiven Planung
Hier sind die Vorteile/Vorteile der nicht-präventiven Planungsmethode:
- Bietet einen geringen Planungsaufwand
- Bietet tendenziell einen hohen Durchsatz
- Es handelt sich konzeptionell um eine sehr einfache Methode
- Less Rechenressourcenbedarf für Scheduling
Nachteile der präventiven Planung
Die Nachteile der präemptiven Planung sind:
- Benötigt begrenzte Rechenressourcen für die Planung
- Der Planer benötigt mehr Zeit, um die laufende Aufgabe anzuhalten, den Kontext zu wechseln und die neue eingehende Aufgabe zu versenden.
- Der Prozess mit niedriger Priorität muss länger warten, wenn einige Prozesse mit hoher Priorität kontinuierlich eintreffen.
Nachteile der nicht-präventiven Planung
Hier sind die Nachteile/Nachteile der nicht-präventiven Planungsmethode:
- Dies kann insbesondere bei diesen Echtzeitaufgaben zu einer Hungersnot führen
- Fehler können dazu führen, dass eine Maschine einfriert
- Es kann in Echtzeit erfolgen und Prioritätsplanung schwer
- Schlechte Reaktionszeit für Prozesse
Beispiel für nicht-präventive Planung
Bei der nicht präemptiven SJF-Planung hält der Prozess den CPU-Zyklus, sobald er einem Prozess zugewiesen wurde, bis er einen Wartezustand erreicht oder beendet wird.
Betrachten Sie die folgenden fünf Prozesse, von denen jeder seine eigene Burst-Zeit und Ankunftszeit hat.
Warteschlange verarbeiten | Burst-Zeit | Ankunftszeit |
---|---|---|
P1 | 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | 4 | 4 |
Schritt 0) Zum Zeitpunkt = 0 trifft P4 ein und beginnt mit der Ausführung.
Schritt 1) Zum Zeitpunkt = 1 kommt Prozess P3 an. Für den Abschluss benötigt P4 jedoch noch zwei Ausführungseinheiten. Die Ausführung wird fortgesetzt.
Schritt 2) Zum Zeitpunkt =2 trifft Prozess P1 ein und wird zur Warteschlange hinzugefügt. P4 wird die Ausführung fortsetzen.
Schritt 3) Zum Zeitpunkt = 3 beendet Prozess P4 seine Ausführung. Die Burst-Zeit von P3 und P1 wird verglichen. Prozess P1 wird ausgeführt, da seine Burst-Zeit im Vergleich zu P3 kürzer ist.
Schritt 4) Zum Zeitpunkt = 4 trifft Prozess P5 ein und wird zur Warteschlange hinzugefügt. P1 setzt die Ausführung fort.
Schritt 5) Zum Zeitpunkt = 5 trifft Prozess P2 ein und wird zur Warteschlange hinzugefügt. P1 setzt die Ausführung fort.
Schritt 6) Zum Zeitpunkt = 9 beendet Prozess P1 seine Ausführung. Die Burst-Zeit von P3, P5 und P2 wird verglichen. Prozess P2 wird ausgeführt, weil seine Burst-Zeit am niedrigsten ist.
Schritt 7) Zum Zeitpunkt = 10 wird P2 ausgeführt und P3 und P5 befinden sich in der Warteschlange.
Schritt 8) Zum Zeitpunkt = 11 beendet Prozess P2 seine Ausführung. Die Burst-Zeit von P3 und P5 wird verglichen. Prozess P5 wird ausgeführt, da seine Burst-Zeit geringer ist.
Schritt 9) Zum Zeitpunkt = 15 beendet Prozess P5 seine Ausführung.
Schritt 10) Zum Zeitpunkt = 23 beendet Prozess P3 seine Ausführung.
Schritt 11) Berechnen wir die durchschnittliche Wartezeit für das obige Beispiel.
Wait time P4= 0-0=0 P1= 3-2=1 P2= 9-5=4 P5= 11-4=7 P3= 15-1=14 Average Waiting Time= 0+1+4+7+14/5 = 26/5 = 5.2
Beispiel für eine vorbeugende Planung
Betrachten Sie hierzu die folgenden drei Prozesse in Round-Robin
Warteschlange verarbeiten | Burst-Zeit |
---|---|
P1 | 4 |
P2 | 3 |
P3 | 5 |
Schritt 1) Die Ausführung beginnt mit Prozess P1, der die Burst-Zeit 4 hat. Hier wird jeder Prozess 2 Sekunden lang ausgeführt. P2 und P3 stehen noch in der Warteschlange.
Schritt 2) Zum Zeitpunkt =2 wird P1 am Ende der Warteschlange hinzugefügt und P2 beginnt mit der Ausführung
Schritt 3) Bei time=4 wird P2 vorbelegt und am Ende der Warteschlange hinzugefügt. P3 beginnt mit der Ausführung.
Schritt 4) Bei time=6 wird P3 vorbelegt und am Ende der Warteschlange hinzugefügt. P1 beginnt mit der Ausführung.
Schritt 5) Bei time=8 hat P1 eine Burst-Zeit von 4. Die Ausführung ist abgeschlossen. P2 startet die Ausführung
Schritt 6) P2 hat eine Burst-Zeit von 3. Es wurde bereits für 2 Intervalle ausgeführt. Zum Zeitpunkt = 9 schließt P2 die Ausführung ab. Dann beginnt P3 mit der Ausführung, bis sie abgeschlossen ist.
Schritt 7) Berechnen wir die durchschnittliche Wartezeit für das obige Beispiel.
Wait time P1= 0+ 4= 4 P2= 2+4= 6 P3= 4+3= 7