Frage von LuckyChicken91, 84

Betriebssystem ohne Assembler?

Betriebssysteme werden ja meist so mit C und mit Assembler programmiert. Allerdings könnte ich in Ruby (Programmiersprache) eigentlich ein Betriebssystem machen (Mir geht es nicht darum wie ich das dann da machen könnte). Das könnte ich dann in eine .exe machen und dann das Programm im Vollbildmodus immer laufen lassen als wäre das eigentliche Betriebssystem gar nicht da... Aber so was ist natürlich schwachsinnig. Doch da frag ich mich halt trotzdem ob es da nicht doch einen Weg gäbe. Ob es für sowas irgendwie einen Converter gäbe der diesen .exe Bytecode irgendwie noch mit einem Bootloader und alles zusammen fuchtelt dass man dass auf einer Virtuellen Maschine laufen lassen könnte. Denn so wäre ein OS überhaupt nicht schwer. Wie kann man ein Programm als OS laufen lassen?

Antwort
von funcky49, 42

Dein Bild zur Frage zeigt ein Programm, dass Hello World ausgibt.

Ein Betriebssystem gibt nicht "Hello World" oder irgend erwas anderes in der Richtung aus, sondern ermöglicht dem Benutzer, Software auf dem Rechner auszuführen unter Einbeziehung der vorhandenen Hardware.

Ein Programm (.exe) ist kein Betriebssystem - Deine Frage ist insgesamt nicht real.

Hier kannst Du Dich mal schematisch über das Programmieren eines Betriebssystems informieren:

http://de.wikihow.com/Ein-eigenes-Betriebssystem-entwickeln

Kommentar von LuckyChicken91 ,

Du hast die Frage anscheinend auch nicht verstanden.

1. Das Bild zeigt dass eine .rb Datei zu einer .exe Datei komprimiert wird und danach auf einer Virtuellen Maschine läuft. (Aber man kann keine .exe Dateien auf Virtuellen Maschinen laufen lassen weshalb ich ja gefragt habe wie man ein Programm als OS laufen lassen kann).

2. Ich weiß auch das "Hello World" kein benutzbares Betriebssystem ist. Das war nur ein Beispiel was dann passieren könnte wenn das ganze gestartet würde.

3. Wo in dieser Frage sagte ich dass eine .exe Datei ein Betriebssystem ist?

Kommentar von funcky49 ,

Lies´ doch einfach mal die Infos in meinem Link - dann verstehst Du vielleicht, warum man Deine Frage nicht wirklich verstehen kann...

Antwort
von ceevee, 23

Wenn keiner deine Frage versteht dann kann es an zwei Dingen liegen:

1. Auf GF sind mal wieder nur Idioten unterwegs oder

2. Die Frage ist unverständlich gestellt.

Was meinste, was in deinem Fall vorliegt?

Ich glaube ebenfalls, dass du nicht weißt, was ein Betriebssystem ist. Bei einem Betriebssystem will man keine Interpreter und keine Ruby-VM (mit virtueller Maschine meinst du in dem Fall doch die YARV und nicht VMWare/Virtualbox oder sowas?) haben, weil diese die Performance runterreißen. Den Interpreter würde man nicht laden können, weil diesem das Betriebssystem fehlt. Dein "Betriebssystem" würde also schon deswegen nicht laufen, weil das Programm an der Stelle nicht weiß, was "print" oder andere Ruby-Befehle sind.

Ein Betriebssystem ist eine Kommunikationsschnittstelle zwischen Hardware und Anwender, es gibt also in dem Sinne keinen "print"-Befehl, weil du zur Ausgabe in dem Falle den entsprechenden Grafiktreiber laden und ansteuern musst. Und das geht in Ruby nicht bzw. nicht so ohne weiteres.

Kommentar von LuckyChicken91 ,

Ich denke es ist 2. Ich war noch nie gut im Fragen formulieren. Aber es nervt auch ganz schön wenn man keine Fragen löschen kann wenn von dort doch sowieso nur noch Müll kommt.

Antwort
von Lilalaunebaer69, 61

1. Werden "höhere" Programmiersprachen in Maschinensprache gewandelt (compiliert)
2. Was meinst Du wieso Deine .exe läuft ? Ohne Betriebssystem würde die nicht laufen

Kommentar von LuckyChicken91 ,

Hast du überhaupt die Frage verstanden?

Kommentar von LuckyChicken91 ,

Man kann keine .exe Dateien in einen Maschinen Emulator stecken. Oder irre ich mich?

Kommentar von Lilalaunebaer69 ,

Ich hatte im Hauptstudium unter anderem Verteilte Systeme und Betriebssysteme. Ich habe auch die Frage verstanden.
Du hast nicht verstanden, was ein Betriebssystem ist

Kommentar von LuckyChicken91 ,

Warum sollte ich nicht verstanden haben was ein Betriebssystem ist?

Kommentar von NeoExacun ,

Weil du schienbar denkst, ein Hallo-Welt-Programm wäre ein Betriebssystem.

Kommentar von LuckyChicken91 ,

Denke ich nicht.

Antwort
von weckmannu, 3

Ruby ist eine Programmiersprache, die als Voraussetzung, damit sie läuft, bereits ein Betriebssystem benötigt. Nachlesen kann man das bei "Ruby Download" - dort werden als Beispiel Linux, OSX oder Windows als zulässige Plattform genannt.

Wenn man etwas mit Ruby programmiert, ist das Ergebnis eine exe- Datei, die zum Laufen das Betriebssystem braucht, das Ruby verwendet hat. Das ist also nicht ein autonomes Betriebssystem. 

Fazit: zum Programmieren eines Betriebssystems braucht man eine Sprache, die ohne Unterlage eines OS auskommt, bzw. in der Instruktionen enthalten sind, die ohne Betriebssystem-Unterstützung auskommen müssen. Deshalb Assembler oder C.

Antwort
von procoder42, 9

So, ich versuch mal ne vernünftige Antwort abzugeben :

Das könnte ich dann in eine .exe machen und dann das Programm im Vollbildmodus immer laufen lassen als wäre das eigentliche Betriebssystem gar nicht da

Ja, das wär dann nämlich auch kein OS sondern ein Programm im Vollbildmodus ;) (Sorry, den Kommentar konnte ich mir nicht verkneifen).

Ob es für sowas irgendwie einen Converter gäbe der diesen .exe Bytecode irgendwie noch mit einem Bootloader und alles zusammen fuchtelt dass man dass auf einer Virtuellen Maschine laufen lassen könnte

Naja, der Versuch basiert dann aber auf der falschen Annahme, dass Ruby die Anforderungen an diese Aufgabe erfüllt.

Aufgabe des Betriebssystems ist es ja nicht (nur) ein hübsches Fenster anzuzeigen, sondern da steckt auf tiefer Ebene ziemlich viel Kommunikation mit der Hardware dahinter (Den Punkt hat Ceevee ja schon angesprochen).

Bei einem OS fängt man auf Ground Zero an. All die tollen Sachen wie Multithreading oder sogar eine simple Text Ausgabe auf dem Monitor gibt es nicht - im Gegenteil : Deine Aufgabe als Entwickler ist es genau sowas zu implementieren.

Und wenn du eine Speicherverwaltung implementieren willst, aber dein Programm in einer VM läuft und keinen wirklichen Zugriff auf die Hardware ermöglicht, ist das denkbar ungünstig.

Denn so wäre ein OS überhaupt nicht schwer.

Ich glaube, jeder der im Informatik Studium eine Betriebssystem Vorlesung hatte würde dir für die Aussage den Kopf abreißen ;).

Wie kann man ein Programm als OS laufen lassen?

Ah, jetzt also doch die Frage nach dem "wie".

Ich weis leider nicht, wie es um Alternativ Implementierungen von Ruby steht, aber es gibt ein ähnliches Projekt für ein Betriebssystem in Python :

Da hat man das "Fundament" in Assemblersprache geschrieben und baut dann alles weitere mit Python auf (den Python Interpreter hat man den entsprechend portiert).

Keine passende Antwort gefunden?

Fragen Sie die Community