Gibt es ein Betriebssystem, das zum Lernen einfach genug ist? [geschlossen]

19

Ich würde wirklich gerne verstehen, wie ein Betriebssystem hinter den Kulissen funktioniert. Ich denke jedoch, dass der Kernel der meisten Open-Source-Betriebssysteme zu komplex für Lernzwecke ist, selbst für einen Vollzeitprogrammierer zum Lernen. Gibt es "einfache" Betriebssysteme, die nur zu Lernzwecken entwickelt wurden?

DotNetStudent
quelle
Ich habe das auf meiner Suche gefunden, es nie ausprobiert. pdos.csail.mit.edu/6.828/2012/xv6.html anscheinend wurde es geschrieben, um Unix v6 als Lernwerkzeug zu ersetzen.
Strg-Alt-Delor

Antworten:

28

Andrew Tanenbaums Minix (siehe Betriebssystemdesign und -implementierung ) ist genau für diesen Zweck vorgesehen. Eine andere (wenn auch ziemlich veraltete) Möglichkeit besteht darin, das Lion's Book durchzulesen , das Unix V6 (volles Unix, aber eine Version, die alt genug ist, um noch relativ einfach studiert werden zu können) behandelt. Die offensichtlichen Nachteile des letzteren sind, dass das verwendete C ziemlich veraltet ist, so dass selbst erfahrene C-Programmierer Teile als etwas schwer lesbar empfinden und Sie nicht mit einem modernen Compiler rechnen können, der den Code verdaut.

Jerry Sarg
quelle
7
MINIX 3 ist kein Lehrmittel und der MINIX 3-Mikrokernel ist definitiv nicht leicht zu verstehen. Laut Tanenbaum war nur MINIX 1 ein Lehrmittel.
Sakisk
10

Sie sollten ein modernes Unix-ähnliches Xv6-Betriebssystem in Betracht ziehen, das in einem OS-Kurs am MIT verwendet wird. Es scheint auch einige Kursmaterialien zu haben.

Es läuft sowohl in Bochs als auch in Qemu x86-Emulatoren. Ich habe diesen Teil gemacht. Es hat Spaß gemacht.

Bruce Ediger
quelle
7

Minix ist eine gute Wahl und wird in einer der anderen Antworten beschrieben.

Xinu

Beachten Sie auch XINU - XINU ist kein Unix.

Es ist auch UNIX rückwärts geschrieben.

Es gibt ein Buch von Douglas Comer, das meiner Meinung nach gut geschrieben, gut illustriert und umfangreich ist.

Es gibt ein Embedded Xinu und eine Website zum Unterrichten mit Xinu.

http://xinu.mscs.mu.edu/Teaching_With_Xinu

FreeRTOS

Ein weiteres kleines Betriebssystem, das heutzutage sehr beliebt ist, ist FreeRTOS. Es läuft fast alles. Wenn Sie vom Mars kämen und einen Prozessor oder eine Evaluierungsplatine hätten, auf der dieser nicht ausgeführt werden kann, könnten Sie etwa 10 Seiten Dokumentation lesen, etwa fünf Dateien in Bezug auf Interrupts, Timer und UARTs ändern und ausgeführt werden.

http://www.freertos.org/

Sie behaupten, dass es 31 Architekturen und 18 Werkzeugketten unterstützt. Meine Erfahrung Ende 2009 war gut und ich habe gehört, dass sie sich seitdem stark verbessert hat.

Andere Links

Eine ähnliche Frage mit hilfreichen Informationen finden Sie hier:

/programming/254149/how-do-you-write-a-basic-operating-system

Das Design von Linux und vielen anderen Betriebssystemen wird von UNIX beeinflusst, daher ist dieses Video, in dem die ursprünglichen Designer (Kernigan, Richie und Thompson und andere) Informationen liefern und die Designideen direkt aus der Quelle beziehen.

http://techchannel.att.com/play-video.cfm/2012/2/22/AT&T-Archives-The-UNIX-System

Es gibt ein klassisches, aber oft überarbeitetes Lehrbuch für Betriebssysteme:

Silberschatz, Galvin, Gagne: Betriebssystemkonzepte, 7. Auflage

Möglicherweise gibt es auch neuere Editionen. Ich verlinke selten über einen Buchhändler zu einem Buch, aber die Vorschau ist sehr großzügig. Weitere Informationen zu Betriebssystemen erhalten Sie unter:

http://www.amazon.com/Operating-System-Concepts-Abraham-Silberschatz/dp/0470128720

DeveloperDon
quelle
3

An meiner Uni haben wir NachOS gelernt . Es ist ein großartiges Open Source-Betriebssystem zum Lernen. Sie können auch viele Universitätsübungen auf NachOS zum Lernen finden.

Nachos ist eine Lernsoftware zum Unterrichten von Betriebssystemkursen für Anfänger und potenzielle Absolventen. Die Nachos-Distribution enthält:

  • Ein Überblickspapier
  • Einfacher Basiscode für ein funktionierendes Betriebssystem
  • Ein Simulator für allgemeine Beispielzuweisungen für PCs / Workstations
  • Ein C ++ - Primer (Nachos ist in einer leicht zu erlernenden Teilmenge von C ++ geschrieben, und der Primer hilft C-Programmierern, unsere Teilmenge zu lehren)

Die Aufgaben veranschaulichen und untersuchen alle Bereiche moderner Betriebssysteme, einschließlich Threads und Parallelität, Multiprogramming, Systemaufrufe, virtueller Speicher, Software-geladene TLBs, Dateisysteme, Netzwerkprotokolle, Remote Procedure Call und verteilte Systeme.

Benutzer
quelle
0

Schauen Sie sich KOS (Kid OD) und SOS (Simple OS) an. Beide Betriebssysteme wurden entwickelt, um die Interna eines Betriebssystems zu lernen. KOS ist der "Vater" von SOS und basiert auf den Erfahrungen von KOS.

Diese Projekte bildeten die Grundlage für viele Lehrartikel im Linux Magazine France.

Auf der KOS-Website finden Sie auch eine Seite, auf der Sie die Quellen anderer simples Betriebssysteme herunterladen können.

Barjak
quelle
0

Wenn Sie sich für die .NET-Technologiefamilie interessieren, können Sie Singularity ausprobieren . Es wurde seit 2008 nicht mehr aktualisiert, kann aber hier in Quell- und ISO-Form von CodePlex heruntergeladen werden .

Jesse C. Slicer
quelle
Besonderer Grund für die Gegenstimme, Gegenstimme ? Links sind noch aktiv und es ist ein einfaches Betriebssystem, das in einer höheren Sprache geschrieben ist.
Jesse C. Slicer
0

Die Leute können alle CP / M- und frühen DOS-Versionen verstehen. Danach gerieten die Dinge außer Kontrolle und niemand weiß mehr alles. Sie waren nicht dafür gedacht zu lernen, wie ein Betriebssystem funktioniert, aber viele Leute haben das von diesem Betriebssystem gelernt.

Joe Dos
quelle
1
Erwägen Sie, einige Referenzen oder zusätzliche anekdotische Beweise hinzuzufügen, um Ihre Antwort zu sichern. Oder fügen Sie einige zusätzliche Details hinzu, um anzugeben, warum die X-Version leichter zu verstehen ist als die Y-Version.
-1

Lesen Sie ein Buch über das Programmieren in Assembler. Sie müssen sich nicht damit auskennen, aber es wird Ihnen viel über das Innenleben eines Computers beibringen.

Pieter B
quelle