51 Punkte von GN⁺ 2025-03-22 | 1 Kommentare | Auf WhatsApp teilen
  • Ein praxisorientierter Leitfaden dafür, wie man selbst ein x86-Betriebssystem entwickelt
  • So geschrieben, dass technische Details vermittelt werden, ohne zu viele Informationen über Codebeispiele oder Samples preiszugeben
  • Erklärt weder die Theorie von Betriebssystemen noch die Funktionsweise eines bestimmten Betriebssystems
  • Die frühen Kapitel sind detailliert und konkret erklärt, damit man sich schnell an das Schreiben von Code gewöhnen kann
  • Die späteren Kapitel skizzieren Konzepte und Anforderungen grob und regen die Leser dazu an, Implementierung und Design selbst zu übernehmen
  • Wenn man Betriebssystemtheorie lernen möchte, wird Modern Operating Systems von Andrew Tanenbaum empfohlen

Wichtige Kapitelinhalte

  • Frühe Kapitel
    • Kapitel 2–3: Entwicklungsumgebung einrichten und den OS-Kernel in einer virtuellen Maschine booten → Beginn des Codens in C
    • Kapitel 4: Bildschirmausgabe und Ausgabe über den seriellen Port
    • Kapitel 5: Segmentierung
    • Kapitel 6: Interrupts und Eingabeverarbeitung
  • Nach der Entwicklung eines funktionsfähigen Kernels
    • Kapitel 7: Vorbereitung der Unterstützung für Anwendungen im User Mode
    • Kapitel 8–9: Einrichten von virtuellem Speicher mittels Paging
    • Kapitel 10: Speicherallokation
    • Kapitel 11: Ausführen von Benutzeranwendungen
  • Fortgeschrittene Themen
    • Kapitel 12: Dateisystem
    • Kapitel 13: System Calls
    • Kapitel 14: Multitasking

Hintergrund des Buchs und Entwicklungsprozess

  • Dieses Buch und der OS-Kernel wurden im Rahmen eines fortgeschrittenen Individualkurses am schwedischen Royal Institute of Technology entwickelt
  • Die Autoren hatten zuvor Kurse zur OS-Theorie belegt, aber nur wenig praktische Erfahrung mit echter Kernel-Entwicklung
  • Um die Theorie praktisch umzusetzen und ein tieferes Verständnis zu gewinnen, richteten sie einen neuen Kurs ein und verfassten dieses Buch
  • Die x86-Architektur war über lange Zeit die am weitesten verbreitete Hardware-Architektur, und es gibt umfangreiche Referenzmaterialien sowie Emulatoren
  • Die Dokumentation zu Hardware-Details war häufig komplex und schwer verständlich

Entwicklungsweise

  • Etwa 6 Wochen lang in Vollzeit daran gearbeitet
  • In kleinen Schritten implementiert und nach jedem Schritt manuelle Tests durchgeführt → Ursachen von Bugs leichter nachvollziehbar
  • Der Großteil des Codes wurde per Pair Programming geschrieben → erwarteter Effekt: weniger Bugs

Zielgruppe

  • Geeignet für Leser mit folgendem Hintergrundwissen:
    • Vertraut mit UNIX/Linux und Systemprogrammierung
    • Vertraut mit der Programmiersprache C
    • Verständnis von Computersystemen und hexadezimaler Notation
  • Auch Anfänger können es als Lernwerkzeug nutzen, der Schwierigkeitsgrad ist jedoch hoch

1 Kommentare

 
GN⁺ 2025-03-22
Hacker-News-Kommentare
  • Ich liebe osdev. Ich kenne das Endziel nicht, aber die Tatsache, dass man bauen kann, was man will, ist einfach großartig

    • Als ich grundlegende x86-Interrupts und Systemaufrufe zum Laufen gebracht habe, ergab plötzlich alles Sinn
    • Sobald man mit Systemaufrufen anfängt, gehört einem die Welt
    • Ich kann nur dringend empfehlen, sich hobbymäßig mit OS-Entwicklung zu beschäftigen
    • Ich habe es als Gelegenheit genutzt, Rust zu lernen, und viel mehr bekommen als erwartet
    • Inzwischen bin ich einigermaßen vertraut mit Rust und kann mehr Double- und Triple-Faults auslösen als die meisten anderen Leute
  • Viele Leute empfehlen ihre bevorzugte Alternative, aber ich bin immer noch ein großer Fan von Project Oberon

    • Für das Computing des Jahres 2025 ist es vielleicht nicht geeignet, aber es ist ein kleines grafisches OS, geschrieben in einer speichersicheren Systemprogrammiersprache
    • Es gibt genug Material, um etwas über OS-Entwicklung zu lernen
    • Project-Oberon-Website
  • Dieses Buch hat den klassischen Makel von osdev-Tutorials

    • Viele Erklärungen zu x86-Details, aber fast nichts zu osdev
    • x86-Details sind nicht osdev
    • Es ist nur ein winziger Teil dessen, womit sich ein grundlegendes OS befassen muss
  • Mein Lieblingsbuch zu Betriebssystemen ist Operating Systems: Three Easy Pieces

    • Es geht mehr darum, wie sie funktionieren, als um ihre Entwicklung
    • Es ist kostenlos als HTML und PDF verfügbar, und es gibt auch eine gedruckte Ausgabe zu kaufen
    • OSTEP-Website
  • Danke! Das sieht nach großartigem Material zu diesem Thema aus

    • Ich wünschte, ich hätte noch den Sourcecode des "OS", das ich als Teenager gebaut habe
    • Ich habe einen MBR-Bootloader geschrieben, in den Protected Mode gewechselt, Zeichen auf dem Bildschirm angezeigt und sogar Tastatureingaben verarbeitet
    • Wenn du nach einer unterhaltsamen Herausforderung suchst, kann ich es nur wärmstens empfehlen
  • Dieser Kommentar weckt Nostalgie nach den 2000ern

    • Eine Website namens planet-source-code.com war in der Entwickler-Community beliebt
    • Dort gab es Hunderte von Mini-Betriebssystemen, die von Mitgliedern geschrieben wurden
    • Die meisten hatten Bootloader in C/C++ und Assembly, wurden mit Mingw32 kompiliert und von gewöhnlichen Disketten gebootet
  • Das Buch ist gut. Es lohnt sich, die Issues auf GitHub anzuschauen

    • Es gibt Stellen, die korrigiert werden müssen
    • Der letzte Commit liegt 10 Jahre zurück
  • Ich wünschte, zwei japanische Bücher über Betriebssystementwicklung wären ins Englische übersetzt worden

    • Sie führen sogar bis dahin, Fenster in einer grafischen Umgebung zum Laufen zu bringen
    • Eines davon ist eine 30-Tage-Challenge
    • MikanOS GitHub
    • 30-days Homemade OS GitHub
    • Es gab einen Versuch, "30-days Homemade OS" ins Englische zu übersetzen, aber er kam nicht weit
    • os-in-30-days GitHub
    • Ich kenne kein Buch und keinen Artikel auf Englisch, die so weit gehen
    • Bei Fusion ist das Kapitel zur grafischen Umgebung noch nicht fertig
    • Fusion-OS-Website
  • Ich frage mich, wo die Dokumentation für das kleine rote OS-Buch ist

  • Wenn wir schon über OS-Entwicklung sprechen: Spiele machen das Lernen unterhaltsam

    • Ich wollte ein Spiel machen, das Betriebssysteme lehrt, indem man durch die Computergeschichte reist
    • Die Spieler würden die Rolle von Prozess-Scheduler und Interrupt-Handler übernehmen
    • Man könnte auf einem Single-CPU-System mit sehr begrenztem RAM anfangen, zu SMP-Systemen aufsteigen und schließlich bei den verteilten Multi-System-Computing-Plattformen von heute ankommen