Was ist Context Switching im Betriebssystem?
Im Betriebssystem gibt es Fälle, in denen man den Prozess, der sich im laufenden Zustand befindet, in einen anderen Zustand wie Bereitschaft oder Warten/Blockieren zurückbringen muss. Wenn der laufende Prozess eine E/A-Operation durchführen möchte, müssen Sie den Prozess aus dem laufenden Zustand entfernen und ihn dann in die E/A-Warteschlange stellen. Manchmal kann der Prozess einen Round-Robin-Scheduling-Algorithmus verwenden, bei dem der Prozess nach jedem festgelegten Zeitquantum vom laufenden Zustand in den Bereitschaftszustand zurückkehren muss. Diese Prozessumschaltungen werden mit Hilfe von Context Switching durchgeführt. In diesem Blog werden wir das Konzept des Context Switching im Betriebssystem kennenlernen und uns auch mit den Vor- und Nachteilen des Context Switching beschäftigen. Also, fangen wir an.
Was ist Context Switching?
Ein Context Switching ist ein Prozess, bei dem die CPU von einem Prozess oder einer Aufgabe zu einer anderen wechselt. Bei diesem Phänomen wird die Ausführung des Prozesses, der sich im laufenden Zustand befindet, vom Kernel angehalten und ein anderer Prozess, der sich im Bereitschaftszustand befindet, wird von der CPU ausgeführt.
Es ist eines der wesentlichen Merkmale des Multitasking-Betriebssystems. Die Prozesse werden so schnell umgeschaltet, dass dem Benutzer die Illusion vermittelt wird, dass alle Prozesse gleichzeitig ausgeführt werden.
Aber der Prozess der Kontextumschaltung umfasst eine Reihe von Schritten, die befolgt werden müssen. Man kann einen Prozess nicht direkt vom laufenden Zustand in den Bereitschaftszustand umschalten. Sie müssen den Kontext des Prozesses speichern. Wenn man den Kontext eines Prozesses P nicht speichert, dann wird der Prozess nach einiger Zeit, wenn der Prozess P wieder zur Ausführung in die CPU kommt, von vorne beginnen. In Wirklichkeit sollte er jedoch an dem Punkt fortfahren, an dem er die CPU bei seiner vorherigen Ausführung verlassen hat. Daher sollte der Kontext des Prozesses gespeichert werden, bevor ein anderer Prozess in den laufenden Zustand versetzt wird.
Ein Kontext ist der Inhalt der Register und des Programmzählers einer CPU zu einem beliebigen Zeitpunkt. Kontextwechsel können aus folgenden Gründen erfolgen:
- Wenn ein Prozess mit hoher Priorität in den Bereitschaftszustand kommt. In diesem Fall sollte die Ausführung des laufenden Prozesses gestoppt werden und der Prozess mit höherer Priorität sollte die CPU zur Ausführung erhalten.
- Wenn eine Unterbrechung auftritt, sollte der Prozess im laufenden Zustand gestoppt werden und die CPU sollte die Unterbrechung behandeln, bevor sie etwas anderes tut.
- Wenn ein Übergang zwischen dem Benutzermodus und dem Kernelmodus erforderlich ist, müssen Sie die Kontextumschaltung durchführen.
Schritte bei der Kontextumschaltung
Der Prozess der Kontextumschaltung umfasst eine Reihe von Schritten. Das folgende Diagramm zeigt den Prozess der Kontextumschaltung zwischen den beiden Prozessen P1 und P2.
In der obigen Abbildung ist zu sehen, dass sich der Prozess P1 anfangs im laufenden Zustand befindet und der Prozess P2 im Bereitschaftszustand ist. Wenn nun eine Unterbrechung auftritt, müssen Sie den Prozess P1 nach dem Speichern des Kontexts vom laufenden Zustand in den Bereitschaftszustand und den Prozess P2 vom Bereitschaftszustand in den laufenden Zustand schalten. Die folgenden Schritte werden durchgeführt:
- Zunächst wird der Kontext des Prozesses P1, d.h. der Prozess, der sich im laufenden Zustand befindet, im Prozesssteuerungsblock des Prozesses P1, d.h. PCB1, gespeichert.
- Jetzt muss PCB1 in die entsprechende Warteschlange, d.h. in die Bereitschaftswarteschlange, die E/A-Warteschlange oder die E/A-Warteschlange, verschoben werden.d.h. Bereitschaftswarteschlange, E/A-Warteschlange, Warteschlange usw.
- Aus dem Bereitschaftsstatus wählen Sie den neuen Prozess aus, der ausgeführt werden soll, d.h. den Prozess P2.
- Jetzt aktualisieren Sie den Prozesssteuerungsblock von Prozess P2, d.h. PCB2, indem Sie den Prozessstatus auf „läuft“ setzen. Wenn der Prozess P2 bereits früher von der CPU ausgeführt wurde, können Sie die Position der zuletzt ausgeführten Anweisung ermitteln, so dass Sie die Ausführung von P2 wieder aufnehmen können.
- Wenn Sie den Prozess P1 erneut ausführen möchten, müssen Sie die gleichen Schritte wie oben (von Schritt 1 bis 4) durchführen.
Für die Kontextumschaltung sind im Allgemeinen mindestens zwei Prozesse erforderlich, und im Falle des Round-Robin-Algorithmus kann man die Kontextumschaltung mit Hilfe nur eines Prozesses durchführen.
Die Zeit, die für die Kontextumschaltung eines Prozesses durch einen anderen benötigt wird, wird als Kontextumschaltzeit bezeichnet.
Vorteil der Kontextumschaltung
Die Kontextumschaltung wird verwendet, um Multitasking zu erreichen, d.h. Multiprogrammierung mit Time-Sharing (mehr über Multitasking erfahren Sie hier). Multitasking vermittelt dem Benutzer die Illusion, dass mehr als ein Prozess gleichzeitig ausgeführt wird. In Wirklichkeit wird aber nur eine Aufgabe zu einem bestimmten Zeitpunkt von einem Prozessor ausgeführt. Hier ist der Kontextwechsel so schnell, dass der Benutzer das Gefühl hat, die CPU führe mehr als eine Aufgabe gleichzeitig aus.
Der Nachteil des Kontextwechsels
Der Nachteil des Kontextwechsels ist, dass er eine gewisse Zeit für den Kontextwechsel, d.h. die Kontextwechselzeit, benötigt. Die Zeit wird benötigt, um den Kontext eines laufenden Prozesses zu speichern und dann den Kontext eines anderen Prozesses zu erhalten, der in den laufenden Zustand übergehen soll. Während dieser Zeit wird von der CPU aus Sicht des Benutzers keine nützliche Arbeit geleistet. Der Kontextwechsel ist in diesem Fall also reiner Overhead.
Das war’s für diesen Blog. Ich hoffe, dieser Blog hat Ihnen gefallen.