3 Punkte von GN⁺ 2024-06-09 | 1 Kommentare | Auf WhatsApp teilen
  • Xv6 ist ein einfaches Unix-ähnliches Betriebssystem für Lehrzwecke, entwickelt zum Erlernen von Betriebssystemarchitekturen, und wird im MIT-Undergraduate-Kurs 6.1810 eingesetzt
  • Nach seiner Entwicklung im Sommer 2006 wurde es für den Kurs 6.1810 auf RISC-V portiert und damit an moderne Lehrumgebungen angepasst
  • Quellcode und Dokumentation stehen in den Git-Repositories xv6-riscv und xv6-riscv-book bereit, sodass man sie selbst bauen und lesen kann
  • Design und Lernkontext wurzeln in Unix V6 und John Lions’ Commentary on UNIX' 6th Edition
  • Wer auch den ursprünglichen Unix-V6-Code lesen möchte, findet in Referenzen wie dem Lions-Kommentar, dem V6-Quellcode und dem PDP11/40 Processor Handbook hilfreiches Material

Xv6 und 6.1810

  • Xv6 ist ein einfaches Unix-ähnliches Betriebssystem für Lehrzwecke
  • Es wurde im Sommer 2006 entwickelt und für den MIT-Undergraduate-Kurs 6.1810 auf RISC-V portiert

Quellcode und Lernmaterialien

Referenzen zum Lesen des originalen Unix V6

  • The PDP11/40 Processor Handbook ist eine nützliche Ressource, um den ursprünglichen Unix-V6-Code zu verstehen
    • Das auf gescannten Bildern basierende PDF ist nicht per Textsuche durchsuchbar
    • Eine nach Befehlsnamen indexierte Webversion ist ebenfalls verfügbar

Bitte um Feedback

  • Feedback ist erwünscht zu Erfahrungen mit Xv6, zur Einführung im Unterricht, zu Verbesserungen, die die Einführung erleichtern würden, sowie dazu, was gut funktioniert hat und was nicht
    • Kontakt: 61810-staff@lists.csail.mit.edu

1 Kommentare

 
GN⁺ 2024-06-09
Hacker-News-Kommentare
  • Ich habe diesen Kurs am MIT belegt und kann ihn mit 20/10 empfehlen, besonders für Leute ohne Systemhintergrund.
    Das Lehrbuch ist ziemlich leicht verständlich, und die Übungen sind sehr gut, um das Verständnis zu überprüfen. Allerdings sollte man den Netzwerk-Treiber beim ersten Versuch vielleicht besser überspringen.

    • Ich frage mich, ob diese Vorlesung online verfügbar ist. Auf OpenCourseWare konnte ich keine Vorlesungsaufzeichnungen finden; ich habe zwar eine YouTube-Playlist zu xv6 gefunden, die nicht vom MIT ist, aber ziemlich gut aussieht: https://www.youtube.com/playlist?list=PLbtzT1TYeoMhTPzyTZboW...
    • Ich habe an der UCI einen Kurs belegt, der große Teile des MIT-Kurses übernommen und deutlich einfacher gemacht hat; trotzdem ist er empfehlenswert.
  • Ich habe am MIT einen Kurs belegt, der dieses OS verwendet, und er war wirklich hervorragend.
    Ich habe mir auch heute noch die Kurswebsite angesehen, und im Grunde kann man ihn auch allein absolvieren. Vorlesungsnotizen, Übungen, ein xv6-Repository mit Branches für jede Übung und sogar Anleitungen zum lokalen Ausführen sind alle online; die Offenheit ist erstaunlich.
    Erste Übung: https://pdos.csail.mit.edu/6.1810/2023/labs/util.html
    Ich habe vor, den gesamten Kurs demnächst selbst noch einmal komplett durchzuarbeiten.

  • Viele Projekte in meinem Betriebssystem-Kurs an der Uni bestanden darin, etwas auf dem xv6-Betriebssystem aufzubauen.
    Eines davon war ein Projekt zum Bau eines Schedulers für xv, und es war definitiv eine gute Methode, um die verschiedenen Komponenten eines Betriebssystems kennenzulernen.

  • An einer Universität in Spanien wurde oder wird Plan 9 zu Lehrzwecken verwendet.

  • Als ich den Titel zum ersten Mal sah, dachte ich, es gehe um ein neues Release des alten xv-Bildbetrachters: http://www.trilon.com/xv/

  • Ich wollte schon lange den Windows-NT-Kernel verstehen. Vermutlich wären die frühen Versionen besser, weil sie einfacher sind.
    Ich habe gehört, die erste Version sei VMS nahe gewesen, frage mich aber, ob das stimmt. Außerdem frage ich mich, ob es Material zu VMS gibt; ich habe gehört, OpenVMS sei Open Source, aber die Version scheint viel zu hoch zu sein.

    • Um den Entwicklungsprozess des NT-Kernels gut zu verstehen, lohnt sich das Buch Show Stopper von 1996.
      Dave Cutler hat bei DEC zwar mehrere Projekte geleitet, darunter auch VMS-bezogene Projekte, aber das, was der Microsoft-New-Technology-Kernel von VMS geerbt hat, war eher ein geistiges Erbe auf Ebene von Design und Architektur.
      Dave arbeitete bei DEC bereits an einer großen Überarbeitung oder einem Nachfolger von VMS, bevor sein Team verdrängt wurde, und viel von dieser Vision ging in Windows über, allerdings teils auf Kosten robuster Designmuster aus der Minicomputer-Welt.
      Cutler sah das MSDOS-Team als Anfängerprogrammierer, die spaghettiartige Lösungen auf das falsche Problem stapelten. Da Bill Gates den Markt jedoch mit OEM-Verträgen fest im Griff hatte, gab Bill ihm im Grunde einen Blankoscheck, um einen echten Kernel zu liefern, der mit dem konkurrieren konnte, was Steve bei NeXT baute.
      Daher ist NT in Funktion oder Form überhaupt nicht wie VMS und auch in der Implementierung völlig anders. VMS hatte eine saubere C-Standardbibliothek und Compiler-Suite. Man kann es aber als eine Bewegung von Leuten aus der Minicomputer-Welt sehen, die in die Mikrocomputer-Welt hinabstiegen, um dort zu konkurrieren.
      Für mehr Atmosphäre lohnen sich die Interviews mit Dave Plummer und Cutler auf YouTube.
    • Sieh dir die Buchreihe Windows Internals, alte Ausgaben des MSTech Journal und von DDJ sowie die VMS-Handbücher im Digital-Archiv an.
    • Der Windows-2000-Quellcode ist im Internet geleakt, und es ist sehr wahrscheinlich, dass auch neuere Versionen geleakt wurden. Er wurde tatsächlich auch schon als Lehrmittel verwendet.
    • Es stimmt nicht, dass die erste NT-Version VMS nahe war.
      Zu VMS gibt es sehr viel Material; ursprünglich wurden mehrere Meter Dokumentation mitgeliefert. Es wird auch heute noch verkauft, und man kann kostenlose VM-Images für Hobbyisten bekommen.
      OpenVMS ist nicht Open Source, und es stimmt auch nicht, dass die Version zu hoch sei.
      Man sollte vor einer Frage immer die Prämissen prüfen. Wenn man fragen will: „Ist B möglich, weil A gilt?“, sollte man zuerst prüfen, ob A überhaupt wahr ist.
    • War OpenVMS Open Source?
  • Ich frage mich, warum Unix v6. Ich verstehe nicht, warum man mit einem 50 Jahre alten Design lehrt.
    Um die Grundlagen von Betriebssystemen wie Scheduling, Interprozesskommunikation und Adressraumverwaltung zu vermitteln, scheint mir ein Mikrokernel-Design besser geeignet zu sein.

    • Die Vorläufer heute weit verbreiteter Technologien zu studieren, ist eine gute Möglichkeit zu lernen, wie wir hierhergekommen sind, welche Kompromisse warum eingegangen wurden und was wir vielleicht verloren haben.
      Wenn man später auf neue Technologien trifft, versteht man sie tiefer, und es erweitert auch den Blick für die weitere Karriere.
      Als jemand, der einen Teil dieser Geschichte verpasst hat, hätte ich mir gewünscht, das an der Uni gelernt zu haben.
    • Man muss gehen lernen, bevor man läuft. Xv6 ist grundlegend, aber für Studierende, die diese Konzepte zum ersten Mal sehen, ist es eine sehr gute Einführung, um in einem Semester die Grundlagen von Betriebssystemen zu lernen.
    • Ich glaube nicht, dass viele Professoren Xv6 nur wegen seines großartigen Designs für Betriebssystemkurse auswählen.
      Vermutlich wählen sie es oft, weil es gut genug, einfach und in einem Semester leicht zu unterrichten ist, während die Studierenden auch noch andere Kurse belegen. Ich frage mich, ob gemeint ist, dass ein Mikrokernel-Design nicht nur besser, sondern auch leichter zu unterrichten wäre.
    • Die Von-Neumann-Architektur ist 80 Jahre alt. Ich sehe nicht, warum es wichtig sein sollte, wie alt ein Design ist, wenn es immer noch am relevantesten und am weitesten verbreitet ist.
      Die grundlegenden Abstraktionen von Unix v6 sind auch heute noch gültig.
      Der zentrale Unterschied zwischen Mikrokernel und monolithischem Kernel liegt darin, wie der Adressraum zwischen Userspace und Kernel geteilt wird; mir ist nicht klar, warum ein Mikrokernel-Design besser sein sollte. Ebenso frage ich mich, warum man ein Design lehren sollte, das nicht weit verbreitet ist.
    • Mikrokernel spielen im Software-Ökosystem eine wichtige Rolle, aber die meiste Software, mit der wir zu tun haben, wird nicht von einem Mikrokernel orchestriert.
      Auch die meiste Software, die im Internet läuft, läuft nicht auf einem Mikrokernel, und dasselbe gilt für die meiste Software, die man im Internet bekommt. Ein solcher Kurs scheint kaum ausreichend darauf vorzubereiten, die Kernel zu verstehen, mit denen man arbeitet oder beruflich in Berührung kommt.
  • Ich frage mich, wie jemand, der im Selbststudium lernt, am besten praktisch damit herumexperimentieren sollte.

  • Auch Plan 9 ist eine ziemlich einfach zu verstehende Codebasis.

    • Einige Designentscheidungen von Plan 9 verdienen Respekt.
      Namespaces pro Prozess, Bind und die Art, alles als Datei zu behandeln, verleihen ihm eine Eleganz, die man bei anderen Unix-artigen OS kaum sieht.
  • Im Betriebssystem-Kurs des letzten Semesters haben wir PintOS verwendet; ich wünschte, es gäbe einen zweiten, vertiefenden Teil.