Welches ist das kleinste Betriebssystem der Welt?

Beste Antwort

Es hängt davon ab, was Sie unter Betriebssystem verstehen. Ich habe einmal ein einfaches Warteschlangensystem geschrieben, das mehrere Protokollsitzungen im Round-Robin-Verfahren ausführt. Aber es lief unter einem Standardbetriebssystem. Als Mikrocontroller zum ersten Mal für eingebettete Systeme herauskamen, schrieben die Ingenieure normalerweise ihr eigenes rudimentäres Betriebssystem, wie in einer der anderen Antworten angegeben.

Das kleinste nützliche Betriebssystem, das ich verwendet habe und das die Grundfunktionen eines Multitasking-Betriebs hatte -das Regalsystem wurde QNX genannt. Es war ein heruntergekommenes Unix-System und lief auf dem ersten IBM PC. Es hatte keine ausgefallenen Grafiken, aber ich konnte bequem Software entwickeln. Tatsächlich war der einzige wirkliche Unterschied zu einer modernen Maschine die Benutzeroberfläche mit Farbe und Grafik. Grundsätzlich hat die Einführung von DOS durch IBM die Computerindustrie um mindestens 10 Jahre zurückgeworfen. Es gab eine Reihe überlegener Betriebssysteme (die hätten angepasst werden können) oder die zu dieser Zeit entwickelt wurden, wobei natürlich Unix den Standard setzte.

Antwort

Ich habe gerade die Entwicklung abgeschlossen Ein Kernel für eine Klasse ( CS-4284 Systems & Networking Capstone ) während meines letzten Schulsemesters. Zuvor nahm ich an einem OS-Kurs teil, der darauf abzielt, mit dem Betriebssystem aus Sicht des Programmierers und nicht aus Sicht eines OS-Designers zu arbeiten. In den letzten anderthalb Jahren an der Entwicklung von Betriebssystemen und Kerneln beteiligt zu sein (ist es nicht) eine lange Zeit, aber ich habe viel gelernt), hier ist was ich empfehle:

1. Meister C Ich kann das nicht mehr betonen. Nein wirklich, beherrsche es. Die Entwicklung des Betriebssystems ist schwierig. Es enthält viele Konzepte, die Sie wirklich brauchen, um C zu beherrschen, sodass es Ihnen nicht im Weg steht. Nehmen Sie zum Beispiel die Unix-Pipe (in eine Shell eingegeben |). Um eine Pipe in Ihrem Betriebssystem zu entwickeln, müssen Sie das Betriebssystem-Dateisystem und die Dateistruktur wirklich gut verstehen. Es ist ein typisches Problem mit begrenztem Puffer (Verbraucher / Hersteller) und muss sich mit der gesamten Synchronisation befassen. Sie müssen den virtuellen Speicher beim Schreiben kennen. Außerdem ist Unix normalerweise BYOB (bringen Sie Ihren eigenen Puffer mit) Der Puffer, den der Benutzer bereitgestellt hat, muss ordnungsgemäß verwaltet werden. Das Letzte, was Sie hier tun möchten, ist, sich mit grundlegenden C-Problemen wie Zeigern und Speicherverwaltung zu befassen. (Hinweis: Die Speicherverwaltung im Betriebssystem ist 10-mal schwieriger als die C-Speicherverwaltung: Sie müssen die Adressräume zwischen Benutzer und Kernel kennen.)

2. Kernel vs. Betriebssystem Sie müssen den Unterschied zwischen einem Kernel und einem Betriebssystem verstehen. Ein Kernel ist im Wesentlichen das Gehirn des Betriebssystems. Das Betriebssystem besteht aus einer Reihe von Anwendungen, die gebündelt sind. Zum Beispiel enthält Mac OS X: einen Kernel, die Schnittstelle (GUI), integrierte Standardanwendungen (Finder – das ist nur eine Abstraktion für Visualisieren Sie das Dateisystem, TextEdit, eine Shell usw.)

3. Tauchen Sie nicht direkt ein Es ist unmöglich zu starten Ich schlage vor, dass Sie mit den folgenden Schritten beginnen:

  1. Machen Sie sich mit den GCC-Kompilierungsschritten vertraut (was passiert, wenn Sie gcc ausführen, wie eine ausführbare Datei erstellt wird und was passiert, wenn Sie das Programm ausführen). Sie können auch einen einfachen Assembler in C schreiben (Assembler-Code als Eingabe- und Ausgabemaschinencode verwenden. Dazu müssen Sie verstehen, welche Abschnitte .data, .text und .bss in Assembly enthalten sind (sehr hilfreich) Der Weg zum Verständnis des virtuellen Speichers des Betriebssystems. Sie werden auch die Adressierung auf Maschinenebene und die Auflösung von Verzweigungen verstehen.
  2. Machen Sie sich mit mach vertraut Tools und Programme auf Ine-Ebene. Ich schlage vor, das Bombenlabor zu machen, da es viele Lehrmaterialien dafür gibt. Einfach Google Bomb Lab.
  3. Machen Sie sich mit grundlegenden Betriebssystemangriffen vertraut. Ich schlage vor, den Pufferüberlauf aus demselben Grund wie Punkt 1 (Google Buffer Overflow Lab) zu betrachten.
  4. Erfahren Sie mehr über Systemaufrufe, Threads und Prozesse in C. Entwickeln Sie von dort aus Ihre eigene Shell in C.
  5. Erfahren Sie mehr über die Speicherzuweisung und implementieren Sie malloc und free in C. Erfahren Sie mehr über die Design-Kompromisse, Zuweisungsstrategien, Freigabestrategien usw.
  6. Erfahren Sie mehr über Multithreading und Multiverarbeitung Tauchen Sie von dort aus in Synchronisationsmechanismen (Sperren, Mutexe, Semaphoren) ein und entwickeln Sie einen Thread-Pool in C, den andere Programme verwenden können.

4. Jetzt können Sie mit der Entwicklung eines echten, aber vereinfachten Betriebssystemkerns beginnen. An diesem Punkt können Sie als OS-Designer mit der Entwicklung auf einem echten Betriebssystem beginnen. Google Stanford Pintos und Sie erhalten Zugriff auf einen kleinen Lernkern, der in Stanford entwickelt wurde. Es kommt mit Dokumentation und einem Satz von 4 Projekten. Sie können nach einigen Schulen googeln, die Vorlesungsfolien für Pintos haben. Ich empfehle den Kauf von Betriebssystemkonzepten ( Amazon.com: Betriebssystemkonzepte (9781118063330): Abraham Silberschatz, Peter B.Galvin, Greg Gagne: Bücher ). Die Dokumentation ist ziemlich gut und die Projekte werden gut erklärt. Das Betriebssystem enthält auch Tests, die Sie ausführen können, indem Sie „make check“ ausführen, damit Sie sehen können, ob Sie die Dinge richtig gemacht haben oder nicht.

5. Sie können anfangen, einen Beitrag zu Linux zu leisten. Es wird viel Mühe kosten, den Quellcode und die Linux-Entwurfsentscheidungen zu untersuchen (die viel komplizierter sind als die von Pintos), aber ich denke, an diesem Punkt werden Sie es tun Sie können zumindest anfangen. Mit mehr Übung und Lesen können Sie es lernen.

Ich habe gerade Schritt 4 abgeschlossen. Ich habe die Schritte 1 bis 3 geliebt, aber ehrlich gesagt habe ich Mitte 4 festgestellt, dass ich nicht so an der Entwicklung von Betriebssystemen interessiert bin. Ich habe als Programmierer (aus Sicht eines Programmierers) sehr gerne mit dem Betriebssystem gearbeitet, aber es hat mir nicht so viel Spaß gemacht, tiefer zu graben. Ich habe jedoch viel aus der Kernel-Entwicklung gelernt und es setzt Sie vielen Dingen aus. Wenn Sie einen Kernel schreiben können, schreiben Sie außerdem eine beliebige Software. Ich empfehle dringend, mindestens die ersten drei Schritte auszuführen, da Sie einen guten Einblick in das Betriebssystem erhalten. Sie werden buchstäblich insgesamt ein besserer Softwareentwickler. Sie werden lernen, Hochsprachen mehr zu schätzen und zu lernen, wie Sie das richtige Werkzeug / die richtige Sprache / Technologie für den richtigen Job verwenden.

Ich habe viel Material über Betriebssystementwicklung, Projekte, Tests usw. Wenn Leute interessiert sind, lassen Sie es mich durch Kommentieren wissen und ich kann vielleicht ein Online-eBook / Tutorial / Handbuch mit einer Testumgebung zusammenstellen, die Anfänger in die Betriebssystementwicklung und führt Geben Sie Projekte und Feedback zur Bearbeitung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.