Übergang vom Userspace zum Kernelspace

Übergang vom Userspace zum Kernelspace

Was ist der Übergang vom Benutzerbereich zum Kernelbereich, sowohl physisch (Hardware, Ringe) als auch logisch (Software)? Und umgekehrt.

Oder allgemeiner: Was passiert, wenn ein „Raum-“ (oder Ring-)Übergang stattfindet? Und was macht ihn kostspielig (eines der Hauptprobleme von Minix)?

Diese Frage folgt für Kommentare unterDasAntwort.

Antwort1

Aus der Sicht des Betriebssystems ist der Benutzerbereich die Ausführung von Code aus einem Prozess und der Kernelbereich die Ausführung von Code aus dem Kernel. Ein Übergang vom Benutzerbereich zum Kernelbereich ist der Eintritt in einenSystemaufruf, und ein Übergang vom Kernelbereich zum Benutzerbereich ist die Rückkehr von einem Systemaufruf.

Aus Sicht des Prozessors sind Benutzerbereich und Kernelbereich Berechtigungsebenen. „Ring 3“ und „Ring 0“ sind die Namen, die auf Intel x86-Prozessoren verwendet werden (es gibt Ringe 1 und 2, aber die meisten Unix-Prozessoren verwenden sie nicht, da sie nicht häufig verwendet werden). Andere CPU-Typen verwenden andere Namen, beispielsweise Benutzermodus und privilegierte (oder System-)Modi auf ARM.

Der Übergang zwischen den Modi erfolgt durch Anweisungen, die sowohl den Prozessormodus ändern als auch zu einer anderen Adresse springen. Die Einzelheiten dieser Anweisungen hängen stark vom CPU-Typ ab. Neben dem Umschalten des Prozessormodus und dem Springen zu einer anderen Adresse führen die Anweisungen zum Modusübergang normalerweise noch einige andere Aufgaben aus, z. B. das Vertauschen der Werte einiger Register (auch dies ist stark CPU-abhängig).

Ein Übergang vom Benutzermodus in den Kernelmodus muss zu einer festen Adresse springen, die vom Kernel festgelegt wurde. Um die Sicherheit des Systems aufrechtzuerhalten, darf Code im Benutzermodus den Prozessor nicht in den Kernelmodus schalten, außer um einen Codeabschnitt (den Systemaufruf-Einstiegspunkt) aufzurufen, der speziell dafür entwickelt wurde, unabhängig davon, was der Code im Benutzermodus getan hat, sicher zu funktionieren. Der Systemaufruf-Einstiegspunkt speichert zuerst Registerwerte in einem bestimmten Speicherbereich und führt alle anderen erforderlichen Buchführungsvorgänge durch, liest dann die Systemaufrufparameter und sendet den Systemaufruf an die entsprechende Funktion. Abhängig vom Prozessortyp kann die Buchführung das Festlegen derMMUTabellen entsprechend. Der Kernel kann jederzeit entscheiden, den aufrufenden Prozess anzuhalten und einen anderen Prozess einzuplanen.

Ein Übergang vom Kernelmodus in den Benutzermodus kann überall dort erfolgen, wo der Kernel es für angebracht hält. Der Kernel stellt die gespeicherten Register, die MMU-Konfiguration und alles andere, was notwendig ist, wieder her, schreibt den Rückgabewert des Systemaufrufs und springt schließlich zurück zur Anweisung im Prozess nach dem Systemaufruf.

verwandte Informationen