Ein Betriebssystem in 1.000 Zeilen implementieren
(operating-system-in-1000-lines.vercel.app)- Dieses Buch erklärt, wie man ein kleines Betriebssystem von Grund auf Schritt für Schritt aufbaut
- Die Begriffe Betriebssystem (OS) oder Kernel-Entwicklung können einschüchternd wirken, aber die Grundfunktionen eines OS (insbesondere des Kernels) sind überraschend einfach
- Auch Linux begann ursprünglich mit 8.413 Zeilen Code, und obwohl der heutige Linux-Kernel sehr groß ist, startete er als kleine Codebasis wie ein Hobbyprojekt
Einstieg
- Wir werden grundlegende Kontextwechsel, Paging, User Mode, eine Kommandozeilen-Shell, Disk-Device-Treiber sowie Datei-Lese-/Schreibvorgänge in C implementieren
- All das ist mit 1.000 Zeilen Code möglich
- Der schwierigste Teil beim Bau eines eigenen OS ist das Debugging
- Bevor man
printf-Debugging implementiert hat, kann man es nicht nutzen, und man muss verschiedene Debugging-Techniken und Fähigkeiten lernen, die in der Anwendungsentwicklung nicht nötig waren - Besonders wenn man „von Grund auf“ beginnt, trifft man auf schwierige Teile wie den Boot-Prozess und Paging
- Aber keine Sorge! Wir werden auch lernen, wie OS-Debugging funktioniert
- Je schwieriger das Debugging ist, desto größer ist die Zufriedenheit, wenn es gelingt
- Tauchen wir ein in die faszinierende Welt der OS-Entwicklung!
Weitere Informationen
- Die Implementierungsbeispiele können auf GitHub heruntergeladen werden.
- Dieses Buch steht unter der Lizenz CC BY 4.0, die Implementierungsbeispiele und der Quellcode unter der MIT-Lizenz
- Man sollte mit C und einer UNIX-ähnlichen Umgebung vertraut sein; wenn du
gcc hello.c && ./a.outausführen kannst, bist du startklar - Dieses Buch wurde ursprünglich als Anhang zum auf Japanisch verfassten Buch „Design und Implementierung eines Mikrokernels“ geschrieben
- Viel Spaß beim OS-Hacking!
Inhaltsverzeichnis des Buchs
- Intro
- Getting Started
- RISC-V 101
- Overview
- Boot
- Hello World!
- C Standard Library
- Kernel Panic
- Exception
- Memory Allocation
- Process
- Page Table
- Application
- User Mode
- System Call
- Disk I/O
- File System
- Outro
14 Kommentare
Ein Betriebssystem kannte ich bisher immer nur aus Büchern, daher ist es toll, es einmal im tatsächlichen Code zu sehen.
Vielen Dank fürs Teilen dieses großartigen Materials.
Vielen Dank für das großartige Material!!!!!!!!
Darum beneide ich sie wirklich sehr. In Japan scheinen sehr viele Fachbücher sehr gut herauszukommen. Das liegt wohl an der Bevölkerungszahl, oder?
Wenn man sich die übersetzten Bücher ansieht, scheint es keine zu geben, die technisch wirklich sehr tief gehen; stattdessen erscheinen wohl einfach Bücher aus den unterschiedlichsten Bereichen. Vermutlich liegt das daran, dass der Markt größer ist.
Vielen Dank für das gute Material.
Versuchen Sie, es einmal selbst zu bauen, oder kommen Sie zumindest auf ein Verständnisniveau, bei dem Sie später sehen können, wie Linux-Systeme funktionieren — das ist nützlich, wenn Sie mit Linux arbeiten.
Bis in die frühen 2000er war es sogar recht populär, dass Einzelne solche kleinen Kernel selbst gebaut haben; ich habe das damals auch ausprobiert und konnte dadurch einige Jahre an der Entwicklung des Linux-Kernels arbeiten. Auch hierzulande sind viele Bücher über die Entwicklung von Betriebssystemen erschienen, also kann man, wenn man gut sucht, Bücher finden, die das noch ausführlicher erklären.
Wenn man nicht vorhat, in ein entsprechendes Fachgebiet zu wechseln, sondern es nur aus Interesse macht, ist das keine schlechte Sache, aber ich persönlich würde heutzutage eher zu Studien rund um AI oder k8s raten. Noch heute tauchen auf Seiten wie KLDP gelegentlich Beiträge auf, in denen jemand schreibt, dass er Kernel-Entwickler werden möchte, und in den Kommentaren heißt es dann durchweg nur, man solle ins Ausland gehen.
Wahrscheinlich liegt es daran, dass es hierzulande keine Unternehmen gibt, die auf Kernel-Ebene investieren..? Haha
Ich weiß nicht genau, ob sie es nicht tun, weil es nicht nötig ist, oder ob sie es nicht können, aber es gibt so etwas jedenfalls nicht.
Vielen Dank für das tolle Material.
Solche Bücher sind wohl genau das, was man in Wuxia-Romanen als geheime Kampfkunst-Handbücher bezeichnen würde, haha.
Das ist wirklich sehr interessant. Ich wollte irgendwann einmal Systemprogrammierung lernen, und als erster Einstieg scheint mir das die Erwartung zu wecken, die Funktionsweise eines Betriebssystems aus programmiertechnischer Sicht verstehen zu können!
Hacker-News-Kommentare
Der Autor hat ein Buch geschrieben, damit man an einem Wochenende selbst ein Betriebssystem bauen kann, und man kann statt C auch eine bevorzugte Programmiersprache wie Rust oder Zig verwenden
Basierend auf Erfahrungen mit "Hobby"-Betriebssystemprogrammierung ist es ratsam, die Einrichtung für GDB-Debugging so früh wie möglich hinzuzufügen
Ich finde es großartig, ein kleines Betriebssystem für RISC-V zu bauen
Für Rust-Fans dürfte der Guide von phil-opp eine unterhaltsame Übung sein
Ich habe angefangen, RISC-V zu lernen, und der Emulator aus dem Buch, das ich gerade lese, ist einfacher als QEMU und hat eine merkwürdige Lizenz
Ein Vergleich mit xv6-riscv wäre interessant
Diskussionen auf Low-Level-Ebene sind immer interessant
Der schwierigste Teil beim Bau eines Betriebssystems ist das Debugging
Es werden zwei Projekte erwähnt
Gutes Material, ich habe es mir zum Lesen am Wochenende gespeichert
Den Kernel in Nim ...
Klingt interessant.