Unterschied zwischen Kernelmodus und Benutzermodus
Warum gewährt die CPU jedem Programm unterschiedliche Berechtigungen?
Die in diesem Blog verfassten Artikel wurden mit dem Ziel erstellt, zu unterrichten. Außerdem können die Informationen im Artikel falsch sein, also seien Sie bitte vorsichtig.
Die CPU führt nicht den gesamten Code mit denselben Berechtigungen aus. Der Kerncode des Betriebssystems wird im Kernelmodus mit hohen Berechtigungen ausgeführt, und allgemeine Programme werden im eingeschränkten Benutzermodus ausgeführt.
Dieser Berechtigungsbereich wird häufig auch als Kernel-Ebene und Benutzerebene bezeichnet.
Benutzermodus
Anwendungen wie Browser, Spiele und Messenger werden im Benutzermodus ausgeführt.
- Hardware kann nicht direkt gesteuert werden.
- Auf beliebigen physischen Speicher kann nicht zugegriffen werden.
- Sie können den Speicher anderer Prozesse nicht frei lesen.
- Selbst wenn ein Problem auftritt, wird in der Regel nur der entsprechende Prozess abgebrochen.
Da jedes Programm über einen separaten virtuellen Adressraum verfügt, können sie tatsächlich auf unterschiedliche Speicher verweisen, selbst wenn sie denselben Adresswert verwenden.
Kernel-Modus
Im Kernel-Modus können Sie die privilegierten Anweisungen der CPU ausführen und systemweiten Speicher und Geräte verwalten.
- Verwaltet Seitentabellen und virtuellen Speicher.
- Behandelt Interrupts.
- Planen Sie Prozesse und Threads.
- Führen Sie den Gerätetreiber aus.
- Es prüft, ob die Anfrage korrekt ist und führt dann Hardware-Operationen aus.
Je größer die Berechtigungen, desto größer sind die Auswirkungen von Fehlern im Kernelmodus. Aus diesem Grund kann ein fehlerhafter Treiber dazu führen, dass das gesamte Betriebssystem nicht mehr funktioniert.
Die beiden Bereiche sind durch Systemaufrufe verbunden.
Wenn ein Benutzerprogramm eine Datei lesen oder Netzwerkdaten senden möchte, muss es eine Anfrage an den Kernel stellen.
Benutzermodusprogramm
↓ System Call
Berechtigungsprüfung + Kernelmodus aufrufen
↓
Datei-, Speicher- und Geräteoperationen
↓
Zurück zum Benutzermodus
Das Umschalten zwischen Benutzermodus und Kernelmodus ist nicht dasselbe wie ein einfacher Funktionsaufruf. Sie müssen die CPU-Berechtigungen ändern, prüfen, ob die vom Kernel empfangene Adresse und Länge sicher sind, und das Ergebnis zurückgeben.
Dies bedeutet nicht, dass der Kernelmodus unbedingt schneller ist als der Benutzermodus. Der Unterschied zwischen den beiden liegt nicht in der Geschwindigkeitsbewertung, sondern im Unterschied in den Berechtigungen für ausführbare Befehle und Ressourcen, auf die zugegriffen werden kann.
Der Grund für diese Grenze besteht nicht darin, dass Sie sich unwohl fühlen. Dadurch soll verhindert werden, dass Fehler oder Angriffe in allgemeinen Programmen direkt die Kontrolle über den gesamten Computer übernehmen.