- Der Linux-Kernel ist heute ein riesiges Open-Source-Projekt mit 36 Millionen Zeilen, aber die erste Version umfasste nur 10.239 Zeilen (ohne Kommentare/Leerzeilen 8.670)
- Linux v0.01 ist aufgrund dieser Schlichtheit ein guter Ausgangspunkt, um das Innenleben eines Unix-artigen OS-Kernels zu lernen
- v0.01 besitzt nur 66 System-Calls
- Erstellen, Löschen und Schreiben von Dateien/Verzeichnissen
chmod, chown, pipe, fork, execve
- Das Socket-Konzept war noch nicht eingeführt, daher keine Netzwerkunterstützung
mount ist noch nicht implementiert
- Es ist auf die Intel-386-Architektur hart codiert (der MINIX-Autor kritisierte das)
strcpy ist in Assembler unter Verwendung von i386-Instruktionen geschrieben
- Unterstützt werden nur PC/AT-Geräte
- CMOS, PIT (Programmable Interval Timer), ATA (PIO), VGA (Textmodus), Intel 8042 PS2-Tastatur (Assembler)
- Es gibt noch nicht einmal einen
drivers-Ordner, alles ist in die Subsysteme hart codiert
- Im Makefile gibt es einen Kommentar mit dem ursprünglich von Linus vergebenen Namen: "FREAX" Kernel
- Das Dateisystem unterstützt nur MINIX (ext wurde von MINIX inspiriert)
- Im Scheduler-Code gibt es einen Kommentar: "Dieser Teil ist ziemlich guter Code, der in jeder Umgebung funktioniert, daher wird es wohl keinen Grund geben, ihn zu ändern!"
- Natürlich wurde das inzwischen durch verschiedene Verbesserungen und Algorithmen geändert, daher war diese Vorhersage falsch
- Die Implementierung des Kernel Panic besteht aus nur 5 Zeilen: Sie gibt "Kernel panic: Ursache" aus und stoppt das System mit
for(;;)
- Es gibt eine Stelle, an der
fork(2) im Kernel-Space aufgerufen wird
- Es sieht so aus, aber tatsächlich ist das davor stehende
move_to_user_mode() der Trick
- Linus hatte kein Gerät mit mehr als 8 MB RAM (er konnte es selbst nicht testen und meinte sinngemäß, wer so ein Gerät hat, solle es einfach ausprobieren)
- Mit modernen Toolchains ist es schwer zu kompilieren
- GCC ist zwar abwärtskompatibel, aber nicht ausreichend
- Linus hatte seine eigene GCC-Version mit der Option
-mstring-insns (vermutlich eine Option zur Unterstützung von x86-String-Instruktionen)
2 Kommentare
Interessant.
Hacker-News-Kommentare
counter: Es wird behauptet, dass er exponentiell bis auf das Doppelte der Priorität sinkt, wenn eine Aufgabe nicht lauffähig ist.