Der Linux-Kernel ist wie eine Brücke, die die Computerkommunikation zwischen Anwendungen und Hardware ermöglicht und die Ressourcen des Systems verwaltet. Linus Torvalds entwickelte den Linux-Kernel mit C und Assembly und schaffte so einen leichtgewichtigen und portablen Kern, der als Open Source für die Öffentlichkeit freigegeben wurde.

Sie können den Linux-Kernel in vielen verschiedenen Bereichen wie Weltraum, Computer, Smart Watches, Mobiltelefone, Robotik und Gesundheit sehen. Aber haben Sie sich jemals gefragt, wie der Linux-Kernel unter der Haube funktioniert?

Hardwarenutzung unter Linux

Der Linux-Kernel steuert zunächst, welche Hardware ausgeführt wird und auf welche Weise, wenn Sie Ihren Computer einschalten. Zudem ist dank der Programmierschnittstelle die Ansteuerung von High-End-Software möglich. Um ein Beispiel für diese Steuerungen zu geben, ist es Ihnen möglich, Informationen über die in den Steckplätzen auf Ihrem Motherboard installierte Hardware anzuzeigen und von diesen detaillierten Informationen zu profitieren.

instagram viewer

Außerdem stellt diese Programmierschnittstelle eine Abstraktionsschicht bereit. Wenn Sie beispielsweise ein Videogespräch mit Ihren Freunden führen möchten, benötigen Sie eine Webcam. Die Abstraktionsschicht ermöglicht es der von Ihnen verwendeten Software, diese Webcam unabhängig von Marke und Modell zu verwenden. Die Software hier kann nur die für Linux vorhandene Schnittstelle verwenden. Der Linux-Kernel übersetzt die Funktionsaufrufe dieser Schnittstelle in tatsächliche Hardwarebefehle, die die Webcam benötigt.

Verwendung der /proc und /sys virtuelle Dateisysteme kann der Linux-Kernel detaillierte Informationen über die Hardware exportieren es erkennt. Nachfolgend sehen Sie einige Tools, die dafür verwendet werden und welche Geräte und Karten sie exportieren:

  • lspci: Für PCI-Geräte
  • lsusb: Für USB-Geräte
  • lspcmcia: Für PCMCIA-Karten

Wie Sie sehen können, läuft die Linux-Distribution im obigen Screenshot auf VirtualBox. Sie haben jedoch die Möglichkeit, viele Informationen wie VGA, USB-Controller, Brücken und SATA-Controller anzuzeigen.

Sie können auch die verwenden -v Parameter, um viel detailliertere Informationen zu erhalten.

Im Linux-Kernel greifen Anwendungen normalerweise über spezielle Dateien auf Geräte zu, die in der vorhanden sind /dev Verzeichnis. Diese speziellen Dateien repräsentieren Laufwerke und andere physische Geräte. Dateien wie z /dev/hda, /dev/sdc, /dev/sdc3, /dev/input/mouse0 und dev/snd/* sind Beispiele für diese speziellen Dateien.

Linux-Dateisystemverwaltung

Dateisysteme sind eine der bemerkenswertesten Komponenten des Linux-Kernels. Das Dateisystem von Linux ist einer seiner größten Vorteile. Alle Dateien auf einem Linux-System sammeln sich in einem einzigen Zweig. Benutzer können somit diese Hierarchie verwenden, um ihre gewünschten Orte zu erreichen.

Ausgangspunkt dieser Hierarchie ist das Root-Verzeichnis (/). Andere Unterverzeichnisse befinden sich unter dem Stammverzeichnis. Das am häufigsten verwendete Unterverzeichnis unter / ist der /home Verzeichnis. Dieses Unterverzeichnis enthält andere Unterverzeichnisse und jedes Verzeichnis hat Dateien, die die eigentlichen Daten speichern.

Sie können sich zum Beispiel eine Textdatei auf Ihrem Desktop vorstellen. Wenn Sie eine Textdatei namens hallowelt.txt auf Ihrem Desktop können Sie darauf verweisen als /home/muo/Desktop/helloworld.txt. Das Beispiel von /muo hier wird natürlich variieren. Weil dieser Unterverzeichnisname von Ihrem aktuellen Benutzernamen abhängt. Mit diesem Benennungssystem übersetzt der Linux-Kernel zwischen tatsächlichem und physischem Speicher, der auf einer Festplatte vorhanden ist.

Außerdem kann der Linux-Kernel Daten von mehreren Platten integrieren. Hier kommt das Befestigungssystem ins Spiel. Es verwendet eine der Festplatten im Root-System und hängt die anderen in vorhandene Verzeichnisse in der Hierarchie ein. Andere Festplatten werden dann unter Einhängepunkten platziert. Auf diese Weise können Benutzer die speichern /home Verzeichnis auf einer zweiten Festplatte, die auch andere Unterverzeichnisse enthält.

Wenn Sie eine Festplatte in die /home Verzeichnis, können Sie von normalen Orten aus auf diese Verzeichnisse zugreifen. So sind Pfade wie z /home/muo/Desktop/helloworld.txt arbeite weiter.

Sie können die Einhängepunkte zwischen den Dateien auf Ihrem System mit sehen findmnt -A Befehl.

Bei vielen Dateisystemformaten können Sie Daten physisch auf Datenträgern speichern. Die bekanntesten unter Linux sind die ext2, ext3, und ext4 Dateisystemformate. Es gibt jedoch viele andere Dateisystemformate. In jedem Fall müssen Sie das Dateisystem formatieren, bevor Sie es einhängen. Sie können Befehle wie verwenden mkfs.ext3 (mkfs steht für make file system und ext3 ist das Dateisystem).

Diese Befehle akzeptieren den zu formatierenden Gerätedateipfad als Parameter. Es ist eine destruktive Operation und Sie sollten sie mit Vorsicht verwenden, wenn Sie ein Dateisystem nicht löschen oder zurücksetzen möchten.

Abgesehen von diesen gibt es auch Netzwerkdateisysteme wie NFS die der Linux-Kernel verwendet. NFS ist ein Netzwerkdateisystem, bei dem Daten nicht auf einer lokalen Festplatte gespeichert werden. Bei NFS gehen Daten über das Netzwerk zu einem Server, der die Daten speichert. Da sich die Daten auf einem Server befinden, müssen sich die Benutzer nicht ständig darum kümmern. Sie können auch wie gewohnt das traditionelle hierarchische Dateisystem von Linux verwenden.

Gemeinsame Funktionsoperationen

Die gesamte Software im Linux-System hat gemeinsame Funktionen. Deshalb sind diese Funktionen zentral im Linux-Kernel. Wenn Sie beispielsweise eine Datei öffnen, können Sie sie nur mit dem Dateinamen öffnen, ohne zu wissen, wo die Datei physisch gespeichert ist und welche Funktionen und Operationen sie verwendet. Alle diese Funktionen sind bereits im Kernel vorhanden.

Sie können Ihre Datei auf der Festplatte speichern, auf mehrere Festplatten aufteilen oder sogar auf einem Remote-Server aufbewahren. Shared-File-Communication-Funktionen sind in solchen Fällen wichtig. Anwendungen tauschen Daten unabhängig davon aus, wie die Daten verschoben werden. Gemeinsame Kommunikationsfunktionen sind dazu da, diesen Datenaustausch durchzuführen. Dieser Umzug kann über drahtlose Netzwerke oder sogar eine Festnetzleitung erfolgen.

Prozessmanagement unter Linux

Eine aktive Instanz eines Programms, die Daten oder Informationen im Speicher verarbeitet, wird als Prozess bezeichnet. Die Aufgabe des Linux-Kernels besteht darin, diese Speicherbereiche zu generieren und zu verwalten. Der Kernel weist Speicher zu für ein laufendes Programm und lädt den ausführbaren Code aus dem Dateisystem in den Arbeitsspeicher. Unmittelbar danach führt der Kernel den Code aus.

Der Linux-Kernel unterstützt Multitasking. Es ist in der Lage, zahlreiche Prozesse gleichzeitig auszuführen. Es gibt jedoch nur eine Transaktion in einem bestimmten Zeitrahmen. Der Linux-Kernel teilt die Zeit jedoch in kleine Stücke auf, und als Ergebnis findet jeder Vorgang sequentiell statt.

Da diese kleinen Zeitsegmente in Millisekundenschritten sind, sind sie nur zu bestimmten Zeiten aktiv und bleiben den Rest der Zeit im Leerlauf. Die Aufgabe des Linux-Kernels besteht hier darin, die Leistung zu maximieren, indem mehrere Prozesse gleichzeitig ausgeführt werden.

Wenn die Zeitfenster zu lang sind, reagiert die laufende Anwendung möglicherweise nicht so, wie Sie es möchten. Bei zu kurzen Zeitfenstern kann es zu Problemen bei Aufgabenänderungen kommen. Je nach Priorität des Prozesses variiert das hier benötigte Zeitrasterintervall. Möglicherweise haben Sie schon einmal von Prozessen mit hoher Priorität und Prozessen mit niedriger Priorität gehört. Dies ist eine der Funktionen, die der Linux-Kernel steuert.

Diese Erklärung ist nicht immer richtig. Die eigentliche Einschränkung besteht darin, dass es jeweils nur einen Worker-Prozess pro Prozessorkern geben kann. Multiprozessorsysteme ermöglichen die parallele Ausführung mehrerer Prozesse. Ein Basissystem hat fast immer Dutzende von laufenden Prozessen.

Zugriffsrechte in Linux

Wie bei anderen Betriebssystemen können Sie auf einem Linux-System viele Benutzer erstellen. Für solche Fälle gibt es ein Rechteverwaltungssystem, das einzelne Benutzer und Gruppen unterstützt. Das ist wo Datei- und Benutzerrechte komm in das Spiel.

Der Linux-Kernel verwaltet die Daten und prüft die notwendigen Berechtigungen für jeden Prozess. Wenn Sie beispielsweise versuchen, eine Datei zu öffnen, muss der Kernel die Prozess-ID mit den Zugriffsberechtigungen vergleichen. Wenn der Kernel überprüft und feststellt, dass Sie über Berechtigungen verfügen, wird er die Datei öffnen.

Der Linux-Kernel steuert alles

Wie Sie sehen können, überwacht der Linux-Kernel alles, von Ihrer Dateisicherheit bis hin zum Erstellen von Benutzern und dem Herunterladen von Dateien aus dem Internet. Alles ist in einer bestimmten Reihenfolge. Jeder Benutzer hat Rechte. Der Linux-Kernel verwaltet Prozesse und Zeitfenster für Spitzenleistung.

Darüber hinaus ist das Dateisystem, eines der größten Merkmale, die den Linux-Kernel von anderen Betriebssystemen unterscheiden, sehr wichtig. Linux ist kein verstecktes Kästchen. Im Gegenteil, alle Dateien und Quellcodes sind zugänglich. Um die praktische und leistungsfähige Natur des Linux-Kernels besser zu verstehen, können Sie die Linux-Verzeichnissystemhierarchie untersuchen.