Warum nicht ein Betriebssystem erstellen, das im RAM läuft?

Warum nicht ein Betriebssystem erstellen, das im RAM läuft?

Dies ist möglicherweise die falsche StackExchange-Site, um diese Frage zu stellen, aber ich konnte keine bessere finden. Es scheint keine für Fragen zu Betriebssystemen zu geben.

Ich habe kürzlich über ein Betriebssystem nachgedacht, das ausschließlich im RAM läuft, und ich denke, das hätte viele Vorteile.

  • Es wäre viel einfacher, ein solches Betriebssystem zu erstellen, da Sie sich nicht mit Dateisystemen, Caching usw. befassen müssten.
  • Es würde viel schneller gehen.
  • Programme wären einfacher zu schreiben, da nichts geladen oder gespeichert werden müsste.
  • Anstatt Quellcode zu schreiben und dann zu kompilieren, könnten Programme direkt im Speicher manipuliert werden. REPLs kommen dem nahe, aber warum nicht den ganzen Weg gehen? AußerdemLichtTischist insofern so, als dass es Ihnen ermöglicht, laufende Programme zu ändern, aber ich denke, es kann noch weiter ausgebaut werden. Offensichtlich bräuchten wir eine andere Möglichkeit, Programme im Speicher zu manipulieren/erstellen.
  • Datenbanken würden erheblich vereinfacht, da kein Abfrage-Caching mehr nötig wäre. Möglicherweise wären sie sogar überhaupt nicht mehr nötig.
  • Kein Booten oder Herunterfahren notwendig

Offensichtlich gibt es bei diesem Ansatz Probleme:

  • Der Speicher ist flüchtig: Sie müssten die Hardware ändern, damit der Speicher mithilfe einer Pufferbatterie oder Ähnlichem immer am Leben erhalten bleibt.
  • Es gibt viele Situationen, in denen Daten zu groß sind, um in den RAM zu passen. Z. B. große Websites mit riesigen Datenbanken, Leute mit riesigen Musik-/Videosammlungen usw. Die meisten Leute haben jedoch keine riesigen Videosammlungen, sie streamen Sachen von Netflix. Sehen Sie sich z. B. den Erfolg des ChromeBook an, das nur eine 16-GB-SSD hat.
  • Das Aktualisieren des Betriebssystems im Speicher könnte schwierig sein, aber einige Sprachen tun dies bereits, z. B. Java, Erlang Hot-Swapping

Wie dem auch sei, ich muss irgendetwas übersehen haben, sonst hätten das alle Informatiker, die viel intelligenter sind als ich, schon getan, aber was ist es?

Antwort1

Wenn Sie nur RAM haben, können Sie den Arbeitsspeicher aus zwei Gründen nicht effektiv nutzen:

  1. Wenn eine Seite fehlerhaft ist, aber nicht aufgerufen wird, müssen Sie sie im RAM behalten, auch wenn Sie den RAM lieber für andere Dinge verwenden möchten.

  2. Immer wenn eine Anwendung Speicher verwenden könnte oder nicht, müssen Sie „Nein“ sagen, es sei denn, Sie können alle bereits vorgenommenen Reservierungen berücksichtigen, selbst wenn die meisten dieser Reservierungen wahrscheinlich nie verwendet werden, weil Sie andernfalls die Prozesse zwangsweise beenden müssten.

Sie haben also nur RAM und können es nicht effektiv nutzen. Das wäre ein schreckliches Rezept für ein Allzweck-Betriebssystem.

Aber der grundlegende Grund, warum das eine schlechte Idee ist, ist dieser einfache: Wenn man andere Dinge als RAM hat, zwingt man sich nicht, sie zu verwenden. Es ist einfacherlaubtSie können diese nutzen, wenn es von Vorteil ist. Sie können die Dinge nicht verbessern, indem Sie Optionen wegnehmen.

Antwort2

Die Preise für RAM und Festplattenspeicher unterscheiden sich auch heute noch um eine Größenordnung. Das bedeutet, dass es bei steigendem Speicherbedarf viel teurer wird, alles im RAM zu speichern als die Alternativen. Dies gilt auch für ROM-Speicher (muss nichtflüchtig sein, damit das Ding gebootet werden kann), bei dem es wirtschaftlicher ist, einen kleinen Teil zu verwenden und den Rest der benötigten Programme/Codes auf der Festplatte zu speichern, als alles im ROM zu speichern.

1 TB Festplatte für 50 $ vs. 1 GB RAM für 30 $

120 GB SSD für 100 $ vs. 16 GB RAM für 150 $

Ich habe mir vor Jahrzehnten einen solchen Computer mit reinem RAM gekauft und habe ihn tatsächlich immer noch. Ein Tandy Model 102 mit 24 KB statischem RAM. Er hatte noch eine Art Dateisystem, da man Dokumente und Programme noch organisieren und auswählen musste. Hat mich wegen des Preises nicht überzeugt – er kostete 600 $, als ich ihn gekauft habe.

Bildbeschreibung hier eingeben

Antwort3

Sie können ein Linux-Betriebssystem vollständig aus dem RAM ausführen (das heißt, nachdem es von einem dauerhaften Medium oder von PXE gebootet wurde).

Sie benötigen lediglich ein benutzerdefiniertes Initrd, um ein RAMFS zu erstellen und dieses nach dem Auffüllen als Root zu mounten.

Es gibt jedoch einige praktische Einschränkungen, da RAM im Vergleich zu SSDs, HDDs usw. relativ teuer und klein ist.

Antwort4

Eingebettete Betriebssysteme können je nach Anwendung häufig vollständig im RAM ausgeführt werden.schrieb einervor ein paar Jahren für einen Atmel-Mikrocontroller.

In den 1980er Jahren gab es eine Vielzahl von Systemen, die vollständig im RAM laufen konnten. Technisch brauchte man dafür nichtbeliebigLaufwerk im ursprünglichen IBM PC oder XT, da sie direkt in einen im ROM integrierten BASIC-Interpreter booten konnten. Alle frühen Commodore-Maschinen (wie VIC-20, C64, 4+, C16 usw.) (und viele andere) waren gleich.

In den 1990er Jahren war PalmOS das beliebteste Verbrauchersystem, bei dem das gesamte Betriebssystem im RAM ausgeführt wurde. Ursprünglich hatte es kein Dateisystem (intern wurde alles in einer großen (nicht relationalen) RAM-Datensatzdatenbank gespeichert. Wenn Sie sich zufällig an PRC- und PDB-Dateien erinnern, gab es praktisch nur Dumps dieser RAM-Datensätze für eine bestimmte Anwendungsressource oder einen bestimmten Datenspeicher). Erst mit der Einführung externer Speicheroptionen wurde jeglicher Dateisystemzugriff in das Betriebssystem integriert, und selbst dann lief das System vollständig aus dem RAM, wenn Sie keine SD- oder MMC-Karten in Ihrem Gerät verwendeten. Apps mussten nicht „geladen“ werden, da sie praktisch direkt vor Ort ausgeführt wurden (obwohl sie natürlich Stapel- und Heap-Speicher zuweisen konnten).

Der Linux-Kernel kann so konfiguriert werden, dass er vollständig aus dem RAM heraus ausgeführt wird. Dies ist für allgemeine Computeranwendungen nicht wirklich nützlich (wo das Gerät nicht weiß, was Sie ihm zumuten), aber wenn Sie Ihre spezifischen Speichergrenzen für eine bestimmte Anwendung kennen, können Sie es auf diese Weise konfigurieren und ausführen. Sie haben keinen Swap und müssen zunächst etwas verwenden, um den Kernel mit dem App-Code zu laden, den Sie ausführen möchten, aber es ist möglich (obwohl Sie in einem realen Szenario natürlich zumindest eine Art Firmware haben möchten, um den Kernel und die Anwendungsdaten für den Fall einer Neuinitialisierung des Geräts zu speichern).

Warum sehen wir dies in der Praxis nicht häufig außerhalb bestimmter Bereiche des eingebetteten Raums? Sogar eingebettete Geräte müssen von initialisiert werdenetwas, und heutzutage ist Flash-Speicher ziemlich günstig und zuverlässig, sodass es ziemlich einfach und günstig ist, zumindest einen kleinen Solid-State-Speicher zum Booten hinzuzufügen. Und wenn Sie für Ihr Gerät nicht viel Speicherplatz benötigen, kann es teuer werden, ROM-Chips herzustellen, die Ihr Betriebssystem zum Bootstrapping/Neuinitialisieren enthalten. Natürlich ist es bei PCs für allgemeinere Zwecke, bei denen der Hersteller nicht weiß, welche Art von Belastung Sie dem System zumuten möchten, ein großer Vorteil, über dauerhaften Speicher zu verfügen, der als Backup-Speicher zum Auslagern virtueller Speicherseiten verwendet werden kann. Aber für individuellere Anforderungen, die keinen riesigen Speicher erfordern, gibt es eine Vielzahl von Betriebssystemen, die vollständig nur aus dem RAM laufen können.

verwandte Informationen