Kontextwechsel

In der Datenverarbeitung ist eine Kontextumschaltung der Vorgang des Speicherns und Wiederherstellung des Zustands eines Prozesses oder Threads so daß die Ausführung kann an der gleichen Stelle zu einem späteren Zeitpunkt wieder aufgenommen werden. Dies ermöglicht mehrere Prozesse, um eine einzelne CPU teilen und ist ein wesentliches Merkmal eines Multitasking-Betriebssystem. Was als der Kontext durch den Prozessor und das Betriebssystem bestimmt.

Kontextschalter sind in der Regel sehr rechenintensiv, und viel von der Gestaltung von Betriebssystemen ist es, die Verwendung von Kontextumschaltungen zu optimieren. Umschalten von einem Prozess zum anderen erfordert eine gewisse Zeit für das Erledigen der Verabreichung - Speichern und Laden von Registern und Speichertabellen, Aktualisieren verschiedener Tabellen und Listen usw.

Ein Kontext-Switch kann ein Register Kontextwechsel, eine Aufgabe, Kontext-Switch, einen Stack-Frame-Schalter, einen Thread Kontextwechsel oder einen Prozess Kontextwechsel bedeuten.

Wann wechseln?

Es gibt drei mögliche Auslöser für einen Kontextwechsel:

Multitasking

Am häufigsten wird in bestimmten Zeitsteuerungsschema benötigt einen Prozess für die aus der CPU umgeschaltet, ein anderer Prozess ausgeführt werden kann. Dieser Kontextschalter kann durch den Prozess ausgelöst werden macht sich nicht lauffähig, wie durch das Warten auf eine I / O oder Synchronisationsvorgang abgeschlossen. Auf einem Präventiv Multitasking-System, kann der Scheduler auch Schalter aus Prozessen, die noch lauffähig sind. Um andere Prozesse, die der CPU-Zeit verhungert verhindern, präemptiven Scheduler oft konfigurieren Sie eine Timer-Interrupt ausgelöst, wenn ein Prozess seine Zeitscheibe überschreitet. Dieser Interrupt wird sichergestellt, dass der Scheduler die Kontrolle zu erlangen, um ein Kontextwechsel durchzuführen.

Interrupt-Behandlung

Moderne Architekturen Interrupt angetrieben. Das heißt, wenn die CPU-Anforderungen von Daten aus einem Datenträger, zum Beispiel, ist es nicht zu benötigen busy-warten, bis die Lese vorbei ist; es kann die Anforderung auszugeben und weiter mit einer anderen Ausführung. Wenn der Lese vorbei ist, kann die CPU unterbrochen und mit dem Lese vorgestellt. Interrupts, genannt ein Programm ein Interrupt-Handler installiert ist, und es ist die Unterbrechungsroutine, die den Interrupt von der Platte verarbeitet.

Wenn ein Interrupt auftritt, schaltet die Hardware automatisch einen Teil des Kontextes. Der HF kann zusätzlichen Kontext zu speichern, je nach Angaben der bestimmten Hard- und Software-Designs. Oft nur ein minimaler Teil des Kontextes ist, um die Zeit, die für die Behandlung der Interrupt minimieren verändert. Der Kernel nicht laichen oder planen Sie ein spezielles Verfahren, um Unterbrechungen zu handhaben, sondern die Behandlungsroutine führt im Kontext zu Beginn der Interrupt-Behandlung etabliert. Sobald Unterbrechungs abgeschlossen ist, der Zusammenhang in der Tat vor der Unterbrechung aufgetreten ist, wieder hergestellt, so dass der unterbrochene Prozess kann die Ausführung in den richtigen Zustand wieder aufzunehmen.

User und Kernel-Modus-Umschaltung

Wenn ein Übergang zwischen Anwendermodus und Kernelmodus in einem Betriebssystem erforderlich ist, eine Kontextumschaltung nicht erforderlich ist; einen Modus-Übergang alleine nicht eine Kontextumschaltung. Jedoch in Abhängigkeit von dem Betriebssystem, eine Kontextumschaltung kann auch zu diesem Zeitpunkt statt.

Schritte

In einem Schalter, muss der Zustand des ersten Prozesses irgendwie gespeichert werden, so dass dann, wenn die Ablaufsteuerung wird wieder mit der Ausführung des ersten Prozesses, kann es diesen Zustand wiederherzustellen und fortzusetzen.

Der Zustand des Prozesses enthält alle Register, die das Verfahren verwenden, vor allem die Programmzähler sowie andere betriebssystemspezifische Daten, die erforderlich sein können. Diese Daten werden in der Regel in einer Datenstruktur gespeichert, die als eine Prozeßsteuerblock oder switchframe.

Um Prozesse zu wechseln, muss die Leiterplatte für den ersten Prozess erstellt und gespeichert werden. Die Leiterplatten werden manchmal auf einer per-process-Stack im Kernel-Speicher gespeichert sind, oder kann es einige spezifische Betriebssystem definierte Datenstruktur für diese Informationen sein.

Da das Betriebssystem hat effektiv die Ausführung von dem ersten Prozeß ausgesetzt, kann er nun die PCB und den Kontext des zweiten Prozesses zu laden. Dabei wird der Programmzähler von der Leiterplatte geladen wird, und somit die Ausführung können in dem neuen Verfahren fortzusetzen. Neue Prozesse werden von einer Warteschlange oder Warteschlangen ausgewählt. Prozess- und Thread-Priorität kann beeinflussen, welche die Prozessausführung fortsetzt, mit Prozessen der höchsten Priorität überprüft zunächst für bereit Threads auszuführen.

Software vs Hardware-Kontextwechsel

Kontextwechsel kann in erster Linie durch Software oder Hardware durchgeführt werden. Einige Prozessoren wie der Intel 80386 und seine Nachfolger haben Hardware-Unterstützung für Kontextwechsel, durch den Einsatz von einem der Task-Zustand Segment oder TSS benannten besonderen Datensegment. Eine Task-Schalter können explizit mit einer CALL oder JMP-Befehl an einer TSS-Deskriptor in der globalen Deskriptortabelle gezielt ausgelöst werden. Er kann stillschweigend auftreten, wenn eine Unterbrechung oder Ausnahme wird ausgelöst, wenn es eine Aufgabe Tor in der Interrupt-Deskriptortabelle. Wenn ein Taskwechsel tritt die CPU automatisch den neuen Zustand von der TSS zu laden.

Wie mit anderen Aufgaben in der Hardware durchgeführt, würde man erwarten, dass dies ziemlich schnell sein; Allerdings haben Mainstream-Betriebssysteme, einschließlich Windows und Linux, dieses Feature nicht zu verwenden. Dies ist vor allem zwei Gründe:

  • Hardware Kontextwechsel nicht speichern alle Register.
  • Assoziierte Performance-Probleme, zum Beispiel Software-Kontextwechsel können selektiv sein und speichert nur die Register, die die Speicherung müssen, während Hardware-Kontextwechsel speichert fast allen Registern, ob sie erforderlich sind oder nicht.
  0   0
Vorherige Artikel 1983 VFA Saison
Nächster Artikel 2010-11 Dinamo Zagreb Saison

In Verbindung Stehende Artikel

Kommentare - 0

Keine Kommentare

Fügen Sie einen Kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Zeichen übrig: 3000
captcha