Die Entwicklung eines Betriebssystems für die x86-Architektur
Ich bin Planung zu entwickeln, die ein Betriebssystem für die x86-Architektur.
- Welche Möglichkeiten von Programmiersprachen habe ich?
- Welche Arten von Compilern gibt es, vorzugsweise in einer Windows-Umgebung?
- Gibt es irgendwelche gute Quellen, die mir helfen, erfahren Sie mehr über die Entwicklung von Betriebssystemen?
- Ist es besser zu testen, mein Betriebssystem auf einer Virtuellen Maschine oder auf Physischer hardware?
Irgendwelche Vorschläge?
- Was wäre die beste Sprache zu verwenden? in der X86-Architektur, x86-Assembler und C ist am besten gewählt!
- Die Abstimmung zu schließen, da zu breit. Siehe auch: stackoverflow.com/questions/254149/...
InformationsquelleAutor Jeff | 2008-09-24
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für meine Letzte Jahr Projekt in der collage entwickelte ich ein kleines x86-Betriebssystem mit virtueller Speicher-manager, eine virtuelle Datei system und vollständig preemptiv multitasking. Ich machte es zu open source und der code ist stark kommentiert, schauen Sie sich die source-forge-Seite:
https://github.com/stephenfewer/NoNameOS
Aus meiner Erfahrung kann ich Folgendes empfehlen:
Du wird müssen, x86 Assembler, der für verschiedene Teile, das in unvermeidbar, kann aber auf ein minimum reduziert werden. Ziemlich schnell bekommen Sie running-C-code, ist eine bewährte Wahl für die OS-Entwicklung. Sobald Sie irgendeine Art von Speicher-MANAGERS können Sie in C++, wenn du magst (Sie brauchen eine Art von Speicher-manager für Dinge wie new und delete).
Egal, welche Sprache Sie wählen, werden Sie noch brauchen, Montage & C, um ein system von Booten wo das BIOS lässt Sie in jeder verwertbaren form.
Letztlich die primäre Sprache, die Sie wählen, hängt von der Art der Betriebssystem, das Sie wollen, zu entwickeln.
Meine Entwicklungsumgebung wurde die Windows-Portierung der GNU-Entwicklungstools DJGPP zusammen mit der NASM assembler. Für meine IDE ich verwendet IBM ' s Eclipse mit dem CDT - plugin, das stellt eine C/C++ - Entwicklungsumgebung für Eclipse.
Zum testen empfehle ich BOCHS, eine open-source-x86-PC-emulator. Es lässt Sie Booten Ihr Betriebssystem schnell, die ist toll für die Prüfung und kann in eclipse integriert, so können Sie erstellen und führen Sie Ihr Betriebssystem auf Knopfdruck. Ich würde auch empfehlen mit VMWare und einer physischen PC gelegentlich, wie Sie abholen können auf einige subtile Fehler, die Art und Weise.
P. S. OS Entwicklung ist wirklich lustig aber es ist sehr intensiv, mir hat das beste Teil von 12 Monaten. Mein Rat ist, gut zu planen und Ihre design ist der Schlüssel! genießen Sie 🙂
Sprache und compiler ganz davon abhängen, was Sie versuchen zu erreichen. Ich würde vorschlagen, Sie jedoch, dass Sie sein könnte, nähert sich dem problem von zu niedrigen Niveau.
Gibt es Materialien gibt, auf Betriebssystem-Grundlagen. MIT hat OpenCourseware auf das Thema. Lesen Andrew Tannenbaum's Betriebssysteme-Serie, und die Dinge sehen wie Minix.
Bekommen eine Ahnung, was es da draußen gibt. Starten Sie basteln. Ausleihen Ideen, und sehen, wo Sie gehen. Sie können das Rad neu erfinden, wenn Sie wirklich wollen, aber Sie werden mehr lernen, aufbauend auf die arbeiten von anderen.
Ist es eigentlich egal, welche Sprache Sie wählen. Wenn die Sprache ist Turing-vollständig, dann schreiben Sie ein OS in es.
Jedoch die Ausdruckskraft der Sprache wird, machen bestimmte Arten von designs, die sehr leicht oder sehr schwer zu implementieren. Zum Beispiel, die "Lebendigkeit" und die Dynamik der alten Smalltalk OSs, hängt von der Tatsache, dass Sie umgesetzt werden in Smalltalk. Sie könnte tun, dass in C auch, aber es wäre wahrscheinlich so hart, dass Sie gar nicht darüber nachdenken. JavaScript oder Ruby OTOH wäre wahrscheinlich eine gute Passform.
Microsoft Research Singularität ist ein weiteres Beispiel. Es konnte einfach nicht umgesetzt werden, alles andere als Singen#, Spec# und C# (oder ähnliche Sprachen), weil so viel von der Architektur ist abhängig von der statischen Typsicherheit und statische überprüfbarkeit dieser Sprachen.
Einer Sache, zum im Verstand zu halten: der design-Platz für OSs implementiert in C ist so ziemlich komplett erkundet. Es gibt buchstäblich Tausende von Ihnen. In den anderen Sprachen, Sie könnten jedoch tatsächlich entdecken Sie etwas, das niemand entdeckt hat, vor! Es gibt nur etwa ein Dutzend oder so OSs in Java geschrieben, etwa ein halbes Dutzend in C#, etwas in der Größenordnung von zwei OSs in Haskell, nur eine in Python und keine in Ruby oder JavaScript.
Schreiben versuchen ein OS in Erlang oder Io, und sehen, wie beeinflusst das Ihr denken über Betriebssysteme!
Gibt es einen OS-Kurs angeboten, an der Universität von Maryland, nutzt GeekOS. Dies ist eine kleine, ausführlich kommentierte OS konzipiert für pädagogische Zwecke, die ausgeführt werden können, mit dem Bochs oder QEMU-emulators.
Für ein Beispiel wie es verwendet wird, in einem Kurs, Lesen Sie in einem früheren Angebot des Kurses an die Klasse Webseite. Dort finden Sie Aufgaben, bei denen Sie Hinzugefügt haben, um die verschiedenen Funktionen zu GeekOS.
Es ist ein guter Weg, um sich mit einem kleinen und einfachen OS, das läuft auf der x86-Architektur.
Vielleicht möchten Sie sich bis XINU. es ist ein kleiner OS für x86, die nicht wirklich verwendet werden, für alles andere als seziert werden durch die Studierenden.
Verwendung von ANSI C, und beginnen mit einem emulator.
Wenn Sie Hafen über, um eine echte Maschine, wird es einige assembler-code. Kontextwechsel und interrupt-handling (zum Beispiel), ist einfacher zu schreiben in assembler.
Andy Tannenbaum geschrieben hat, ein gutes Buch über OS. Viele andere gute gibt.
Glück! Es ist nichts ganz wie mit SCHRIFTLICHEN Ihr eigenes OS, aber klein.
Schauen Sie sich auch die OSDev.org, die alle Informationen, die Sie benötigen, um loszulegen.
Hab ich getan, einmal für ein 386SX, die auf einem PCI-board. Eine gute Quelle, wie man ein X86 cpu im geschützten Modus ist der source-code von linux. Es ist nur ein paar assembly-Anweisungen. Danach können Sie gcc zum kompilieren von C-code. Das Ergebnis ist objectcode im ELF-format. Ich schrieb meine eigenen linker, um ein Programm aus der objectcode. Und ja, es funktionierte! Viel Glück.
Werden Sie sicher die Antworten auf meine Frage:
Wie die ersten Schritte in der Entwicklung von Betriebssystemen
Wenn Sie eine vollständige Betriebssystem, müssen Sie eine Reihe von Sprachen. Ich würde erwarten, Montage -, C-und C++ zumindest.
Ich würde eine Virtuelle Maschine für die meisten Tests.
Ohne Zweifel verwende ich Ada. Es ist der beste general-purpose-Systeme-Programmierung Sprache, die ich gestoßen, bar none. Ein Beispiel, Ada ist viel besser für die Angabe von bit-layout von Objekten in einem Datensatz als C. Ada unterstützt auch die überlagerung von Datensätzen auf bestimmte Speicherbereiche. C setzt Voraus, dass Sie mit Zeigern auf erzielen den gleichen Effekt. Das funktioniert, ist aber fehleranfällig. Ada hat auch Sprachunterstützung für interrupts.
Anderes: Sicherheit. Ada standardmäßig gebunden überprüfen, array assignments, sondern ermöglicht es Ihnen, um Sie auszuschalten, wenn Sie es brauchen. C "Standard", um nicht gebundenen überprüfung auf arrays,so haben Sie es selbst zu tun manuell, wenn Sie es wollen. Die Zeit hat gezeigt, dass dies nicht den richtigen Standard. Sie vergessen, wo Sie gebraucht wird. Buffer-overflow-exploits sind die häufigste Sicherheitslücke genutzt, die von Crackern. Sie haben die ganze websites explainng, wie zu finden und zu benutzen.
Als für das lernen über das tun dieses, die zwei Bücher, die mir bekannt sind XINU (Unix rückwärts, nichts zu tun mit Scientology), und Projekt Oberon. Der erste war in meinen Betriebssystemen graduate-Kurs, und die zweite wurde geschrieben von Nikalus Wirth, der Schöpfer von Pascal.
C wahrscheinlich...alle wichtigen OS-es wurde geschrieben in C/C++ oder Objective-C(Apple)
Wenn Sie möchten, schreiben Sie eine OS dann brauchen Sie ein paar Leute. Ein OS kann nicht schreiben einen einzigen Menschen. Ich denke, es ist besser zu arbeiten, um auf vorhandene OS-Projekte
Dies ist nur eine kurze Liste der von OS-Projekten. Wie Sie sehen können gibt es ein Projekt, das für alle möglichen Sprache.