Der Linux-Kernel ist die unterste Ebene leicht austauschbarer Software, die mit der Hardware in einem Computer verbunden ist. Der Kernel ist für die Verbindung aller im „Benutzermodus“ ausgeführten Anwendungen mit der physischen Hardware verantwortlich und ermöglicht die Verwendung von Prozessen untereinander -Prozesskommunikation, um eine Verbindung herzustellen. Informationen voneinander erhalten.
Die Betriebsumgebung dieses Artikels: Linux5.9.8-System, Dell G3-Computer.
Mit mehr als 13 Millionen Codezeilen ist der Linux-Kernel eines der größten Open-Source-Projekte der Welt.
Was ist also der Kernel?
Der Kernel ist die unterste Ebene leicht austauschbarer Software, die mit der Hardware Ihres Computers verbunden ist. Es ist für die Verbindung aller im „Benutzermodus“ laufenden Anwendungen mit der physischen Hardware verantwortlich und ermöglicht es Prozessen (sogenannten Servern), mithilfe der Interprozesskommunikation (IPC) Informationen voneinander zu erhalten.
Verschiedene Arten von Kerneln
Natürlich gibt es unterschiedliche Möglichkeiten, einen Kernel zu erstellen, und es gibt verschiedene architektonische Überlegungen, wenn man einen Kernel von Grund auf neu erstellt. Im Allgemeinen lassen sich die meisten Kernel in einen von drei Typen einteilen: monolithisch, Mikrokernel und Hybrid. Linux ist ein monolithischer Kernel, während OS X (XNU) und Windows 7 Hybridkerne verwenden. .
Monolithische Kernel
Monolithische Kernel sind das Gegenteil von Mikrokerneln, da sie nicht nur die CPU, den Speicher und den IPC, sondern auch Gerätetreiber, Dateisystemverwaltung und Systemserver enthalten Anrufe usw. Monolithische Kerne eignen sich in der Regel besser für den Zugriff auf Hardware und das Multitasking, da ein Programm, wenn es Informationen aus dem Speicher oder einem anderen laufenden Prozess abrufen muss, über eine direktere Verbindung verfügt, um darauf zuzugreifen, anstatt in einer Warteschlange auf den Abschluss einer Aufgabe warten zu müssen. Dies kann jedoch zu Problemen führen, denn je mehr Dinge im Hypervisor-Modus laufen, desto mehr Dinge können bei Fehlverhalten abstürzen.
Vorteile
Direkterer Zugriff auf die Hardware des Programms
Die Kommunikation zwischen Prozessen ist einfacher, miteinander zu kommunizieren
Wenn Sie Für die Verwendung ist keine zusätzliche Installation erforderlich, wenn das Gerät unterstützt wird.
Der Prozess reagiert schneller, da es keine Prozessorzeitwarteschlange gibt.
Nachteile
Installationsbedarf Großer Bereich
Großer Speicherverbrauch
Nicht sehr sicher, da alles im Administratormodus läuft
Linux-Kerneldateien Wo?
Die Kerneldateien in Ubuntu werden im Ordner /boot gespeichert und heißen vmlinuz-version. Der Name vmlinuz stammt aus der Unix-Welt. In den 60er Jahren nannten sie ihren Kernel „Unix“, und so begann Linux, seinen Kernel „Linux“ zu nennen, als er in den 90er Jahren zum ersten Mal entwickelt wurde.
Als der virtuelle Speicher für einfachere Multitasking-Fähigkeiten entwickelt wurde, wurde „vm“ vor die Datei gesetzt, um anzuzeigen, dass der Kernel virtuellen Speicher unterstützt. Eine Zeit lang hieß der Linux-Kernel vmlinux, aber der Kernel wurde zu groß, um in den verfügbaren Boot-Speicher zu passen. Deshalb wurde das Kernel-Image komprimiert und die Endung x in az geändert, um anzuzeigen, dass es mit der zlib-Komprimierung komprimiert wurde. Diese Komprimierung wird nicht immer verwendet, oft wird stattdessen LZMA oder BZIP2 verwendet, einige Kernel nennen es einfach zImage.
Die Versionsnummer wird im ABCD-Format vorliegen, AB wird wahrscheinlich 2.6 sein, C ist Ihre Version, D bedeutet Ihr Patch oder Hotfix
in /boot Es gibt weitere sehr wichtige Dateien im Ordner mit den Namen initrd.img-version, system.map-version und config-version. Die initrd-Datei wird als kleine RAM-Disk zum Extrahieren und Ausführen der eigentlichen Kerneldateien verwendet. Die Datei system.map wird für die Speicherverwaltung verwendet, bevor der Kernel vollständig geladen ist, und die Konfigurationsdatei teilt dem Kernel mit, welche Optionen und Module beim Kompilieren des Kernels in das Kernel-Image geladen werden sollen.
Linux-Kernel-Architektur
Da der Linux-Kernel ein monolithischer Kernel ist, weist er im Vergleich zu anderen Kerneltypen den größten Platzbedarf und die größte Komplexität auf. Dies war ein Designmerkmal, das in den frühen Tagen von Linux für erhebliche Diskussionen sorgte und immer noch unter einigen der gleichen Designfehler leidet, die monolithischen Kerneln innewohnen.
Um diese Mängel zu beheben, haben Linux-Kernel-Entwickler Kernel-Module erstellt, die zur Laufzeit geladen und entladen werden können, was bedeutet, dass Sie dem Kernel dynamisch Funktionen hinzufügen oder daraus entfernen können. Dabei geht es nicht nur darum, dem Kernel Hardwarefunktionen hinzuzufügen, indem Module eingebunden werden, die Serverprozesse ausführen (z. B. Low-Level-Virtualisierung), sondern es kann in manchen Fällen auch der gesamte Kernel ersetzt werden, ohne dass der Computer neu gestartet werden muss.
Stellen Sie sich vor, Sie könnten ohne Neustart auf ein Windows Service Pack aktualisieren...
Kernelmodule
Was ist, wenn Windows bereits alle verfügbaren Treiber installiert hat und Sie nur noch den benötigten öffnen müssen? Dies ist im Grunde das, was das Kernelmodul für Linux tut. Kernelmodule, auch als ladbare Kernelmodule (LKMs) bekannt, sind entscheidend dafür, dass der Kernel mit der gesamten Hardware läuft, ohne den gesamten verfügbaren Speicher zu verbrauchen.
Module fügen dem Basiskernel normalerweise Funktionen hinzu, wie z. B. Geräte, Dateisysteme und Systemaufrufe. LKMs haben die Dateierweiterung .ko und werden normalerweise im Verzeichnis /lib/modules gespeichert. Aufgrund ihrer modularen Natur können Sie den Kernel einfach anpassen, indem Sie festlegen, welche Module geladen oder nicht geladen werden sollen, indem Sie beim Booten den Befehl „menuconfig“ verwenden oder die Datei /boot/config bearbeiten, oder Sie können Module mithilfe des Befehls „modprobe“ dynamisch laden und entladen.
Drittanbieter- und Closed-Source-Module sind in einigen Distributionen (z. B. Ubuntu) verfügbar und werden möglicherweise nicht standardmäßig installiert, da der Quellcode des Moduls nicht verfügbar ist. Die Entwickler der Software (d. h. nVidia, ATI usw.) stellen nicht den Quellcode zur Verfügung, sondern erstellen stattdessen ihre eigenen Module und kompilieren die erforderlichen .ko-Dateien für die Verteilung. Während diese Module in Beer kostenlos sind, sind sie nicht so kostenlos wie in Voice, daher enthalten einige Distributionen diese Module nicht, weil die Betreuer glauben, dass sie den Kernel „verunreinigen“, indem sie unfreie Software bereitstellen.
Der Kernel ist keine Zauberei, aber er ist für jeden ordnungsgemäß funktionierenden Computer unerlässlich. Der Linux-Kernel unterscheidet sich von OS X und Windows dadurch, dass er Treiber auf Kernel-Ebene enthält und viele Dinge „out of the box“ unterstützt. Hoffentlich erfahren Sie mehr darüber, wie Ihre Software und Hardware zusammenarbeiten und welche Dateien Sie zum Starten Ihres Computers benötigen.
Das obige ist der detaillierte Inhalt vonWas bedeutet Linux-Kernel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!