Inhaltsübersicht
Der Linux-Kernel ist wie eine Brücke, die die Kommunikation zwischen Anwendungen und Hardware ermöglicht und die Ressourcen des Systems verwaltet. Linus Torvalds entwickelte den Linux-Kernel mit C und Assembler und schaffte es so, einen leichtgewichtigen und portablen Kern zu schaffen, der der Öffentlichkeit als Open Source zur Verfügung gestellt wurde.
Der Linux-Kernel kommt in vielen verschiedenen Bereichen zum Einsatz, z. B. in der Raumfahrt, bei Computern, intelligenten Uhren, Mobiltelefonen, in der Robotik und im Gesundheitswesen. Aber haben Sie sich jemals gefragt, wie der Linux-Kernel unter der Haube funktioniert?
Hardware-Nutzung unter Linux
Der Linux-Kernel steuert in erster Linie, welche Hardware beim Einschalten des Computers auf welche Weise betrieben wird. Darüber hinaus ist dank der Programmierschnittstelle auch die Steuerung von High-End-Software möglich. So können Sie beispielsweise Informationen über die in den Steckplätzen Ihres Motherboards installierte Hardware einsehen und von diesen detaillierten Informationen profitieren.
Außerdem bietet diese Programmierschnittstelle eine Abstraktionsebene. Wenn Sie zum Beispiel ein Videogespräch mit Ihren Freunden führen wollen, benötigen Sie eine Webcam. Die Abstraktionsschicht macht es möglich, dass die von Ihnen verwendete Software diese Webcam unabhängig von ihrer Marke und ihrem Modell verwenden kann. Die Software kann dabei nur die Schnittstelle verwenden, die für Linux existiert. Der Linux-Kernel übersetzt die Funktionsaufrufe dieser Schnittstelle in tatsächliche Hardwarebefehle, die die Webcam benötigt.
Mit Hilfe der virtuellen Dateisysteme /proc und /sys kann der Linux-Kernel detaillierte Informationen über die von ihm erkannte Hardware exportieren. 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, Bridges und SATA-Controller zu sehen.
Sie können auch den Parameter -v verwenden, um sehr viel detailliertere Informationen zu erhalten.
Im Linux-Kernel greifen Anwendungen in der Regel auf Geräte über spezielle Dateien zu, die sich im Verzeichnis /dev befinden. Diese speziellen Dateien stehen für Festplattenlaufwerke und andere physische Geräte. Dateien wie /dev/hda, /dev/sdc, /dev/sdc3, /dev/input/mouse0 und dev/snd/* sind Beispiele für diese speziellen Dateien.
Linux-Dateisystem-Verwaltung
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 sind in einem einzigen Zweig zusammengefasst. Die Benutzer können diese Hierarchie nutzen, um die gewünschten Orte zu erreichen.
Der Ausgangspunkt dieser Hierarchie ist das Stammverzeichnis (/). Andere Unterverzeichnisse befinden sich unter dem Stammverzeichnis. Das meistgenutzte Unterverzeichnis unter / ist das Verzeichnis /home. Dieses Unterverzeichnis enthält weitere Unterverzeichnisse, und jedes Verzeichnis enthält Dateien, in denen die eigentlichen Daten gespeichert sind.
Denken Sie zum Beispiel an eine Textdatei auf Ihrem Desktop. Wenn Sie auf Ihrem Desktop eine Textdatei mit dem Namen helloworld.txt erstellen, können Sie sie als /home/muo/Desktop/helloworld.txt bezeichnen. Das Beispiel von /muo wird hier natürlich variieren. Denn der Name dieses Unterverzeichnisses hängt von Ihrem aktuellen Benutzernamen ab. Mit diesem Namenssystem übersetzt der Linux-Kernel zwischen tatsächlichem und physischem Speicherplatz, der auf einer Festplatte existiert.
Außerdem kann der Linux-Kernel Daten von mehreren Festplatten integrieren. An dieser Stelle kommt das Einhängesystem ins Spiel. Es verwendet eine der Festplatten im Root-System und hängt die anderen in bestehende Verzeichnisse in der Hierarchie ein. Andere Festplatten werden dann unter Einhängepunkte gestellt. Auf diese Weise können Benutzer das Verzeichnis /home auf einer zweiten Festplatte speichern, die auch andere Unterverzeichnisse enthält.
Wenn Sie eine Festplatte in das Verzeichnis /home mounten, können Sie auf diese Verzeichnisse von normalen Speicherorten aus zugreifen. Pfade wie /home/muo/Desktop/helloworld.txt funktionieren also weiterhin.
Sie können die Einhängepunkte zwischen den Dateien auf Ihrem System mit dem Befehl findmnt -A anzeigen.
Mit vielen Dateisystemformaten können Sie Daten physisch auf Festplatten speichern. Die bekanntesten unter Linux sind die Dateisystemformate ext2, ext3 und ext4. Es gibt aber auch viele andere Dateisystemformate. In jedem Fall müssen Sie das Dateisystem formatieren, bevor Sie es einbinden. Dazu können Sie Befehle wie mkfs.ext3 verwenden (mkfs steht für make file system und ext3 ist das Dateisystem).
Diese Befehle akzeptieren den Pfad der Gerätedatei, die Sie formatieren möchten, als Parameter. Es handelt sich um eine destruktive Operation, die Sie mit Vorsicht verwenden sollten, wenn Sie ein Dateisystem nicht löschen oder zurücksetzen wollen.
Daneben gibt es auch Netzwerk-Dateisysteme wie NFS, die der Linux-Kernel verwendet. NFS ist ein Netzwerkdateisystem, bei dem die Daten nicht auf einer lokalen Festplatte gespeichert werden. Bei NFS werden die Daten über das Netzwerk zu einem Server übertragen, der die Daten speichert. Da sich die Daten auf einem Server befinden, müssen sich die Benutzer nicht ständig mit ihnen befassen. Sie können auch das traditionelle hierarchische Dateisystem von Linux wie gewohnt nutzen.
Gemeinsame Funktionsoperationen
Die gesamte Software im Linux-System hat gemeinsame Funktionen. Deshalb sind diese Funktionen von zentraler Bedeutung für den Linux-Kernel. Wenn Sie zum Beispiel 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 verwenden wird. Alle diese Funktionen sind bereits im Kernel vorhanden.
Sie können Ihre Datei auf der Festplatte speichern, sie auf mehrere Festplatten aufteilen oder sie sogar auf einem entfernten Server aufbewahren. In solchen Fällen sind Funktionen zur gemeinsamen Dateikommunikation wichtig. Anwendungen tauschen Daten aus, unabhängig davon, wie die Daten verschoben werden. Gemeinsame Kommunikationsfunktionen sind dazu da, diesen Datenaustausch durchzuführen. Dieser Austausch kann über drahtlose Netzwerke oder sogar über eine Festnetzleitung erfolgen.
Prozessverwaltung in Linux
Eine aktive Instanz eines Programms, die mit Daten oder Informationen im Speicher arbeitet, wird als Prozess bezeichnet. Die Aufgabe des Linux-Kernels ist es, diese Speicherbereiche zu erzeugen und zu verwalten. Der Kernel weist einem laufenden Programm Speicher zu und lädt den ausführbaren Code aus dem Dateisystem in den Speicher. Unmittelbar danach führt der Kernel den Code aus.
Der Linux-Kernel unterstützt Multitasking. Er ist in der Lage, zahlreiche Prozesse gleichzeitig auszuführen. Allerdings gibt es in jedem Zeitrahmen nur eine einzige Transaktion. Der Linux-Kernel unterteilt die Zeit jedoch in kleine Abschnitte, so dass jeder Vorgang nacheinander abläuft.
Da diese kleinen Zeitsegmente in Millisekundenschritten eingeteilt sind, sind sie nur zu bestimmten Zeiten aktiv und bleiben die restliche Zeit inaktiv. Der Linux-Kernel hat hier die Aufgabe, die Leistung zu maximieren, indem er mehrere Prozesse gleichzeitig ausführt.
Wenn die Zeitfenster zu lang sind, ist die laufende Anwendung möglicherweise nicht so reaktionsschnell, wie Sie es wünschen. Sind die Zeitrahmen zu kurz, kann es zu Problemen bei Aufgabenwechseln kommen. Je nach Priorität des Prozesses variiert das hier erforderliche Zeitintervall. Vielleicht 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 ist, dass es immer nur einen Arbeitsprozess pro Prozessorkern geben kann. Bei Multiprozessorsystemen können mehrere Prozesse parallel ablaufen. Ein Basissystem hat fast immer Dutzende von laufenden Prozessen.
Zugriffsrechte unter Linux
Wie bei anderen Betriebssystemen auch, können Sie auf einem Linux-System viele Benutzer anlegen. In solchen Fällen gibt es ein Rechteverwaltungssystem, das einzelne Benutzer und Gruppen unterstützt. Hier kommen die Datei- und Benutzerberechtigungen ins Spiel.
Der Linux-Kernel verwaltet die Daten und prüft die erforderlichen Berechtigungen für jeden Prozess. Wenn Sie zum Beispiel versuchen, eine Datei zu öffnen, muss der Kernel die Prozess-ID mit den Zugriffsrechten abgleichen. Wenn der Kernel feststellt, dass Sie Zugriffsrechte haben, wird er die Datei öffnen.
Der Linux-Kernel steuert alles
Wie Sie sehen können, überwacht der Linux-Kernel alles, von der Sicherheit Ihrer Dateien bis hin zum Anlegen von Benutzern und dem Herunterladen von Dateien aus dem Internet. Alles ist in einer bestimmten Reihenfolge angeordnet. Jeder Benutzer hat Rechte. Der Linux-Kernel verwaltet Prozesse und Zeitfenster für Spitzenleistungen.
Außerdem ist das Dateisystem, das eines der wichtigsten Merkmale ist, die den Linux-Kernel von anderen Betriebssystemen unterscheiden, sehr wichtig. Linux ist keine versteckte Kiste. Im Gegenteil, alle Dateien und Quellcodes sind zugänglich. Um die praktische und leistungsstarke Natur des Linux-Kernels besser zu verstehen, können Sie die Hierarchie des Linux-Verzeichnissystems untersuchen.