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

StackOverflow https://stackoverflow.com/questions/43180

  •  09-06-2019
  •  | 
  •  

Frage

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

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

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

Irgendwelche Vorschläge?

Aktualisieren:Um es den Leuten, die über Google auf diesen Beitrag gelangen, einfacher zu machen, finden Sie hier einige Ressourcen zur Betriebssystementwicklung:

Andere Ressourcen:

Ich habe eine schöne Ressource mit dem Namen gefunden MikeOS, „MikeOS ist ein Lerntool, um zu demonstrieren, wie einfache Betriebssysteme funktionieren.Es verwendet den 16-Bit-Real-Modus für den BIOS-Zugriff, sodass keine komplexen Treiber erforderlich sind.

Aktualisiert am 14.11.08

Ich habe einige Ressourcen unter gefunden Freebytes Leitfaden zu...freien und nicht-freien Betriebssystemen das auf Kits wie OSKit und die ExOS-Bibliothek verweist.Diese scheinen für den Einstieg in die Betriebssystementwicklung äußerst nützlich zu sein.

Aktualisiert am 23.02.09

Ric Tokio empfohlen Nanoos in diesem Frage.Nanoos ist ein in C++ geschriebenes Betriebssystem.

Aktualisiert am 09.03.09

Dinah lieferte einige nützliche Stack Overflow-Diskussionen über angehende Betriebssystementwickler: Hindernisse bei der Erstellung eines benutzerdefinierten Betriebssystems Erörtert, auf welche Fallstricke Sie bei der Entwicklung eines Betriebssystems begegnen könnten und Betriebssystementwicklung ist eine allgemeinere Diskussion.

Aktualisiert am 09.07.09

LB hat einen Link dazu bereitgestellt Pintos-Projekt, ein Bildungs-Betriebssystem, das für Schüler entwickelt wurde, die die Entwicklung von Betriebssystemen erlernen.

Aktualisiert am 27.07.09 (Immer noch gut!)

Ich bin zufällig auf eins gestoßen Online-OS-Kurs aus Berkley mit 23 Vorträgen.

TomOS ist eine Abzweigung von MikeOS Dazu gehören ein kleiner Speichermanager und Mausunterstützung.Als MikeOS ist es als Bildungsprojekt konzipiert.Es ist im NASM-Assembler geschrieben.

Aktualisiert am 04.08.09

ich fand die Dias und andere Materialien passend zu den oben aufgeführten Online-Vorlesungen in Berkeley.

Aktualisiert am 23.08.09

Alle Fragen mit dem Tag osdev auf Stackoverflow

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

tangurena empfiehlt http://en.wikipedia.org/wiki/MicroC/OS-II, ein Betriebssystem für eingebettete Systeme.Da ist ein Begleitbuch sowie.

Linux-Kernel-Entwicklung von Robert Love wird von Anders vorgeschlagen.Es handele sich um einen „weithin gefeierten Insider-Blick auf den Linux-Kernel“.

Aktualisiert am 18.09.2009

Danke Tim S.Van Haren, der uns davon erzählt hat Kosmos, ein vollständig in c# geschriebenes Betriebssystem.

tgiphil erzählt uns davon MOSA-Framework (Managed Operating System Alliance)., „eine Reihe von Tools, Spezifikationen und Quellcode zur Förderung der Entwicklung verwalteter Betriebssysteme auf Basis der Common Intermediate Language.“

Aktualisierung 24.09.2009

Steve hat ein paar Ressourcen für die Entwicklung unter Windows mit Visual Studio gefunden, schauen Sie sich diese an Anleitung zur Einrichtung von BrokenThorn mit VS 2005 oder OSDevs VS-Abschnitt.

Aktualisiert am 05.09.2012

kerneltrap.org ist nicht mehr verfügbar.Der Linux-Kernel v0.01 ist verfügbar unter kernel.org

Aktualisiert am 21.12.2012Eine grundlegende Betriebssystementwicklung Lernprogramm als Semesterprojekt konzipiert.Es führt Sie durch den Aufbau eines Betriebssystems mit grundlegenden Komponenten.Sehr guter Einstieg für Anfänger.Verwandt Papier.Danke Srujan!

Aktualisiert am 15.11.2013

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

Aktualisiert am 08.12.2013

So erstellen Sie ein Computer-Betriebssystem Danke ddtoni!

Aktualisiert am 18.03.2014

ToAruOS ist ein größtenteils von Grund auf neu entwickeltes Betriebssystem, einschließlich GUI

Aktualisiert am 12. September 2016

Schreiben Sie Ihr eigenes Spielzeug-Betriebssystem

Aktualisiert am 10. Dezember 2016

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

War es hilfreich?

Lösung

Danach gibt es viele Links Kurzübersicht was es mit dem Schreiben eines Betriebssystems für die X86-Plattform auf sich hat.

Der Link, der am vielversprechendsten erscheint (www.nondot.org/sabre/os/articles), ist nicht mehr verfügbar, Sie müssen ihn also durchstöbern Archive.org-Version um es zu lesen.

Am Ende des Tages nimmt der Bootloader den Maschinencode des Kernels, legt ihn im Speicher ab und springt dorthin.Sie können jeden gewünschten Maschinencode in den Kernel einfügen, aber die meisten C-Programme erwarten ein Betriebssystem, daher müssen Sie Ihrem Compiler mitteilen, dass er nicht über alles verfügt, oder dass der Bootloader einen Teil davon erstellen muss.

Der Kernel erledigt dann die ganze schwere Arbeit, und ich vermute, dass es sich um den gewünschten Beispielkernel handelt.Aber es ist ein langer Weg zwischen einem Kernel, der „Hallo Welt“ sagt, und einem Kernel, der einen Befehlsinterpreter lädt, Festplattendienste bereitstellt und Programme lädt und verwaltet.

Vielleicht möchten Sie ein Abonnement bei ACM in Betracht ziehen, um Zugang zu deren älterer Literatur zu erhalten – in den frühen Computerzeitschriften der späten 80er und frühen 90er Jahre gab es viele Artikel darüber, wie das geht Erstellen Sie alternative Betriebssysteme.Wahrscheinlich gibt es auch vergriffene Bücher aus dieser Zeit.Möglicherweise können Sie dieselben Informationen auch kostenlos erhalten, indem Sie in den Verzeichnissen dieser Zeitschriften nachschlagen (die auf dieser Website verfügbar sind – klicken Sie auf „Index“ neben dem Zeitschriftennamen) und sich dann nach Personen mit einem Exemplar umsehen.

Schließlich weiß ich, dass das Usenet tot ist (so sagen die Propheten des Internet-Untergangs), aber Sie werden feststellen, dass viele der schroffen alten Experten aus dieser Zeit immer noch dort leben.Sie sollten Google-Gruppen durchsuchen (sie haben das alte Repository von dejanews) und ich gehe davon aus, dass Sie vor einem Jahrzehnt oder vor 1,5 Jahren viele Leute finden werden, die dieselben Fragen stellen wie Sie jetzt.Möglicherweise stoßen Sie sogar auf die vielen Hilfeanfragen von Linus Torvalds, als er ursprünglich Linux entwickelte.Wenn die Suche nichts bringt, fragen Sie in der entsprechenden Newsgroup nach (beginnt wahrscheinlich mit comp.arch, suchen Sie aber nach solchen mit OS im Namen).

Andere Tipps

Minix ist viel kleiner und für Lernzwecke konzipiert das passende Buch dazu ist auch gut.

Aktualisieren:Ich denke, Minix 3 hat ein etwas anderes Ziel, aber Minix 2 (und natürlich die erste Version) dienten Lehrzwecken.

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

Tastatur-Entprellroutine, Tastaturtreiber, Festplattentreiber, Grafiktreiber, Dateisystem und schließlich ein Bootloader – und das nur, um es 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!Dies ist insbesondere dann der Fall, wenn Sie wirklich alles selbst machen möchten, anstatt einfach ein primitives System zu übernehmen, das bereits jemand anderes für Sie entworfen hat.Wenden Sie sich beispielsweise an Intel und fragen Sie nach einer CPU-Karte für Ihren CPU-Typ!Dies wird es Ihnen erklären – die „Pinbelegungen“, Interrupts, Opcodes, was auch immer!

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

.

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

Ich wünschte, es gäbe einen Ort, an dem man alle Informationen über die Entwicklung eines eigenen Betriebssystems erhalten kann.Das kommt dem am nächsten OS-Entwickler-Wiki Und Foren.Sie bieten eine Menge guter Informationen zur Einrichtung, Entwicklung und zur Gerätehardware.

Außerdem gibt es einige tolle Tutorials unter BoneFide, ich habe das Tutorial „Erste Schritte“ von verwendet Kleie, und schaue mir jetzt ein neueres an, das auf seinem Anruf basiert Rollen Sie Ihr eigenes Spielzeug-UNIX-Klon-Betriebssystem.

Ich schaue mir zum zweiten Mal Folgendes an:"Betriebssysteme :Design und Umsetzung“

Und wenn Sie unter Windows entwickeln möchten, schauen Sie sich den Blogbeitrag von Jolson an.

Bearbeiten:Informationen zur Entwicklung unter Windows mit Visual Studio finden Sie hier BrokenThorns Leitfaden oder OSDevs Wiki.

Eine hervorragende Ressource ist das Material des MIT-Kurses 6.828:Betriebssystemtechnik.

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

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

XV6-Buch – erklärt die Hauptideen des Betriebssystemdesignshttp://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf

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

Mir gefällt es besser als das Minix-Buch!Es ist ein wahres Juwel!

Vielleicht möchten Sie auch einen Blick darauf werfen SharpOS Das ist ein Betriebssystem, das sie in c# schreiben.

Es gibt gute Ressourcen für Betriebssystemgrundlagen in Büchern.Da es nicht viele Aufrufe gibt, neue Betriebssysteme von Grund auf zu erstellen, werden Sie im Internet nicht viele Informationen für Bastler finden.

Ich empfehle das Standardlehrbuch „Modern Operating Systems“ von Tanenbaum.Möglicherweise finden Sie auch „Operating System Elements“ von Calingaert nützlich – es handelt sich um einen kurzen Überblick über ein Buch, das einen groben Überblick darüber gibt, was ein Betriebssystem aus der Sicht eines Designers ist.

Wenn Sie sich für Echtzeitsysteme interessieren (und zumindest die Unterschiede und Gründe für Echtzeit-Betriebssysteme verstehen sollten), dann würde ich Ihnen auch „MicroC/OS-II“ von Labrosse empfehlen.

Bearbeiten:

Können Sie näher erläutern, was Sie unter „technischer“ verstehen?Diese Bücher enthalten Details zur Pseudocode-Implementierung. Suchen Sie jedoch nach einem Beispielbetriebssystem oder Codeausschnitten für eine bestimmte Maschine/Sprache?

-Adam

Komme gerade von einer anderen Frage.Ich möchte erwähnen Pintos...Ich erinnerte mich, dass mein OS-Kurs mit Nachos und Pintos dasselbe zu sein scheint, was auf x86 laufen kann.

Ich fand Robert Loves Linux Kernel Development sehr interessant.Es erklärt Ihnen auf sehr bodenständige Weise, wie die verschiedenen Subsysteme im Linux-Kernel funktionieren.Da die Quelle verfügbar ist, ist Linux ein erstklassiger Kandidat für Hackerangriffe.

Hier sind einige andere Stack Overflow-Seiten, die es wert sind, in diese Diskussion einbezogen zu werden:

Hindernisse bei der Erstellung eines benutzerdefinierten Betriebssystems
Entwicklung eines Betriebssystems für die x86-Architektur

Fangen Sie an, bei Minix herumzuhacken.Es ist (offensichtlich) viel kleiner als Linux und (zumindest einige) für Lehrzwecke konzipiert.Allerdings nicht bei Minix 3, das ist eine ganz andere Geschichte.

Ich habe bereits geantwortet, aber als ich im College Betriebssysteme belegte, begannen wir mit einem frühen Linux-Kernel und fügten vereinfachte moderne Funktionen hinzu (grundlegende Dateisysteme, virtueller Speicher, Multitasking, Mutexe).Viel Spaß.Sie können einige der WIRKLICH verrückten Low-Level-Assembler-Zeugs zum Misten mit geschütztem Modus und Seitentabellen überspringen und trotzdem etwas über den Mut lernen.

http://kerneltrap.org/node/14002 http://kerneltrap.org/files/linux-0.01.tar.bz2

In meinem Betriebssystemkurs im Grundstudium haben wir eine Reihe von Subsystemen dafür erstellt OS/161, ein einfacher, BSD-ähnlicher Kernel, der einige der Grundlagen bereitstellt und gleichzeitig die Freiheit lässt, verschiedene Design-Space-Entscheidungen bei der Implementierung von Diensten auf höherer Ebene zu erkunden.

Vielleicht möchten Sie einen Blick darauf werfen Linuxfromscratch.

Linux From von Grund auf (LFS) ist ein Projekt, das Ihnen Schritt-für-Schritt-Anweisungen zum Erstellen Ihres eigenen benutzerdefinierten Linux-Systems ausschließlich aus Quellcode gibt.

Eine einfache und grundlegende Betriebssystementwicklung Lernprogramm als Semesterprojekt konzipiert.Es führt Sie durch den Aufbau eines Betriebssystems mit grundlegenden Komponenten.Sehr guter Einstieg für Anfänger.Verwandtes Papier ist Hier.

Ich möchte dieses Repo einbinden Wie-man-ein-Computer-Betriebssystem erstellt von Samy Pesse.Ist in Arbeit.Sehr interessant.

Ein einigermaßen einfach zu untersuchendes Betriebssystem wäre µC/OS.Dem Buch liegt eine Diskette mit der Quelle bei.

http://en.wikipedia.org/wiki/MicroC/OS-II

Schauen Sie sich das Managed Operating System Alliance (MOSA)-Projekt an unter www.mosa-project.org.Sie entwerfen einen AOT/JIT-Compiler und ein vollständig verwaltetes Betriebssystem in C#.Einige der Entwickler stammen aus dem inaktiven SharpOS-Projekt.

Ich habe damit gespielt Kosmos, "ein Betriebssystemprojekt, das vollständig in CIL -konformen Sprachen implementiert ist". Es ist in C#geschrieben, also war das genau in meiner Gasse.Für jemanden wie mich, der noch nie versucht hat, ein Betriebssystem zu erstellen, war es tatsächlich ziemlich cool, in kürzester Zeit ein „Hello World“-Betriebssystem zum Laufen zu bringen.

Schauen Sie sich diese Seite an: http://osix.net/modules/article/?id=359

Wie oben erwähnt, die OSDev-Wiki ist (bei weitem) die beste Quelle für die Betriebssystementwicklung.Für diejenigen unter Ihnen, die Deutsch sprechen, die lowlevel.eu Wiki ist auch toll.Etwas relativ Unbekanntes Incitatus OS, ein einfacher Kernel mit einer kleinen Anzahl von Userspace-Apps.Es eignet sich hervorragend für den Einstieg in das komplizierte Thema der Betriebssystementwicklung.

Movitz ist eine Lisp-Umgebung, die in Common Lisp geschrieben ist und „auf dem Metall“ läuft.Leider sind einige Links auf der Movitz-Hauptseite Zugriff verweigern, aber Anweisungen zum Herunterladen und Kompilieren des Quellcodes finden Sie unter Trac-Seite.Ein fertiges Bild finden Sie auch im Archiv von diese Seite.

Meiner Meinung nach ist das äußerst interessant, da es das zurückbringt Lisp-Maschine Konzept auf der aktuell verfügbaren Hardware.Es ist kommerziell gescheitert, aber das beweist für mich nicht, dass die Idee schlecht war.

Das Unix-Hasser-Handbuch ist ein unterhaltsames Buch, das das Konzept von Unix und seinen Derivaten halbwegs ernsthaft beschimpft.In vielen Abschnitten wird darüber gestritten, wie besser das Konzept der Lisp-Maschine sei.

Hier ist ein Artikel mit dem Titel „Ein einfaches Betriebssystem von Grund auf schreiben".Es umfasst das Schreiben eines Bootloaders, das Aufrufen des x86-32-geschützten Modus und das Schreiben eines Basiskernels in C.Es scheint gut darin zu sein, alles im Detail zu erklären.

Der x86 JS-Simulator Und ARM-Simulator kann auch sehr nützlich sein, um zu verstehen, wie verschiedene Hardwarekomponenten funktionieren, und um Tests durchzuführen, ohne Ihren Lieblingsbrowser zu verlassen.

Interessante Frage an die Programmierer.Sehen Sie, es wird lange, lange dauern, Betriebssysteme wie Windows oder Mac zu erstellen, aber wenn Sie einfache Betriebssysteme erstellen möchten, können Sie Ihr Bestes geben

  1. Sie müssen sich auf Assemblersprache, C und C++ konzentrieren.Sie sollten Experte in diesen Sprachen sein.
  2. Lesen Sie zuerst ein gutes Buch über die Funktionsweise von Betriebssystemen [Google it], und lesen Sie dann alle Informationen von Wiki-Betriebssystem
  3. Suchen Sie auf YouTube nach „So erstellen Sie Ihr eigenes Betriebssystem in Assemblersprache“. Sehen Sie sich das Video an. Z.B.Video
  4. Laden Sie den Quellcode des Linux-Betriebssystems herunter, kompilieren Sie ihn selbst und versuchen Sie, den Code selbst zu ändern
  5. Jetzt sind Sie ein erfahrener OS-Editor und laden ihn jetzt herunter Minix Und QNX und beginnen Sie mit ihnen zu entwickeln und erhalten Sie ihre Dokumente von hier Minix-Doc Und QNX-Dok

Jetzt haben Sie den Master-Abschluss in der Entwicklung von Betriebssystemen erworben (nicht ganz, nur noch ein bisschen mehr). Geben Sie dieses Wissen nun an Ihre Freunde weiter und versuchen Sie mit ihrer Hilfe, ein Betriebssystem zu erstellen, das so leistungsstark ist wie Mac, Linux oder Windows

Wenn Sie ein grundlegendes Betriebssystem erstellt haben, ist es tatsächlich schwierig, fortzufahren, da nicht viele Ressourcen für die Erstellung von GUIs oder die Portierung von Bibliotheken vorhanden sind.Aber ich denke, einen Blick darauf zu werfen ToAruOS würde sehr helfen!

Der Code unter der Oberfläche dieses Betriebssystems ist so verdammt einfach!Aber gleichzeitig hat er Dinge wie Cairo, Python (noch nicht, aber bald) SDL portiert, Share Memory erstellt und auch sein eigenes Widget-Toolkit erstellt.Es ist alles in C geschrieben.

Ein weiteres interessantes Betriebssystem wäre StammbaumOS.Es wurde von JamesM (dem Mann dahinter) erstellt JamesMs Kernel-Tutorial.Es verfügt zwar über mehr Funktionen als ToaruOS, ist aber auch größer und verwirrender.

Aber auf jeden Fall werden Ihnen diese beiden Betriebssysteme sehr helfen, insbesondere ToAruOS.

Als ich anfing, an meinen grundlegenden Betriebssystemen zu arbeiten, brauchte ich eine grundlegende Anleitung wie Sprungbretter für ein Basisbetriebssystem.Es hat mir geholfen, nicht den Kopf zu verlieren.

Das, wenn Sie es aus absolut nichts machen wollen (reiner Assembler-Code)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top