Die nächsten Lektionen behandeln eher theoretische Konzepte. Wenn Sie praktische Übungen bevorzugen, können Sie gerne vorspringen und später zu diesen Themen zurückkehren.
Ein grundlegender Aspekt der Linux-Architektur ist die Trennung zwischen dem Benutzerbereich (User Space) und dem Kernel. Aber warum können wir ihre Kräfte nicht in einer einzigen Schicht vereinen? Der Grund sind Sicherheit und Stabilität, die dadurch erreicht werden, dass sie in unterschiedlichen Modi arbeiten.
Was ist der Unterschied zwischen Kernel-Modus und Benutzer-Modus
Das System arbeitet in zwei unterschiedlichen Modi: Kernel-Modus und Benutzer-Modus. Diese Trennung ist entscheidend, um die Hardware und Ressourcen des Systems vor direktem, unkontrolliertem Zugriff durch Anwendungen zu schützen.
Im Kernel-Modus hat der Kernel vollständigen und uneingeschränkten Zugriff auf die Hardware; er kontrolliert alles. Dies ist die höchste Stufe der Privilegien.
Im Benutzer-Modus haben Anwendungen nur sehr begrenzten Zugriff auf einen kleinen, sicheren Teil des Speichers und der CPU-Ressourcen.
Wenn eine Benutzeranwendung eine Aktion ausführen muss, die die Hardware betrifft – wie das Lesen von einer Festplatte, das Senden von Daten über das Netzwerk oder der Zugriff auf ein Peripheriegerät – kann sie dies nicht direkt tun. Diese Operationen müssen vom Kernel im Kernel-Modus behandelt werden. Dieses Design verhindert, dass ein fehlerhaftes oder bösartiges Programm das gesamte System kompromittiert. Sie möchten beispielsweise nicht, dass Spyware direkten Hardwarezugriff erhält, da sie alle Ihre Daten lesen oder Ihre Webcam steuern könnte.
Schutzringe und privilegierter Zugriff
Diese unterschiedlichen Modi werden oft als Privilegienstufen oder Schutzringe bezeichnet. Stellen Sie sich eine Festung mit konzentrischen Mauern vor: Der innerste Bereich ist der sicherste und hat die höchste Autorität. Die Schutzringe in einem Computer funktionieren ähnlich, wobei der innerste Ring der höchsten Privilegienstufe entspricht.
Auf einer Standard-x86-Computerarchitektur gibt es zwei Hauptebenen:
- Ring 0: Hier läuft der Kernel. Er besitzt die höchste Stufe an Kernel-Privilegien, kann jede Systemanweisung ausführen und erhält das volle Vertrauen, die Hardware zu verwalten. Dies ist der Kern des privilegierten Zugriffs.
- Ring 3: Dies ist die Ebene, auf der Benutzeranwendungen laufen. Es ist der am wenigsten privilegierte Ring und hat keinen direkten Hardwarezugriff.
Dieses ringbasierte Sicherheitsmodell stellt sicher, dass Benutzeranwendungen von kritischen Systemkomponenten isoliert sind. Aber wenn Anwendungen immer in einem anderen Modus als der Kernel sind, wie können sie notwendige Hardwareoperationen durchführen?
Systemaufrufe und Kernel-Privilegien
Die Brücke zwischen Benutzer-Modus und Kernel-Modus ist der Systemaufruf (System Call). Wenn eine Benutzeranwendung eine privilegierte Aufgabe ausführen muss, macht sie einen Systemaufruf, um den Kernel zu bitten, die Aktion in ihrem Namen durchzuführen.
Dieser Prozess ermöglicht es der Anwendung, vorübergehend und sicher vom Benutzer-Modus in den Kernel-Modus zu wechseln, um eine spezifische, kontrollierte Anweisung auszuführen. Sobald die Aufgabe abgeschlossen ist, schaltet das System zurück in den Benutzer-Modus. Dieser Mechanismus stellt sicher, dass Anwendungen die Dienste erhalten, die sie benötigen, ohne gefährlichen, direkten privilegierten Zugriff auf die Hardware zu erlangen.