Frage Kann die Ruby-Sprache verwendet werden, um Betriebssysteme zu erstellen?


Kann die Sprache Ruby verwendet werden, um ein komplettes neues Betriebssystem für ein mobiles Betriebssystem oder ein Desktop-Betriebssystem zu erstellen, d. H. Kann es in der Systemprogrammierung verwendet werden?


5
2018-06-28 17:26


Ursprung


Antworten:


Nun, es gibt momentan ein paar Betriebssysteme, die höherwertige Sprachen als C verwenden. Grundsätzlich müsste der Ruby-Interpreter selbst in einer Low-Level-Ebene geschrieben werden, und es müsste etwas Boot-Lade-Code vorhanden sein, der einen geladenen voll funktionsfähiger Ruby-Interpreter als eigenständiger Kernel in den Speicher. Sobald der Ruby-Interpreter bootstrapped ist und im Kernel-Modus läuft (oder einer der innere Ringe), würde dich nichts davon abhalten, ein ganzes OS drauf zu bauen.

Leider wäre es wahrscheinlich sehr langsam. Die Speicherbereinigung für jede Betriebssystemfunktion wäre wahrscheinlich ziemlich auffällig. Der Ruby-Interpreter wäre für grundlegende Dinge wie Task-Scheduling und den Netzwerk-Stack verantwortlich, was die Verwendung eines Garbage-Collecting-Frameworks erheblich verlangsamen würde. Um dies zu umgehen, ist es gut, dass die "performance critical" Stücke immer noch in C geschrieben sind.

Also, technisch gesehen ist das möglich. Aber niemand in ihrer rechten Meinung würde es versuchen (Schlange verrückte Person in 3 ... 2 ...)


7
2018-06-28 17:39



Für alle praktisch Zwecke: Nein.

Während die Sprache selbst ist nicht geeignet Für solch eine Aufgabe ist es denkbar (in einem anderen Universum ;-) dass dort ein Ruby steht Laufzeit mit einem solchen Ziel entwickelt.

Das einzige "high level" - ja, die Zitate sind aus einem bestimmten Grund da, ich halte C in diesen Tagen nicht für sehr "high level" - die Sprache, die ich für Systemprogrammierung entwickelt habe BitC. (Das ist ganz anders als Ruby.)

Glückliche Kodierung.


Bearbeiten: Hier ist eine Liste von "Lisp-basierte Betriebssysteme". Obwohl es nicht Ruby ist, macht die dynamisch typisierte / Müll-gesammelte Natur von (vielen) Lisp-Implementierungen einen günstigen Vergleich: Wenn diese verrückten Lispers es tun / versuchen können, dann können auch einige Ruby-Fanatiker ... oder zumindest sie es tun wünsch es dir ;-) Es gibt sogar einen Link zu einem OCaml OS auf der Liste ...


5
2018-06-28 17:38



Nein, nicht direkt

Genauso wie Rails auf Ruby aufgebaut ist, baut Ruby auf den Diensten auf, die die unteren Schichten .. das echte OS .. bieten.

Ich nehme an, man könnte Ruby so lange unterteilen, bis es funktionell C ähnelt und dann daraus ein OS baut, aber das wäre es nicht wert. Sicher, es wäre nett if .. end aber C-Syntax ist perfekt verwendbar und wir haben bereits C-Sprachen-Systeme. Außerdem behandeln Betriebssysteme Zeichendaten nicht sehr, so dass alle Ruby-Funktionen, die sie manipulieren, in einem Kernel nicht so wertvoll sind.

Wenn wir heute von Grund auf neu starten würden, könnten wir tatsächlich versuchen (wie es verschiedene experimentelle Projekte haben), Garbage Collection-Speicherzuweisung in einem Kernel zu verwenden, aber wir haben bereits OS-Kernel.

Die Leute investieren eher in die höheren Schichten, anstatt die bereits geleistete Arbeit zu wiederholen. Schließlich, mit all der höheren Software, die heutzutage läuft, müsste ein neuer Kernel eine kompatible Schnittstelle präsentieren und die Frage würde dann gestellt werden "Warum nicht einfach die netten Körner laufen lassen, die wir schon haben?".

Jetzt könnte die Anwendungs-API für ein mobiles Betriebssystem tatsächlich für Ruby ausgeführt werden. Ebenso wie Android-Apps in Java geschrieben sind, können RubyPhone-Apps in Ruby geschrieben werden. Aber Ruby ist möglicherweise nicht der beste Ausgangspunkt für eine umfangreiche Anwendungsplattform. Die bisherige Entwicklung war auf serverseitige Probleme ausgerichtet. Es gibt verschiedene grafische Schnittstellen Edelsteine, aber ich denke nicht, dass sie weit verbreitet sind.


3
2018-06-28 17:44



Während das Erstellen eines vollständigen Betriebssystems in Ruby scheint wie ein Multi-Milliarden-Projekt (denke an alle Fahrer), a Linux-Kernel-Modul, das einfache Ruby-Skripte ausführt Sinn für mich - auch nur für das Prototyping neue Linux-Treiber.


1
2017-07-27 12:59



im Grunde ja, aber mit einem großen Disclaimer. Das ist im Grunde Chris Antwort, aber eine andere Drehung darauf. Da es für die Kernel-Performance ziemlich schwierig wäre, Ruby zu verwenden, würden Sie wahrscheinlich einen Linux-Kernel erstellen und einfach nichts vom Rest des Betriebssystems laden. Das ist im Grunde das, was Android tut: Der Kernel ist ein Fork von Linux (und wird in der Nähe von Linux gepflegt), die Konsole ist ein Webkit-Bildschirm und der Interpreter ist Java mit einigen Android-spezifischen Bibliotheken. IE, Android ist Java als Betriebssystem maskiert, .. Sie könnten etwa die gleiche Sache mit Ruby anstelle von Java und nur ein kleiner Hit auf die Leistung von Java


0
2017-10-27 19:11