Was ist Context Switching im Betriebssystem?

Bei der Kontextumschaltung wird der Kontext oder Zustand eines Prozesses gespeichert, so dass er bei Bedarf neu geladen und die Ausführung an derselben Stelle wie zuvor fortgesetzt werden kann. Dies ist ein Merkmal eines Multitasking-Betriebssystems und ermöglicht die gemeinsame Nutzung einer einzigen CPU durch mehrere Prozesse.

Ein Diagramm, das die Kontextumschaltung veranschaulicht, sieht wie folgt aus –

Im obigen Diagramm läuft zunächst Prozess 1. Aufgrund eines Interrupts oder eines Systemaufrufs wird Prozess 1 ausgeschaltet und Prozess 2 eingeschaltet. Bei der Kontextumschaltung wird der Zustand von Prozess 1 in PCB1 gespeichert und der Zustand von Prozess 2 aus PCB2 geladen. Nach einiger Zeit erfolgt erneut eine Kontextumschaltung, wobei Prozess 2 ausgeschaltet und Prozess 1 wieder eingeschaltet wird. Dabei wird der Zustand von Prozess 2 in PCB2 gespeichert und der Zustand von Prozess 1 aus PCB1 geladen.

Auslöser für den Kontextwechsel

Es gibt drei Hauptauslöser für den Kontextwechsel. Diese sind wie folgt –

  • Multitasking: In einer Multitasking-Umgebung wird ein Prozess aus der CPU herausgeschaltet, damit ein anderer Prozess ausgeführt werden kann. Der Zustand des alten Prozesses wird gespeichert und der Zustand des neuen Prozesses wird geladen. In einem präemptiven System können Prozesse durch den Scheduler ausgeschaltet werden.

  • Interrupt-Behandlung: Die Hardware schaltet einen Teil des Kontexts um, wenn ein Interrupt auftritt. Dies geschieht automatisch. Nur ein Teil des Kontexts wird geändert, um die für die Behandlung des Interrupts benötigte Zeit zu minimieren.

  • Umschaltung zwischen Benutzer- und Kernelmodus: Eine Kontextumschaltung kann stattfinden, wenn im Betriebssystem ein Übergang zwischen dem Benutzermodus und dem Kernelmodus erforderlich ist.

Schritte der Kontextumschaltung

Die Schritte der Kontextumschaltung sind wie folgt –

  • Speichern Sie den Kontext des Prozesses, der gerade auf der CPU läuft. Aktualisieren des Prozesssteuerungsblocks und anderer wichtiger Felder.
  • Verschieben des Prozesssteuerungsblocks des oben genannten Prozesses in die entsprechende Warteschlange wie die Bereitschaftswarteschlange, E/A-Warteschlange usw.
  • Auswahl eines neuen Prozesses zur Ausführung.
  • Aktualisieren des Prozesssteuerungsblocks des ausgewählten Prozesses.
  • Aktualisieren Sie die Speicherverwaltungsdatenstrukturen nach Bedarf.
  • Wiederherstellen des Kontexts des zuvor ausgeführten Prozesses, wenn dieser erneut in den Prozessor geladen wird. Dies geschieht durch das Laden der vorherigen Werte des Prozesssteuerungsblocks und der Register.

Kosten der Kontextumschaltung

Die Kontextumschaltung führt zu Overhead-Kosten aufgrund von TLB-Flushes, gemeinsamer Nutzung des Cache durch mehrere Tasks, Ausführung des Task-Schedulers usw. Der Kontextwechsel zwischen zwei Threads desselben Prozesses ist schneller als zwischen zwei verschiedenen Prozessen, da die Threads dieselben virtuellen Speicherabbildungen haben. Aus diesem Grund ist TLB-Flushing nicht erforderlich.

raja

Veröffentlicht am 28-Sep-2018 15:31:15

Werbungen

Leave a Reply