· 

User Mode vs. Kernel Mode

1. Einführung

Wie du sicherlich weißt, befinden sich im Betriebssystem-Kern Operationen, mit denen du 

  • Dateien/Verzeichnisse angelegen, lesen, löschen, schreiben
  • Prozesse erzeugen, starten, beenden, steuern, überwachen, 
  • den Hauptspeicher verwalten
  • Systemparameter setzen bzw. abfragen und
  • Zustandabfragen (z. B. für die Systemuhr) 

durchführen kannst. Damit die Integrität des Betriebssystem-Kerns nicht gefährdet ist, der Speicherschutz nicht unterlaufen wird und nicht jede beliebige Applikation privilegierte Befehle ausführen kann, wurden zwei verschiedene Betriebsmodi definiert, nämlich der User Mode (Benutzermodus) und der Kernel Mode (Systemmodus), die beide unterschiedliche Berechtigungslevel besitzen.


2. Kernel Mode

Im Kernel Mode, den man auch system mode oder supervisor mode nennt, ist die Ausführung aller Maschinenbefehle erlaubt, also auch diejenigen zum Beschreiben des CPU-Statusregisters. Zudem werden alle Speicherschutzmechanismen abgeschaltet. Ein Wechsel von dem höher privilegierten Kernel Mode in den User Mode ist jederzeit ohne Probleme möglich.


3. User Mode

Im User Mode sind nur normale, nicht sicherheitskritische Maschinenbefehle erlaubt. Alle anderen Befehle sind privilegiert. Wenn man versucht, im User Mode einen privilegierten Befehl auszuführen, dann wird von der CPU eine Unterbrechung erzeugt, die immer zur Umschaltung in den Kernel Mode führt. Im User Mode kann übrigens auch nicht auf alle Speicherbereiche zugegriffen werden. Der Wechsel vom User Mode in den Kernel Mode ist nur durch eine Unterbrechung bzw. einen Systemaufruf möglich.


4. Welcher Modus ist aktiv?

Welcher Ausführungsmodus gerade aktiv ist, wird durch ein Modus-Bit im Status-Register der CPU festgelegt (1= User Mode, 0= Kernel Mode). Dadurch ist auch gleichzeitig ein hardwareseitiger Mechanismus gegeben, durch den das Betriebssystem vor fehlerhaften oder bösartigen Zugriffen geschützt wird.


5. Typische Situation im Betriebssystem

  1. Ein Benutzerprogramm, das im User Mode läuft, möchte auf eine Betriebssystemfunktion zugreifen. Hierbei wird ein Systemaufruf ausgelöst. 
  2. Das Umschalten von dem User Mode in den Kernel Mode erfolgt durch eine Trap-Instruktion.
  3. Jetzt sind wir im Kernel Mode. Dort werden die Systemaufrufe dann verteilt.
  4. Jeder Systemaufruf hat eine eindeutige Nummer. Diese dient als Index in einer Tabelle, die für jeden Systemaufruf die Startadresse des jeweils auszuführenden Unterprogramms führt. 
  5. Das jeweilige Unterprogramm wird ausgeführt und an dessen Ende findet wieder ein Wechsel in den User Mode statt. Das Setzen des Modus-Bits des CPU-Statusregisters ist im Kernel Mode ja kein Problem.