Wikipedia · einfach zusammengefasst · Stand
Kontextwechsel
Kontextwechsel oder Taskswitching (englisch context switch) nennt man den Vorgang in einem Betriebssystem, bei dem die Bearbeitung des aktuellen Prozesses …
Inhalt4 Abschnitte
Definition und Bedeutung
Ein Kontextwechsel oder Taskswitching ist ein Vorgang in einem Betriebssystem: Die Bearbeitung des aktuellen Prozesses, Threads, Tasks oder Programms wird unterbrochen und zu einer anderen Routine gewechselt. Dabei sichert das System den Kontext der bisherigen Ausführung – im Wesentlichen die Prozessor-Register – und stellt den Kontext der neuen Ausführung wieder her.
Kontextwechsel ermöglichen Multitasking. Mehrere Prozesse können sich im Zeit-Multiplexverfahren bei der Nutzung eines einzelnen CPU-Kerns abwechseln. Dadurch entsteht für den Benutzer der Eindruck, sie würden gleichzeitig ausgeführt.
Steuerung und Aufwand
Der Scheduler legt die Strategie für Kontextwechsel fest und entscheidet damit, welche Ausführung wann Prozessorzeit erhält. Der Dispatcher führt den eigentlichen Wechsel durch.
Kontextwechsel benötigen Zeit und verursachen administrativen Aufwand, beispielsweise durch das Speichern und Laden von Registern sowie internen Tabellen zur Prozessverwaltung. Betriebssysteme werden deshalb so entworfen, dass möglichst wenige Kontextwechsel erforderlich sind.
Multitasking als Auslöser
Beim Multitasking sorgt der Scheduler dafür, dass alle laufenden Prozesse einen Anteil an der gesamten Prozessorzeit erhalten.
Ein Prozess kann einen Kontextwechsel selbst auslösen, etwa wenn er auf den Abschluss einer E/A-Operation wartet. E/A bezeichnet die Ein- und Ausgabe von Daten. Bei präemptivem Multitasking kann der Wechsel auch erfolgen, obwohl der aktuelle Prozess weiterhin lauffähig ist: Der Scheduler entscheidet dann, dass ein anderer Prozess an die Reihe kommt. Ein weiterer möglicher Auslöser ist eine festgelegte Zeitspanne, nach der ein Timer-Interrupt eintritt.
Interrupts als Auslöser
Ein Interrupt ist eine Unterbrechung der normalen Programmausführung, beispielsweise durch ein von der Hardware ausgelöstes Ereignis. Bei einem Interrupt sichern die meisten CPUs automatisch die wichtigsten Kontextinformationen – mindestens so viele, dass danach zum ursprünglichen Programmfluss zurückgekehrt werden kann.
Falls nötig, kann die Unterbrechungsroutine weitere Informationen sichern. Meist wird jedoch nur ein minimaler Kontext erzeugt. Das spart wertvolle Ressourcen und ermöglicht es, die normale Programmausführung schneller fortzusetzen.