609 Stimmen

Welche Ressourcen gibt es für den Einstieg in die Betriebssystementwicklung?

Eine Sache, die ich schon immer machen wollte, ist mein eigenes Betriebssystem zu entwickeln (nicht unbedingt so ausgefallen wie Linux oder Windows, aber besser als ein einfacher Bootloader, den ich schon gemacht habe).

Es fällt mir schwer, Ressourcen/Anleitungen zu finden, die über das Schreiben eines einfachen "Hello World"-OS hinausgehen.

Ich weiß, dass viele Leute mir wahrscheinlich Linux oder BSD empfehlen werden, aber die Codebasis für solche Systeme ist (vermutlich) so groß, dass ich nicht wüsste, wo ich anfangen sollte.

Irgendwelche Vorschläge?

Update: Um es den Leuten, die über Google auf diesen Beitrag gestoßen sind, einfacher zu machen, hier einige Ressourcen zur Betriebssystementwicklung:

Andere Ressourcen:

Ich habe eine gute Ressource namens MikeOS MikeOS ist ein Lernwerkzeug, um zu zeigen, wie einfache Betriebssysteme funktionieren. Es verwendet den 16-Bit-Real-Mode für den BIOS-Zugriff, so dass es keine komplexen Treiber benötigt.

Aktualisiert 14.11.08

Ich habe einige Ressourcen gefunden unter Freebyte's Guide to...Freie und unfreie Betriebssysteme die auf Kits wie OSKit und die ExOS-Bibliothek verweist. Diese scheinen sehr nützlich für den Einstieg in die Betriebssystementwicklung zu sein.

Aktualisiert am 23.2.09

Rik Tokio empfohlen nanoos hierin Frage . Nanoos ist ein in C++ geschriebenes Betriebssystem.

Aktualisiert 3/9/09

Dinah stellte einige nützliche Stack Overflow-Diskussionen für angehende OS-Entwickler zur Verfügung: Hindernisse bei der Erstellung eines eigenen Betriebssystems erörtert, auf welche Fallstricke man bei der Entwicklung eines Betriebssystems stoßen kann und OS-Entwicklung ist eine eher allgemeine Diskussion.

Aktualisiert 7/9/09

LB hat einen Link zu der Pintos Projekt ein Lehrbetriebssystem für Studenten, die die Entwicklung von Betriebssystemen erlernen wollen.

Aktualisiert am 27.7.09 (Immer noch aktuell!)

Ich stolperte über eine OS-Online-Kurs von Berkley mit 23 Vorträgen.

TomOS ist eine Abzweigung von MikeOS das einen kleinen Speichermanager und Mausunterstützung enthält. Wie MikeOS ist es als Bildungsprojekt gedacht. Es ist in NASM-Assembler geschrieben.

Aktualisiert 8/4/09

Ich fand die Dias und andere Materialien als Ergänzung zu den oben aufgeführten Online-Vorlesungen in Berkeley.

Aktualisiert am 23.8.09

Alle Fragen mit dem Stichwort osdev auf Stackoverflow

OS/161 ist ein in c geschriebenes akademisches Betriebssystem, das auf einer simulierten Hardware läuft. Dieses Betriebssystem ist ähnlich wie Nachos. Danke Novelocrat!

tangurena empfiehlt http://en.wikipedia.org/wiki/MicroC/OS-II , ein Betriebssystem für eingebettete Systeme. Es gibt ein Begleitbuch auch.

Linux-Kernel-Entwicklung von Robert Love wird von Anders vorgeschlagen. Es ist ein "weithin anerkannter Insiderblick auf den Linux-Kernel".

Aktualisiert am 18.9.2009

Vielen Dank an Tim S. Van Haren für den Hinweis auf Kosmos , ein vollständig in c# geschriebenes Betriebssystem.

tgiphil erzählt uns von Managed Operating System Alliance (MOSA) Rahmenwerk eine Reihe von Werkzeugen, Spezifikationen und Quellcode zur Förderung der Entwicklung von verwalteten Betriebssystemen auf der Grundlage der Common Intermediate Language".

Aktualisierung 9/24/2009

Steve hat ein paar Ressourcen für die Entwicklung unter Windows mit Visual Studio gefunden, siehe BrokenThorns Anleitung mit VS 2005 einrichten o OSDevs VS-Abschnitt .

Aktualisiert am 5.9.2012

kerneltrap.org ist nicht mehr verfügbar. Der Linux-Kernel v0.01 ist erhältlich bei kernel.org

Aktualisiert am 21.12.2012 Eine grundlegende OS-Entwicklung Lehrgang ist als Semesterprojekt konzipiert. Es führt Sie durch den Aufbau eines Betriebssystems mit grundlegenden Komponenten. Ein sehr guter Einstieg für Anfänger. Verwandt Papier . Danke Srujan!

Aktualisiert am 15.11.2013

Ein einfaches Betriebssystem von Grund auf neu schreiben . Danke James Moore!

Aktualisiert am 8.12.2013

Wie man ein Computerbetriebssystem erstellt Danke ddtoni!

Aktualisiert 18.3.2014

ToAruOS ein Betriebssystem, das größtenteils von Grund auf neu entwickelt wurde, einschließlich GUI

Aktualisiert 12. September 2016

Schreibe dein eigenes Spielzeug-Betriebssystem

Aktualisiert 10. Dezember 2016

Ein einfaches Betriebssystem schreiben - von Grund auf (Danke, @Tyler C)

99voto

Adam Davis Punkte 89506

Es gibt eine Reihe von Links nach diesem Kurzübersicht was es bedeutet, ein Betriebssystem für die X86-Plattform zu schreiben.

Der Link, der am vielversprechendsten zu sein scheint (www.nondot.org/sabre/os/articles), ist nicht mehr verfügbar, also müssen Sie die Archive.org-Version um sie zu lesen.

Am Ende des Tages nimmt der Bootloader den Maschinencode des Kernels, legt ihn im Speicher ab und springt zu ihm. Sie können jeden beliebigen Maschinencode in den Kernel packen, aber die meisten C-Programme erwarten ein Betriebssystem, also müssen Sie Ihrem Compiler sagen, dass er nicht alles haben wird, oder der Bootloader muss etwas davon erstellen.

Der Kernel erledigt dann alle schweren Aufgaben, und ich vermute, dass Sie den Beispielkernel wollen. Aber es ist ein langer Weg von einem Kernel, der "Hallo Welt" sagt, bis zu einem Kernel, der einen Befehlsinterpreter lädt, Festplattendienste bereitstellt und Programme lädt und verwaltet.

Vielleicht sollten Sie ein Abonnement der ACM in Erwägung ziehen, um Zugang zu deren älterer Literatur zu erhalten - es gibt viele Artikel aus den späten 80er und frühen 90er Jahren in frühen Computermagazinen darüber, wie man alternative Betriebssysteme schaffen . Wahrscheinlich gibt es auch vergriffene Bücher aus dieser Zeit. Vielleicht können Sie dieselben Informationen kostenlos erhalten, indem Sie in den Verzeichnissen dieser Zeitschriften nachsehen (die auf dieser Website verfügbar sind - klicken Sie auf "Index" neben dem Namen der Zeitschrift) und dann nach Leuten fragen, die ein Exemplar haben.

Und schließlich weiß ich, dass das Usenet tot ist (so sagen es die Propheten des Internet-Untergangs), aber Sie werden feststellen, dass viele der alten, schroffen Experten aus dieser Zeit dort noch leben. Sie sollten Google Groups durchsuchen (dort gibt es das alte Repository von dejanews) und ich gehe davon aus, dass Sie viele Leute finden werden, die vor einem Jahrzehnt oder 1,5 Jahren die gleichen Fragen gestellt haben, die Sie jetzt stellen. Vielleicht stoßen Sie sogar auf die vielen Anfragen von Linus Torvalds, der Linux ursprünglich entwickelt hat. Wenn die Suche nichts ergibt, fragen Sie in der entsprechenden Newsgroup (die wahrscheinlich mit comp.arch beginnt, aber suchen Sie auch nach solchen mit OS im Namen).

37voto

Mike Stone Punkte 43560

Minix ist viel kleiner und für Lernzwecke gedacht, und das dazugehörige Buch ist auch ein gutes Beispiel.

Update: Ich denke, Minix 3 ist ein etwas anderes Ziel, aber Minix 2 (und natürlich die erste Version) waren für Unterrichtszwecke gedacht.

34voto

Richard T Punkte 4374

Als jemand, der ein Echtzeit-Multitasking-Betriebssystem von Grund auf geschrieben hat...

Tastaturentprellungsroutine, Tastaturtreiber, Festplattentreiber, Videotreiber, Dateisystem und schließlich ein Bootloader - und das nur, um ihn zum ersten Mal zu starten, ohne etwas zu tun!

... Ich kann nicht genug betonen, wie wichtig es ist, sich mit der Hardware vertraut zu machen! Das gilt vor allem dann, wenn Sie wirklich alles selbst machen wollen, anstatt einfach ein primitives System zu übernehmen, das jemand anderes bereits für Sie eingerichtet hat. Wenden Sie sich zum Beispiel an Intel und fragen Sie nach einer CPU-Karte für Ihren CPU-Typ! Diese wird alles für Sie bereithalten - die "Pin-outs", Interrupts, Opcodes, was immer Sie wollen!

Denken Sie daran, dass die Hardware dies alles möglich macht. Studieren Sie die Hardware. Sie werden es nicht bereuen.

.

19voto

Paul Nathan Punkte 38618

Schreiben Sie ein Mikrocontroller-Betriebssystem. Ich empfehle einen x86-basierten Mikrocontroller. Ein modernes Betriebssystem ist nur riesig . Lernen Sie zunächst die Grundlagen.

17voto

Jens A. Koch Punkte 37009

Eine ausgezeichnete Quelle ist das Material des MIT-Kurses 6.828: Operating System Engineering.

XV6 - einfaches Unix-ähnliches Lehrbetriebssystem, geschrieben in ANSI C für x86 http://pdos.csail.mit.edu/6.828/2012/xv6.html

XV6 Quelle - als gedrucktes Heft mit Zeilennummern http://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf

XV6 Buch - erklärt die wichtigsten Ideen des Betriebssystemdesigns http://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf

Das Material ist kompakt: 92 Seiten Quelle und 96 Seiten Kommentar.

Ich mag es mehr als das Minix-Buch! Es ist ein wahres Juwel!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X