User-Mode vs. Kernel-Mode: Unterschiede im Überblick

Eine CPU kennt den User-Mode, in dem Anwendungen laufen, und den Kernel-Mode (privilegierter Modus), in dem der Betriebssystemkern läuft. Im User-Mode können privilegierte Befehle wie das Einrichten von Seitentabellen, Ein-/Ausgabeoperationen oder das Sperren von Interrupts nicht ausgeführt werden, und es ist nur der Speicher des eigenen Prozesses zugänglich. Werden etwa Dateizugriffe benötigt, wird der Kernel per Systemaufruf beauftragt. So wird verhindert, dass Fehler oder böswilliges Verhalten einer Anwendung andere Prozesse, das Betriebssystem oder die Hardware beeinträchtigen.

MerkmalUser-ModeKernel-Mode
Laufende ProgrammeAnwendungenBetriebssystemkern, viele Gerätetreiber
Ausführbare BefehleNur normale Befehle. Die Ausführung privilegierter Befehle löst eine Ausnahme ausAlle Befehle. Wechsel von Seitentabellen, Freigeben und Sperren von Interrupts, Setzen von Steuerregistern usw.
Zugänglicher SpeicherNur die für den Benutzer freigegebenen Seiten im virtuellen Adressraum des eigenen ProzessesAlles einschließlich des Kernelbereichs. Auch physischer Speicher und Geräteregister sind zugänglich
GerätezugriffNicht direkt möglich. Der Kernel wird per Systemaufruf beauftragtDirektes Lesen und Schreiben von Registern und Behandlung von Interrupts
Bezeichnung je Architektur (Beispiele)Ring 3 bei x86, EL0 bei Arm, U-Mode bei RISC-VRing 0 bei x86, EL1 bei Arm, S-Mode bei RISC-V
Auslöser des ModuswechselsIn den Kernel-Mode gelangt man durch Systemaufrufbefehle (syscall, svc, ecall usw.), Geräte- oder Timer-Interrupts und Ausnahmen (Seitenfehler, Division durch 0, ungültige Befehle usw.)Ein spezieller Rücksprungbefehl (sret, eret usw.) stellt Rücksprungadresse und Modus gleichzeitig wieder her und kehrt in den User-Mode zurück
Kosten des Wechsels (Richtwert)Ein Systemaufruf hin und zurück dauert etwa 100 ns bis 1 µs. Durch Gegenmaßnahmen gegen Sicherheitslücken kann es mehr werdenInnerhalb des Kernels sind Aufrufe normale Funktionsaufrufe ohne Moduswechsel. Ein Prozesswechsel (Kontextwechsel) ist noch aufwendiger
Folgen eines FehlersNur der betroffene Prozess wird zwangsweise beendetDas gesamte System kann stehen bleiben (Kernel Panic usw.)

Die Zahlenwerte sind typische Größenordnungen und variieren je nach Prozessgeneration und Produkt.

Wann welche Variante?

User-Mode
Normale Verarbeitung in Anwendungen und Bibliotheken. Berechnungen und Speicherzugriffe laufen schnell im User-Mode, ohne den Kernel einzuschalten.
Kernel-Mode
Verarbeitung, die Ressourcenverwaltung und Schutz erfordert, etwa Datei- und Netzwerk-Ein-/Ausgabe, Speicherzuweisung, Prozesswechsel und Interruptbehandlung.
Optimierungen für die Leistung
Um die Zahl der Systemaufrufe zu senken, werden Daten in User-Space-Puffern gesammelt und gebündelt geschrieben, oder ein Teil der Verarbeitung erfolgt über gemeinsamen Speicher oder spezielle Mechanismen direkt im User-Mode.

Häufige Fragen

Warum werden User-Mode und Kernel-Mode getrennt?

Damit Anwendungen Seitentabellen und Geräte nicht eigenmächtig manipulieren können. Dank der Trennung kann ein fehlerhaftes Programm weder den Speicher anderer Prozesse oder des Betriebssystems beschädigen noch Geräte übernehmen; es genügt, das Programm zu beenden.

Wann wechselt die CPU vom User-Mode in den Kernel-Mode?

Es gibt drei Auslöser: Systemaufrufe, mit denen das Programm selbst eine Anfrage stellt, Interrupts von Geräten oder Timern sowie Ausnahmen bei der Befehlsausführung wie Seitenfehler oder Division durch 0. In jedem Fall wechselt die CPU den Modus und beginnt die Verarbeitung an einem festgelegten Einsprungpunkt des Kernels.

Warum sind Systemaufrufe langsam?

Neben dem Moduswechsel sind Sichern und Wiederherstellen von Registern, Prüfen der Argumente sowie Verarbeitung beim Ein- und Austritt in den Kernel nötig. Werden als Gegenmaßnahme gegen Sicherheitslücken die Seitentabellen gewechselt, wird es noch aufwendiger. Auch wenn ein einzelner Aufruf kurz ist, wird es zu einer großen Last, wenn er bei jedem kleinen Lese- oder Schreibzugriff erfolgt.

Sind Moduswechsel und Kontextwechsel dasselbe?

Nein. Beim Moduswechsel durch einen Systemaufruf tritt derselbe Prozess lediglich in die Kernelverarbeitung ein. Ein Kontextwechsel tauscht den ausgeführten Prozess oder Thread selbst aus und umfasst auch den Wechsel des Adressraums usw., daher ist er aufwendiger.

Verständnis prüfen

Was ist der Hauptzweck der Einrichtung von privilegiertem Modus (Kernel-Modus) und Benutzermodus in der CPU?

  1. ADamit Befehle von Anwendungen schneller und vorrangig vor Kernel-Befehlen ausgeführt werden können
  2. BUm Anwendungen daran zu hindern, eigenmächtig Seitentabellen oder Geräte zu manipulieren
  3. CDamit eine CPU zwei Befehle gleichzeitig ausführen kann
Antwort und Erläuterung anzeigen

Antwort: B. Um Anwendungen daran zu hindern, eigenmächtig Seitentabellen oder Geräte zu manipulieren

Könnten Anwendungen beliebig Seitentabellen umschreiben, Ein-/Ausgabegeräte bedienen oder Interrupts sperren, ließe sich der Speicher anderer Programme zerstören oder das ganze System anhalten. Daher erlaubt die CPU diese Befehle nur im privilegierten Modus, sodass nur der Kernel des Betriebssystems sie nutzen kann. Der Versuch, sie im Benutzermodus auszuführen, löst eine Ausnahme aus. Es handelt sich nicht um einen Mechanismus für Geschwindigkeit oder Gleichzeitigkeit.

Wie heißt der Mechanismus, mit dem eine Anwendung das Betriebssystem um Dinge wie Lesen und Schreiben von Dateien bittet?

  1. ASystemaufruf (System Call)
  2. BKontextwechsel (Context Switch)
  3. CDemand Paging
Antwort und Erläuterung anzeigen

Antwort: A. Systemaufruf (System Call)

Da Anwendungen im Benutzermodus laufen, können sie Festplatten oder Geräte nicht direkt bedienen. Daher nutzen sie Systemaufrufe, wechseln mit einem speziellen Befehl in den privilegierten Modus, rufen die Kernel-Verarbeitung auf und bitten damit um Lesen und Schreiben von Dateien, Speicherreservierung, Prozesserzeugung usw. Nach Abschluss kehren sie in den Benutzermodus zurück. Ein Kontextwechsel ist das Umschalten des ausgeführten Prozesses, Demand Paging ein Verfahren, Seiten erst bei Bedarf zu laden.

Welche Erklärung des Unterschieds zwischen Interrupt und Ausnahme ist allgemein richtig?

  1. AInterrupts werden nur von Software ausgelöst, Ausnahmen nur von Hardwareschaltungen
  2. BInterrupts entstehen durch externe Ursachen wie Geräte, Ausnahmen als Ergebnis der Befehlsausführung
  3. CNach Interrupts kann nicht zur ursprünglichen Verarbeitung zurückgekehrt werden, nach Ausnahmen stets
Antwort und Erläuterung anzeigen

Antwort: B. Interrupts entstehen durch externe Ursachen wie Geräte, Ausnahmen als Ergebnis der Befehlsausführung

Interrupts haben externe Ursachen, die nichts mit dem gerade ausgeführten Befehl zu tun haben, etwa Fertigmeldungen von Ein-/Ausgabegeräten oder Timer, und es steht nicht fest, wann sie auftreten (asynchron). Ausnahmen entstehen als Ergebnis der Ausführung eines bestimmten Befehls, etwa bei Division durch null, ungültigem Befehl, Seitenfehler oder Systemaufruf-Befehl (synchron). In beiden Fällen kann nach der Behandlung im Handler meist zur ursprünglichen Verarbeitung zurückgekehrt werden; die Rückkehrmöglichkeit ist kein Unterscheidungsmerkmal.

  1. Was geschieht, wenn der letzte Befehl ecall des obigen RISC-V-Codes ausgeführt wird?
  2. Warum wird beim Zurückkehren zum ursprünglichen Programm nach einer Interrupt- oder Ausnahmebehandlung ein spezieller Rückkehrbefehl (z. B. sret oder mret bei RISC-V) statt eines gewöhnlichen Rücksprungbefehls verwendet?
  3. Was ist der Hauptgrund dafür, dass es beim byteweisen Schreiben kleiner Datenmengen schneller ist, sie in einem Puffer im Benutzerraum zu sammeln und gebündelt zu schreiben, als jedes Mal einen Systemaufruf auszuführen?

Übungsfragen zu Betriebssystem und Hardware

Wichtige Begriffe erklärt

Privilegierter Modus
Betriebsmodus der CPU, der nur dem Betriebssystemkern vorbehalten ist. Er erlaubt kritische Befehle wie das Einrichten von Seitentabellen und E/A-Operationen und ist vom Benutzermodus abgegrenzt, in dem Anwendungen laufen.
Systemaufruf (System Call)
Mechanismus, mit dem eine Anwendung das Betriebssystem z. B. um Lesen/Schreiben von Dateien oder Speicherreservierung bittet. Über einen speziellen Befehl wird eine Ausnahme ausgelöst, in den privilegierten Modus gewechselt und die Kernel-Routine aufgerufen.
Interrupt-Handler
Routine, die die CPU bei einem Interrupt oder einer Ausnahme ausführt. Sie sichert den Zustand der unterbrochenen Verarbeitung, behandelt die Ursache und kehrt zur ursprünglichen Verarbeitung zurück. Grundsatz: möglichst kurz halten.
Seitentabelle (Page Table)
Tabelle, die die Zuordnung von virtuellen zu physischen Seitennummern enthält. Das Betriebssystem legt sie je Prozess an, und die MMU der CPU nutzt sie zur Adressumsetzung. Jeder Eintrag enthält auch Schutzbits.
Kontextwechsel
Umschalten des auf der CPU ausgeführten Prozesses oder Threads. Zustände wie Register und Programmzähler werden gesichert und wiederhergestellt; beim Prozesswechsel wird auch der Adressraum umgeschaltet.

Verwandte Vergleiche