Sie haben vielleicht von Anwendungen gehört, die im „Kernel“-oder „Benutzer“-Modus ausgeführt werden. Es hängt alles davon ab, wie Betriebssysteme funktionieren, wenn sie ihre Arbeit erledigen. Sobald Sie das verstanden haben, ist der Unterschied zwischen Benutzermodus und Kernelmodus leicht zu verstehen.
Verstehen, was ein Betriebssystem tut
Ein Computer besteht aus Hardware, den elektronischen Komponenten und Software, dem Computercode, der von. ausgeführt wird diese Hardware. Weniger klar ist jedoch, wie sie zusammenarbeiten.
Inhaltsverzeichnis
Das wichtigste Element eines Computers ist das Bit oder die „Binärziffer“. Alles, was ein Computer tut, wird als Einsen und Nullen dargestellt. Verschiedene Computerkomponenten repräsentieren Bits auf unterschiedliche Weise. In einer CPU repräsentieren mikroskopische Transistoren Einsen und Nullen, indem sie entweder ein-oder ausgeschaltet sind. Diese Transistoren sind in logischen Strukturen angeordnet, die als Logikgatter bezeichnet werden.
In elektronischen Computerspeichern werden Bits durch Speicherzellen dargestellt, deren Ladung entweder über oder unter einem bestimmten Schwellenwert liegt. Auf einer mechanischen Festplatte werden Bits als magnetische Fluktuationen dargestellt, die auf einer rotierenden Platte gemessen werden. Auf optischen Platten erfüllen Pits und Lands, die Laserlicht reflektieren oder nicht, die gleiche Aufgabe.
Egal wie die physische Darstellung des Binärcodes erreicht wird, Sie können schließlich alle Consumer-Computerkomponenten auf diesen rohen Maschinencode reduzieren.
Also wie kommt man von der benutzerfreundlichen Oberfläche eines Computers zum rohen, niedrigen-Ebene Prozesse im Computer selbst? Hier kommt das Betriebssystem ins Spiel. Es steuert direkt die Hardware des Computers.
Diese Software übersetzt alles, was Anwendungen (und damit der Benutzer) wollen, in Maschinencode-Anweisungen, die die CPU und andere Komponenten verstehen. Das kritischste Stück Software in diesem Prozess ist der Kernel.
Was ist der Kernel?
Der Kernel ist, wie der Name schon sagt, der Kern des Betriebssystems. Der Kernel ist eine Software, die sich im RAM befindet und alles steuert, was der Computer tut. Wenn etwas in den Speicher geschrieben wird, ist es der Kernel, der die Ausführung steuert.
Der Kernel weiß, wie er mit Hardware wie GPUs und Netzwerkkarten verbunden ist, aber er weiß möglicherweise nicht, wie er sie voll ausschöpfen kann , basierend auf generischen Standards in der Computerindustrie.
Hier kommen die Hardwaretreiber ins Spiel. Treiber sagen Ihrem Betriebssystem, wie es mit bestimmten Komponenten zusammenarbeitet, weshalb Sie beispielsweise unterschiedliche Treiber für Nvidia-und AMD-GPUs benötigen.
Ausgestattet mit den richtigen Treibern ist der Kernel die ultimative Instanz im Computer , einschließlich Dinge, die Daten katastrophal zerstören können.
Die Rolle von Application Programming Interfaces (APIs)
Zu Zeiten von MS-DOS mussten Softwareentwickler ihre Software speziell für die Hardware des Benutzers. Das berüchtigtste Beispiel dafür auf MS-DOS-Systemen waren Soundkartentreiber.
Ein bestimmtes Videospiel müsste die beliebtesten Karten (Sound Blaster, Ad-lib, Gravis Ultrasound usw.) unterstützen und hoffen, dass die meisten Spieler abgedeckt sind. Heute funktionieren die Dinge dank APIs ganz anders.
Der Soundkarten-Auswahlbildschirm von Wolf3D
Microsoft DirectX ist ein großartiges Beispiel. Wenn Sie eine ausführliche Erklärung wünschen, lesen Sie Was ist DirectX und warum ist es wichtig? Das Wichtigste ist jedoch, dass die API eine Standardmethode für Softwareentwickler bietet, um Hardwareressourcen von Komponenten wie der GPU anzufordern. Darüber hinaus müssen Hardwarehersteller nur sicherstellen, dass ihre Produkte DirectX entsprechen, um die volle Kompatibilität mit ähnlicher Software zu gewährleisten.
APIs bieten eine Übersetzungsschicht zwischen Softwareanwendungen und dem Low-Level-Kernel mit seinen Hardwaretreibern. Ja, dies ist mit einer leichten Leistungseinbuße verbunden. Auf modernen Computern ist dies jedoch vernachlässigbar und bringt eine Reihe von Vorteilen mit sich, wo wir schließlich zum Benutzermodus und Kernelmodus kommen.
Benutzermodus vs. Kernelmodus
Moderne Betriebssysteme führen Hunderte oder Tausende von „Prozessen“ gleichzeitig aus und geben ihnen je nach Bedarf dynamisch CPU-Zeit, basierend auf ihren Prioritäten und Rechenleistungsanforderungen.
Wenn Sie eine Anwendung starten, generiert sie Prozesse und die Die CPU kann sie entweder im Benutzermodus oder im Kernelmodus ausführen.
Ein Windows-Prozess, der im Benutzermodus ausgeführt wird, hat nur Zugriff auf seinen eigenen privaten virtuellen Speicheradressraum und die Handle-Tabelle. Die Software verwendet diese Tabellen, um Daten im RAM zu speichern und Ressourcen anzufordern. Es gibt keinen direkten Zugriff auf Speicher oder andere Hardware, und es liegt am Betriebssystem, diese virtuellen Räume der tatsächlichen Hardware des Computers zuzuordnen.
Das ist aus vielen Gründen gut, aber der wichtigste Vorteil ist, dass die Anwendung dies nicht kann überschreiben oder ändern Sie Daten außerhalb ihres virtuellen Speicheradressraums. Darüber hinaus sind bestimmte Funktionen für Prozesse im Benutzermodus gesperrt, hauptsächlich solche, die das System zum Absturz bringen oder Daten zerstören könnten.
Wenn ein Prozess gestartet oder in den Kernelmodus versetzt wird, hat er vollen Zugriff auf das System Ressourcen, auch die für das Betriebssystem reservierten. Theoretisch könnte es also wichtige Daten überschreiben, die das Betriebssystem für den ordnungsgemäßen Betrieb benötigt.
Traps und Ausnahmen
Es ist wichtig zu verstehen, dass diese beiden Modi auf Hardwareebene von der CPU selbst erzwungen werden. Wenn eine Anwendung, die im Benutzermodus ausgeführt wird, versucht, etwas zu tun, das Zugriff auf den Kernel-Modus erfordert, generiert sie eine „Falle“ oder eine „Ausnahme“. Das Betriebssystem kümmert sich dann um die Anwendung, normalerweise indem es sie herunterfährt und ein Absturzprotokoll erstellt, damit die Entwickler sehen können, was im Speicher passiert ist, als die Dinge aus dem Ruder laufen.
Die Gefahren des Kernel-Modus: Der blaue Bildschirm des Todes
Wenn Sie jemals einen blauen Bildschirm des Todes erlebt haben (wer hat das nicht?), der Ihren Computer zum Ausschalten oder Neustarten gezwungen hat, besteht eine gute Chance, dass es sich um einen Kernel-Modus handelte Prozess schuld.
Wenn ein Prozess im Kernel-Modus etwas tut, was er nicht tun soll, kann sich das Betriebssystem nicht davon erholen und der gesamte Computer stoppt. Wenn ein Prozess im Benutzermodus durcheinander gerät, stürzt nur die Anwendung ab und der Rest der Software und des Betriebssystems können ohne Probleme weiterlaufen.
Dies ist ein Bereich, in dem APIs eine wesentliche Rolle spielen, da die API nach Berechtigungen im Kernelmodus fragt. Benutzermodusanwendungen delegieren im Wesentlichen Anfragen, die Kernelmodus-Berechtigungen erfordert hätten, an die API.
Aus diesem Grund wird der Kernelmodus normalerweise nur Systemprozessen auf niedriger Ebene gewährt, die direkt auf die Hardware des Computers zugreifen müssen. Normalerweise wird diese Berechtigung auf einen Prozess erweitert, da dieser mehr Leistung benötigt, als der Benutzermodus bereitstellen kann. Einige CPU-Anweisungen funktionieren nur im Kernel-Modus. Wenn also ein Prozess diese Funktionen verwenden muss, muss er erhöht werden.
Wenn Sie Probleme mit dem Blue Screen of Death haben, lesen Sie unbedingt unsere Blue Screen of Death Fehlerbehebungsleitfaden für Windows 10!