Vielleicht haben Sie schon 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 es leicht, den Unterschied zwischen Benutzermodus und Kernelmodus zu verstehen.
Verstehen, was ein Betriebssystem tut
Ein Computer besteht aus Hardware, den elektronischen Komponenten und Software, dem Computercode, der von dieser Hardware ausgeführt wird. Was jedoch möglicherweise weniger klar ist, ist, wie sie zusammenarbeiten.
Das wichtigste Element eines Computers ist das Bit oder die „Binärziffer“. Alles, was ein Computer tut, wird durch Einsen und Nullen dargestellt. Verschiedene Computerkomponenten stellen Bits auf unterschiedliche Weise dar. In einer CPU stellen mikroskopisch kleine Transistoren Einsen und Nullen dar, indem sie entweder ein- oder ausgeschaltet sind. Diese Transistoren sind in logischen Strukturen, sogenannten Logikgattern, angeordnet.
Im elektronischen Computerspeicher werden Bits durch Speicherzellen dargestellt, deren Ladung entweder über oder unter einem bestimmten Schwellenwert liegt. Auf einer mechanischen Festplatte werden Bits als magnetische Schwankungen dargestellt, die auf einer rotierenden Platte gemessen werden. Auf optischen Datenträgern erfüllen Vertiefungen und Felder, die Laserlicht reflektieren oder nicht, die gleiche Aufgabe.
Unabhängig davon, wie die physische Darstellung des Binärcodes erreicht wird, können Sie letztendlich alle Consumer-Computerkomponenten auf diesen rohen Maschinencode reduzieren.
Wie gelangt man also von der benutzerfreundlichen Schnittstelle eines Computers zu den reinen, untergeordneten Prozessen 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 Maschinencodeanweisungen, die die CPU und andere Komponenten verstehen. Der kritischste Teil der 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 in 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 kommuniziert, weiß jedoch möglicherweise nicht, wie er sie optimal nutzen kann, da er sich auf generische Standards in der Computerindustrie verlässt..
Hier kommen die Hardwaretreiber ins Spiel. Treiber sagen Ihrem Betriebssystem, wie es mit bestimmten Komponenten arbeiten soll, weshalb Sie beispielsweise unterschiedliche Treiber für Nvidia- und AMD-GPUs benötigen.
Ausgestattet mit den richtigen Treibern ist der Kernel die ultimative Autorität im Computer, einschließlich der Ausführung von Dingen, die Daten katastrophal zerstören können.
Die Rolle von Anwendungsprogrammierschnittstellen (APIs)
Zu Zeiten von MS-DOS mussten Softwareentwickler ihre Software speziell für die Hardware des Benutzers schreiben. Das bekannteste Beispiel hierfür auf MS-DOS-Systemen waren Soundkartentreiber.
Ein bestimmtes Videospiel müsste die beliebtesten Karten unterstützen (Sound Blaster, Ad-lib, Gravis Ultrasound usw.) und hoffen, dass die meisten Spieler abgedeckt sind. Heutzutage funktionieren die Dinge dank APIs ganz anders.
Microsoft DirectX ist ein großartiges Beispiel. Wenn Sie eine ausführliche Erklärung wünschen, schauen Sie sich Was ist DirectX und warum ist es wichtig? an. Am wichtigsten ist jedoch, dass die API Softwareentwicklern eine Standardmethode bietet, um Hardwareressourcen von Komponenten wie der GPU anzufordern. Darüber hinaus müssen Hardwarehersteller lediglich sicherstellen, dass ihre Produkte DirectX-kompatibel sind, um die vollständige Kompatibilität mit jeglicher ebenfalls kompatibler Software sicherzustellen.
APIs bieten eine Übersetzungsebene 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 Priorität und Rechenleistungsbedarf dynamisch CPU-Zeit.
Wenn Sie eine Anwendung starten, generiert sie Prozesse und 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 Adressraum und seine Handle-Tabelle im virtuellen Speicher. Die Software verwendet diese Tabellen, um Daten im RAM zu speichern und Ressourcen anzufordern. Es gibt keinen direkten Zugriff auf den Arbeitsspeicher 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 besteht darin, dass die Anwendung keine Daten außerhalb ihres virtuellen Speicheradressraums überschreiben oder ändern kann. Darüber hinaus sind bestimmte Funktionen für Prozesse im Benutzermodus gesperrt, vor allem solche, die das System zum Absturz bringen oder Daten zerstören könnten.
Wenn ein Prozess gestartet oder in den Kernel-Modus versetzt wird, hat er vollen Zugriff auf Systemressourcen, auch auf die, die für das Betriebssystem reserviert sind. Theoretisch könnte es also wichtige Daten überschreiben, die das Betriebssystem benötigt, um ordnungsgemäß zu funktionieren.
Traps und Ausnahmen
Es ist wichtig zu verstehen, dass diese beiden Modi auf Hardwareebene von der CPU selbst erzwungen werden. Wenn eine im Benutzermodus ausgeführte Anwendung versucht, etwas zu tun, das Zugriff auf den Kernelmodus erfordert, generiert sie eine „Falle“ oder „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 etwas aus dem Ruder gelaufen ist.
Die Gefahren des Kernel-Modus: Der Bluescreen des Todes
Wenn Sie jemals einen Blue Screen of Death erlebt haben (wer hat das nicht?), der Ihren Computer zum Ausschalten oder Neustarten gezwungen hat, ist die Wahrscheinlichkeit hoch, dass die Ursache dafür ein Kernel-Modus-Prozess war.
Wenn ein Prozess im Kernel-Modus etwas tut, was er nicht tun sollte, kann das Betriebssystem den Vorgang nicht wiederherstellen und der gesamte Computer wird angehalten. 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 es sich um die API handelt, die nach Kernel-Modus-Berechtigungen fragt. Benutzermodusanwendungen delegieren im Wesentlichen Anforderungen, für die Kernelmodusberechtigungen erforderlich gewesen wären, an die API.
Aus diesem Grund wird der Kernel-Modus normalerweise nur Systemprozessen auf niedriger Ebene gewährt, die direkt auf die Hardware des Computers zugreifen müssen. Normalerweise wird dieses Privileg auf einen Prozess ausgeweitet, da dieser mehr Leistung benötigt, als der Benutzermodus bereitstellen kann. Einige CPU-Anweisungen funktionieren nur im Kernel-Modus. Wenn ein Prozess diese Funktionen verwenden muss, muss er daher erhöht werden.
Wenn Sie Probleme mit dem Blue Screen of Death haben, lesen Sie unbedingt unsere Anleitung zur Fehlerbehebung bei Blue Screen of Death für Windows 10!.
.