Der Linux-Kernel – verständlich und gründlich erklärt
Wie der Linux-Kernel wirklich funktioniert
Vom Systemaufruf bis zur Seitentabelle: Diese Seite erklärt den Aufbau des Linux-Kernels Schritt für Schritt – mit Blockschaltbildern, interaktiven Abläufen und direkten Verweisen in den Quellcode.
Bezieht sich auf Linux 6.18 (LTS)
Der Kernel auf einen Blick
Klicke auf einen Baustein, um mehr zu erfahren.
Systemaufruf-Schnittstelle
Der einzige reguläre Weg aus dem User Space in den Kernel. Einige hundert Systemaufrufe bilden die stabile Schnittstelle zu allen Anwendungen – Linus Torvalds’ oberste Regel lautet: „We don’t break user space.“
Prozessverwaltung & Scheduler
Erzeugt und beendet Prozesse und Threads (beide sind für den Kernel „Tasks“) und entscheidet, welcher Task wann auf welcher CPU läuft. Zentrale Datenstruktur ist struct task_struct.
Speicherverwaltung
Verwaltet den physischen Arbeitsspeicher in Seiten (meist 4 KiB), richtet für jeden Prozess einen virtuellen Adressraum ein, behandelt Seitenfehler und hält den Page Cache, der Dateiinhalte im RAM zwischenspeichert.
Virtuelles Dateisystem (VFS)
Eine einheitliche Abstraktionsschicht über allen Dateisystemen. open(), read() und write() funktionieren dadurch gleich – egal ob die Datei auf ext4, Btrfs, NFS oder in einem virtuellen Dateisystem wie /proc liegt.
Netzwerk-Stack
Implementiert Sockets und die Protokolle von Ethernet über IP bis TCP/UDP, dazu Routing, Paketfilterung (Netfilter) und schnelle Paketverarbeitung mit XDP.
Interprozesskommunikation
Mechanismen, mit denen Prozesse Daten austauschen oder sich synchronisieren: Pipes, Signale, System-V- und POSIX-IPC, Shared Memory und Futexe.
Block-Schicht
Vermittelt zwischen Dateisystemen und Blockgeräten wie SSDs oder Festplatten. Sie sammelt, sortiert und verteilt I/O-Anfragen (blk-mq) auf die Hardware-Warteschlangen.
Sicherheit (LSM)
Das Linux Security Module Framework setzt an vielen Stellen im Kernel Prüfpunkte (Hooks). Module wie SELinux, AppArmor oder Landlock entscheiden dort zusätzlich zu den klassischen Dateirechten über Zugriffe.
Gerätetreiber
Der mit Abstand größte Teil des Quellcodes. Treiber steuern konkrete Hardware an und melden sich über das Gerätemodell bei den passenden Subsystemen (Block, Netzwerk, Eingabe, Grafik …) an. Viele lassen sich als Module zur Laufzeit laden.
Architekturspezifischer Code
Alles, was von der CPU-Architektur abhängt: Einsprungpunkte für Systemaufrufe und Interrupts, Kontextwechsel, Aufbau der Seitentabellen, früher Bootcode. Linux unterstützt rund 20 Architekturen, darunter x86, ARM64 und RISC-V.
Für wen ist das?
Für Informatik-Studierende, die Betriebssystem-Konzepte aus der Vorlesung am realen System nachvollziehen wollen. Jedes Kapitel beginnt mit einer kurzen Einsteiger-Zusammenfassung, danach geht es in die Tiefe.
So ist jedes Kapitel aufgebaut
- Kurz gesagt
- Die Kernidee in wenigen Sätzen – ohne Vorwissen.
- Diagramme
- Blockschaltbilder und schrittweise Abläufe zeigen Strukturen und Datenflüsse.
- Tiefer eintauchen
- Aufklappbare Abschnitte mit Details für Fortgeschrittene.
- Im Quellcode
- Verweise auf die passenden Stellen im Kernel-Quellcode.
- Selbst ausprobieren
- Befehle, mit denen du das Gelernte auf deinem eigenen System beobachtest.
Kapitel
- Kapitel 1 Einführung
- Kapitel 2 Architektur-Überblick
- Kapitel 3 Der Bootvorgang
- Kapitel 4 Systemaufrufe
- Kapitel 5 Prozesse & Threads
- Kapitel 6 Der Scheduler
- Kapitel 7 Speicherverwaltung
- Kapitel 8 · in Vorbereitung Interrupts & verzögerte Arbeit
- Kapitel 9 · in Vorbereitung Synchronisation
- Kapitel 10 · in Vorbereitung VFS & Dateisysteme
- Kapitel 11 · in Vorbereitung Block-I/O
- Kapitel 12 · in Vorbereitung Gerätetreiber
- Kapitel 13 · in Vorbereitung Netzwerk-Stack
- Kapitel 14 · in Vorbereitung Interprozesskommunikation
- Kapitel 15 · in Vorbereitung Sicherheit & Isolation
- Kapitel 16 · in Vorbereitung eBPF
- Kapitel 17 · in Vorbereitung Kernel-Entwicklung