Ich möchte Betriebssystemdesign lernen. Ich habe mich gefragt, ob ich dabei Minix oder GNU / Linux angehen sollte? Ich mag Bücher, also würde ich hauptsächlich einem Buch folgen, obwohl auch Videoressourcen (vermutlich Videoaufzeichnungen) willkommen wären.
Ich habe formal C und C # studiert und kann kleine bis mittlere Programme darin programmieren. Ich habe auch ein sehr grundlegendes Verständnis von Datenstrukturen.
Wenn ich die Minix-Route nehme, sollte ich Version 2 (einfacher?) oder Version 3 angehen?
Ich würde für die Minix-Route gehen, nur aufgrund meiner persönlichen Erfahrung damit. Minix ist sehr einfach und aus pädagogischer Sicht geschrieben. Linux-Kernel dagegen gibt es schon so lange und ist daher stark optimiert. Ich denke nicht, dass es ein guter Anfang ist.
Ich würde mir nicht zu viele Gedanken darüber machen, welche Minix-Version. Das Konzept bleibt gleich. Mit den neueren Versionen können Sie X darauf ausführen, was hilfreich sein kann, aber gleichzeitig die Komplexität erhöht. Geh einfach mit der Version, in der du ein gutes Buch findest.
Betriebssysteme: Design und Implementierung deckt Minix ab, also könnte dies a gutes Argument pro Minix.
Ohne dieses Thema selbst zu berühren, ist Linux ziemlich groß (letztes Mal habe ich 10 Millionen Zeilen überprüft, obwohl Sie natürlich nicht alles untersuchen müssten), und Minix verwendet eine Mikrokernel-Architektur mit separaten Modulen, so könnte es sein einfacher zu fassen sein.
Ich würde für Minix gehen.
(Auf der anderen Seite hat O'Reilly eine Reihe von Büchern über Linux; aber ich denke, ich würde immer noch mit Minix gehen und dieses dicke Buch als Referenz haben)
Bei einem Praktikum, das ich gemacht habe, musste ich den Festplattentreiber in Minix ändern, so dass er Anfragen mit dem Aufzugsalgorithmus statt mit dem "first-come-first-served" bedient. Ich sollte es in Minix 2 machen, aber ich wollte es in Minix 3 machen, weil ich nie alte Technologien benutze.
In den zwei Monaten, die ich daran gearbeitet habe, war das frustrierendste, dass Minix 3 etwa 20 Minuten benötigte, um VMWare auf einem Laptop mit einem I5-Prozessor und 4 GB RAM unter Windows 7 zu kompilieren. Nach zwei Monaten Ich gab Minix 3 auf und wechselte zu Minix 2, das in etwa 20 s kompiliert wurde.
Nun, ich sage nicht, dass es etwas sehr falsches an der Erstellung des Systems gegeben haben könnte, aber ich habe wirklich versucht, es ohne Erfolg zu beschleunigen.
Lassen Sie mich einfach sagen, dass ich zu der Zeit gerade meinen Master-Abschluss in Informatik erworben hatte und 5 Jahre intensive Erfahrung mit der Programmierung in C hatte (nur damit Sie nicht glauben, dass ich ein Autodidakt bin) das hat sich gerade entschieden, durch Neugestaltung eines Betriebssystems in die Programmierung zu springen: D)
EDIT: Am Ende empfehle ich Ihnen, Minix 3 zu kompilieren, um zu sehen, wie es für Sie läuft. Wenn Sie mehr Glück haben, gehen Sie definitiv mit diesem, weil es modernere OS-Konzepte hat, andererseits, wenn Sie ein kompletter Anfänger sind, werden Sie wahrscheinlich Tonnen von Minix 2 lernen. Ich habe.
Wie andere Poster gesagt haben, kann es schwierig sein, mit Linux zu beginnen, weil es jetzt so groß und komplex ist, dass die Eintrittsbarriere in den Himmel geschossen ist. Aber wenn Sie diese Route wählen, empfehle ich, mit einem kleinen Subsystem zu beginnen und sich darauf zu konzentrieren.
Es gibt noch andere Möglichkeiten, FreeBSD oder sogar GNU / Hurd (oder sogar deinen eigenen Spielzeugkern) . Und es kommt darauf an, was du wirklich lernen willst.
Wenn Sie Linux kennen und wissen, wie man Treiber schreibt, ist es sinnvoll, ein eigenes Linux-Treiber-Kernel-Modul zu schreiben.
Es hängt auch von Ihrer genauen Definition des Betriebssystems ab. Dies entspricht nicht unbedingt einem OS-Kernel
Nicht alle Betriebssysteme sind "Unix-ähnlich", z. coyotos , Känguru , ... Siehe auch tunes.org
J.Pitrats Buch Künstliche Wesen (das Gewissen einer bewussten Maschine ) haben interessante Einsichten darüber, was ein OS sein könnte.
Tags und Links c c++ linux operating-system minix