Benötigt jedes Betriebssystem RAM?


76

Gibt es ein Betriebssystem, das ohne RAM verwendet werden kann, insbesondere die Art, mit der ich ein bootfähiges Pendrive erstellen und im Computer verwenden kann? Dies ist umständlich, da beim Booten im Wesentlichen das Betriebssystem im RAM geladen wird.

Hinweis: Ursprünglich wollte ich wissen, ob ein RAM-freies Betriebssystem vorhanden ist, um zu überprüfen, ob der RAM-Speicher meines Laptops (der zwar nicht bootet, aber einen leeren Bildschirm anzeigt) fehlerhaft ist.


23
Ich bin mir nicht sicher, ob eine CPU ohne RAM überhaupt funktionieren kann, das könnte eine gute Frage für Computer Science.SE sein . Was ich mit Sicherheit weiß, ist, dass Sie nicht weiterkommen, wenn Sie es nicht einmal schaffen, das BIOS zu überwinden.

12
@ AndréDaniel Eine CPU hat einen Cache, der aus CS-Sicht auch ein Arbeitsspeicher ist. Also in der Theorie benötigen Sie keine zusätzliche RAM - Module. Aber in der Praxis Ich bezweifle , dass die x86 - Architektur dies erlaubt.
Philipp

30
Alle diese Argumente zur Verwendung des Prozessor-Cache sind zweifelhaft gültig, da der Cache zumindest auf x86 kein Speicher ist, auf den Sie direkt zugreifen können. Ihr Code bezieht sich immer auf RAM, aber der Prozessor verwaltet seine Caches automatisch, damit er die Daten im RAM für die am häufigsten aufgerufenen Daten nicht abrufen muss. Aber auch hier gibt es keine Assembler-Anweisung, die besagt, dass "dies im Cache speichern", "dies im Cache schreiben", es gibt Register und es gibt Hauptspeicher (mit all seinen seltsamen Zugriffsmodi), Punkt.
Matteo Italia

3
(OTOH, theoretisch könnten Sie andere RAM (z. B. Video-RAM) oder Peripheriegeräte im physikalischen Adressraum zugeordnet nutzen)
Matteo Italia

13
Mit modernen x86-CPUs können Sie den On-Die-Cache in den "Cache as RAM" -Modus versetzen. Ich denke, einige MSRs müssen dafür eingerichtet werden. Dies gilt möglicherweise auch für einige ARM-CPUs. Der Cache auf modernen CPUs ist größer als der maximale Arbeitsspeicher Ihrer ersten PCs. Auf einem PC startet die Firmware jedoch immer noch nicht, wenn kein RAM vorhanden ist. Sie benötigen eine benutzerdefinierte Firmware oder etwas anderes als eine PC-Plattform.
LawrenceC

Antworten:


96

Benötigt jedes Betriebssystem RAM?
Bei IBM PC-kompatibler Hardware besteht ein obligatorischer Schritt des BIOS-POST-Prozesses darin, zu überprüfen, ob RAM zum Laden des BIOS vorhanden ist. Optional funktioniert die POST-Prozessüberprüfung Ihres RAM korrekt. Nach dem POST-Vorgang lädt das BIOS den Bootloader in den RAM und gibt dem Bootloader die Kontrolle. Die Antwort auf Ihre Frage ("Benötigt jedes Betriebssystem RAM?") Lautet also: Ja, jede IBM PC-kompatible Hardware benötigt mindestens ein funktionierendes RAM, um zu starten. Dies gilt für alle Betriebssysteme, die auf dieser Hardware ausgeführt werden.

Beachten Sie, dass sich in der ursprünglichen Frage des OP ein Verweis auf einen "Laptop" befand, den ich folgendermaßen interpretierte: IBM PC-kompatible Hardware. Für den Rest dieser Antwort gehe ich von IBM PC-kompatibler Hardware aus.

Kann ein Betriebssystem mit fehlerhaftem RAM booten?
Wenn Ihr RAM fehlerhaft ist (und nicht vollständig fehlt / defekt ist) oder Sie Ihren RAM (teilweise) ersetzen können, können Sie möglicherweise mit den BadRAM of BadMEM- Kernel-Patches booten . Sie müssen den Kernel neu kompilieren (klingt einfacher als beim ersten Mal) und Sie können den Kernel neu starten und ihm mitteilen, wo sich Ihr fehlerhafter Speicher befindet. Eine schöne Erklärung für die Verwendung von Memtest86 / Memtest86 + , BadRAM / BadMEM gefunden werden kann hier .

Kann ein Betriebssystem ohne RAM starten und den Cache der CPU als RAM verwenden?
Soweit ich weiß, gibt es in den Kommentaren keine Möglichkeit, den Cache Ihrer CPU als RAM zu verwenden, ohne dass RAM auf Ihrem System vorhanden ist (wie von @philipp und anderen vorgeschlagen). Wenn ja, wäre es schön, es hier hinzuzufügen. Das einzige Papier , das ich zu diesem Thema finden konnte , ist dieses Papier , die besagt: „Prozessor-Cache als RAM , bis die RAM initialisiert wird“. Ich bin nicht sicher, ob (und wie) es ohne RAM funktionieren wird . Soweit ich weiß , gibt es keine Arbeitscode, der ein Betriebssystem auf einem IBM - kompatiblen PC bootet. Verweise auf Proof-of-Concepts, Arbeitscode oder Ähnliches sind in den Kommentaren willkommen. Ich werde sie dieser Antwort hinzufügen.

Kann ich auf das BIOS zugreifen?
Die Frage des OP ist etwas vage, ob der Laptop den BIOS-POST bestehen kann. Wie @Tonny hervorhebt, wird Ihnen kein Betriebssystem dabei helfen, " zum BIOS zu gelangen ". Sie rufen das BIOS mit der Taste F1oder F2oder F10oder DELoder auf ESC, je nach BIOS-Marke.

Wie man Daten vom Laptop ohne RAM wieder herstellt?
Was das Ziel Ihrer Frage betrifft: Warum benötigen Sie Zugriff auf Ihren Laptop? Wahrscheinlich, weil sich noch Daten auf der Festplatte befinden, die Sie wiederherstellen möchten? In diesem Fall ist es viel einfacher, die Festplatte herauszuziehen (siehe Handbuch) und an ein externes Speichergerät oder direkt an einen PC anzuschließen. Hier ist eine nette Anleitung, um genau das zu tun.


3
In der Praxis ist möglich , eine Maschine mit etwas defekt RAM (sagen wir, es gibt nur eine Bank , die nicht richtig funktioniert) zu laufen. Wenn das BIOS dies nicht bemerkt (oder wenn dies bemerkt, kann es zu der üblichen F1-Überschreibung kommen), können Sie dennoch ein Betriebssystem wie Linux mit dem BadMEM / BadRAM-Patch ausführen, das den Kernel anweist, die angegebenen Speicherblöcke zu vermeiden.
Matteo Italia

5
@VusP: Um nur Ihren RAM zu überprüfen, verwenden Sie eine Live-CD / -USB mit Memtest86 / Memtest86 +, überspringen Sie den RAM-Test in Ihrem BIOS und führen Sie den Memtest von der Live-CD / -USB aus.
1.

4
Wer sagt, dass das Testen des RAM beim Booten " obligatorisch " ist? Es war üblich, wenn Maschinen ein paar MB oder weniger hatten, wurde jedoch bald optional, da die Größe zunahm und die Zeit unerschwinglich wurde.
Andrew Medico

3
@agtoever: Huh? Der Cache-as-RAM-Trick funktioniert nicht plötzlich, wenn der RAM initialisiert wird. Es ist nur so, dass es zu diesem Zeitpunkt dumm ist, den Arbeitsspeicher zu meiden, und niemand versucht es jemals. Der Trick hat jedoch nichts damit zu tun, dass der Arbeitsspeicher nicht initialisiert wird. das ist nur, wenn es tatsächlich nützlich ist.
Mehrdad

3
@ Hi-Angel, es kann nicht direkt von der Festplatte ausgeführt werden, da die CPU nicht direkt auf den Inhalt der Festplatte zugreifen kann. Es muss Befehle in den Plattencontroller stecken und darauf warten, dass er Datenblöcke von der Platte an eine Stelle im RAM überträgt. Nur von dort kann die CPU Anweisungen direkt ausführen.
Psusi

33

Theoretisch ist dies möglich , aber es ist sehr langsam, da die Festplatte für temporären Speicher verwendet werden muss, der nicht in die CPU-Caches passt. (CPUs haben ein paar Megabyte Cache, weil ihnen selbst RAM zu langsam ist . Denken Sie darüber nach.) Sie benötigen also ein ziemlich kleines Betriebssystem.

(Nun, eingebettete Systeme auf dem Chip können Code entweder aus dem RAM oder dem internen Flash-Speicher ausführen - das PC-BIOS könnte theoretisch dasselbe tun, aber es kann nicht das gesamte Betriebssystem ausführen.)

Eine andere Sache ist jedoch, dass das BIOS vor und außerhalb aller installierten Betriebssysteme ausgeführt wird. Mit dem BIOS können Sie von einem Pendrive oder was auch immer booten. Wenn Sie das BIOS nicht erreichen können , hilft Ihnen kein anderes Betriebssystem der Welt.


6
Möglicherweise kann eine CPU ihren eigenen Cache anstelle des Arbeitsspeichers verwenden. Dies kann eine nützliche Funktion für die Teile des BIOS-Codes sein, die vor dem Speichertest ausgeführt werden. Es kann jedoch schwierig sein, andere Hardware ohne RAM zum Laufen zu bringen. Sie könnten DMA nicht ausführen, sodass die Datenträger-E / A anders ausgeführt werden müssten. Ich denke, das BIOS würde nicht einmal versuchen, ein Betriebssystem zu laden, wenn kein verwendbarer RAM gefunden würde. Die Größe des Cache ist jedoch weniger problematisch. Ein paar MB sind nach modernen Maßstäben vielleicht nicht viel, aber ein Betriebssystem aus der Zeit, als ein MB RAM viel war, sollte immer noch auf modernen Computern funktionieren.
Kasperd

2
@kasperd Der DEC Alpha wurde entwickelt, um seine allererste Stufe der Einschaltinitialisierung über den Cache auszuführen, der von einem "seriellen ROM" vorgeladen wurde. Dies lag daran, dass die CPU erst nach der Initialisierung der Seitentabellen auf RAM, konventionelles ROM oder eine andere speicherabgebildete Ressource (die alle E / A-Geräte (IIRC) umfasste) zugreifen konnte.
zwol

@grawity was ist mit SSDs?
TechLife

@ TechLife: Immer noch um einige Größenordnungen langsamer als RAM. Allerdings denke ich, wenn Sie es als RAM verwenden würden ... würde es nur RAM heißen , also immer noch nein.
Grawity

15

Mit einigem Aufwand können Sie ein System entwerfen, das keinen RAM enthält. Laden Sie Ihre Software aus dem ROM (oder Speicher) und erledigen Sie alles in Registern oder im Cache. Ein solches System hätte eine außergewöhnlich enge Nutzung und wäre angesichts der heutigen RAM-Preise ein bisschen sinnlos. Ein handelsüblicher Laptop funktioniert ohne integrierten Speicher nicht.

Ihre eigentliche Frage lautet eher "Wie erhalte ich Informationen von einem Computer, der nicht gestartet werden kann", und das ist ganz einfach. Zerlegen Sie es, entfernen Sie das Laufwerk und schließen Sie es an ein externes Laufwerkgehäuse an.

Beachten Sie jedoch, dass jeder Computer, der alt genug ist, um nicht nur einen Arbeitsspeicher von 20 US-Dollar zu erhalten, über ein ATA-Laufwerk (normales ATA-Laufwerk, kein SATA-Laufwerk) verfügt. Diese Schnittstelle ist heute fast ausgestorben, sodass Sie auch ein Laufwerksgehäuse mit einer ATA-Karte sowie einen Adapter in Laptopgröße finden müssen. Ich habe eine, die ich im Jahr 2000 gekauft habe, und ich habe ein paar alte Koffer nur für diesen Zweck.


Einverstanden. Kein RAM bedeutet kein Stack, was bedeutet, dass keine Routine aufgerufen werden kann. Jeder Code, der in dieser Situation funktionieren könnte, müsste sorgfältig von Hand zusammengesetzt werden.
Loren Pechtel

Wahr. Ich habe aber Code gesehen, der das getan hat. (Ich war der erste Teil einer BIOS-Routine, bevor der Speichercontroller initialisiert wurde.)
Hennes

2
@LorenPechtel Das stimmt nicht ganz. Der Stapel kann (und wird oft) im On-Chip-Speicher gespeichert.
Reirab

2
@LorenPechtel nicht nötig. ARM verwendet Stack nicht zum Aufrufen einer Routine.
Domen

1
Soweit ich sehen kann, haben diese Chips einen internen SRAM ... der als RAM zählt.
Domen

10

Wenn ich die Frage richtig lese, bellt jeder hier den falschen Baum an.

Er gibt ausdrücklich "um zum BIOS zu gelangen" an.

Wenn der Laptop so kaputt ist, dass er nicht einmal ins BIOS gelangt, ist alles andere sinnlos.

Unabhängig von der RAM-Situation können Sie auf diesem Computer KEIN Betriebssystem booten.


8

Ihre Annahme, dass der Speicher schlecht ist, ist wahrscheinlich ungültig. Wenn Sie keine Signaltöne oder Bildschirmmeldungen erhalten, ist die Hauptursache mit ziemlicher Sicherheit eine ausgefallene CPU (etwas unwahrscheinlich) oder ein ausgefallenes Mainboard (sehr wahrscheinlich). Mainboards versagen mit der Zeit aufgrund von kalten Lötstellen, die in den frühen Tagen der ROHS-Bewegung häufig vorkamen und die die Verwendung von bleifreiem Lot erforderten. Die Herstellungstechniken wurden für die Verwendung von bleibasiertem Lot optimiert, und es dauerte eine Weile, bis die Branche die Probleme erkannt und behoben hatte. Viele Komponentenhersteller waren nicht sehr bereit, das Geld für ein Upgrade ihrer Prozesse auszugeben. Immerhin würden die Geräte einwandfrei getestet und gebrannt, und erst Monate oder Jahre später, nachdem die Garantie wahrscheinlich abgelaufen war, versagen. Erst mit einem wachsenden Berg von Fehlern und intensiven negativen Rückmeldungen von Anwendern begannen die Hersteller, die Dinge zu verbessern. Bei einem solchen Laptop ist es mit ziemlicher Sicherheit unerschwinglich, das Mainboard neu fließen zu lassen, um die kalten Lötstellen zu korrigieren.


Das ist möglich, aber schlechtes Gedächtnis ist auch keine schlechte Vermutung. Ich habe gesehen, dass ein fehlerhafter Speicher (und sogar fehlerhafte Speichersockel) mehrmals einen Fehler beim POST verursacht hat. Natürlich ist die einfachste Überprüfung des Speichers in der Regel nur der Versuch, mit verschiedenen entfernten Sticks oder nur mit einem als funktionierend bekannten Stick zu booten. Wenn das die Probleme behebt, war es entweder der Speicher, die Speichersteckplätze oder der Speichercontroller.
Reirab

5

Die meisten frühen Computer der 1980er Jahre hatten Betriebssysteme (Hardwaretreiber, E / A-Unterstützung, Laden von Programmen, sehr einfache Befehlszeilenschnittstelle usw.) im ROM-Chip. Es könnte etwas funktionieren, auch wenn RAM-Chips nicht funktionsfähig waren. Diese Funktion wurde in speziellen ROM-Inhaltsversionen verwendet, die für die Ausführung von Hardwaretests entwickelt wurden und hauptsächlich über die Signalton- und Tastaturbeleuchtung kommunizierten.

Die CPU hat mehrere Register, um sich mindestens die Adresse des ausgeführten Befehls zu merken, aber diese werden normalerweise nicht als RAM bezeichnet.

Regulärer C-Code kann in einem System ohne RAM nicht ausgeführt werden, da der Stapelspeicher zum Zuweisen von Variablen verwendet wird und sich der Stapel im RAM befindet. Wenn ein neuerer Computer gestartet wird, ist zunächst kein regulärer dynamischer RAM verfügbar, da das RAM-Aktualisierungsgerät erst eingerichtet werden muss, um zu funktionieren. Assembly-Code wird zuerst ausgeführt und führt die Motherboard-Initialisierung durch. RAM beginnt zu arbeiten und dann kann C-Code ausgeführt werden.


4
Der letzte Absatz ist nicht ganz richtig. Der Stack muss sich nicht im Off-Chip-RAM befinden. Tatsächlich ist es durchaus üblich, dass sich der Stack im On-Chip-Speicher befindet. Selbst auf normalen Computern befindet sich der Stapel des aktuell ausgeführten Threads normalerweise im Cache und wird nur dann an den DRAM übertragen, wenn der Scheduler Threads austauscht. Ich habe jedoch Code für DSPs geschrieben, in denen sich der Stack im direkt adressierbaren On-Chip-Speicher befand und den DRAM nie berührte. Natürlich könnte man in diesem Fall argumentieren, dass der On-Chip-Speicher technisch RAM ist.
Reirab

4
Außerdem ist es nicht ungewöhnlich, dass zumindest einige der Parameter und Rückgabewerte mithilfe von Registern (anstelle des Stapels) an C-Funktionen übergeben werden. Außerdem werden lokale Variablen von C-Compilern häufig in Registern und nicht auf dem Stapel gespeichert. Sie können sogar ausdrücklich anfordern, dass der Compiler eine bestimmte Variable mit dem Schlüsselwort 'register' in ein Register schreibt. Wenn eine Funktion mehr lokale Variablen benötigt, als Speicherplatz zur Verfügung steht, müssen Sie natürlich in den Arbeitsspeicher wechseln. Dies ist jedoch eine Hardware-Einschränkung, die unabhängig von der Programmiersprache gilt.
Reirab

4

Als ich 1967 an die Universität ging, hatte die Computerabteilung ein Stantec Zebra . Der Speicher bestand aus einer Magnettrommel mit 8192 Wörtern. Es gab auch 12 Register und zwei Akkus. Sie könnten diesen Arbeitsspeicher in Betracht ziehen, aber nicht so, wie wir ihn kennen.


3

Sie würden mindestens einen On-Chip-Cache für Register benötigen (im Wesentlichen eine sehr kleine Menge an On-Chip-RAM), damit die CPU-Ausführungseinheit funktionieren könnte. So hat auch Ihre CPU "RAM".

Ich glaube, kein Von-Neumann-Betriebssystem wurde ohne den erforderlichen Speicher entwickelt.

Also nein.


3

Wie bei allen anderen hier, stimme ich der Tatsache zu, dass Sie RAM benötigen und nicht ohne RAM arbeiten können, aber ich habe auch Folgendes gelesen:

(Ursprünglich wollte ich ein RAM-freies Betriebssystem laden, um zu überprüfen, ob der RAM defekt war, aber mir gefällt die Art und Weise, in der diese Frage in den Wind geschossen ist.)

Dies ist tatsächlich im BIOS vorhanden, es gibt eine Funktion zur eingehenden Überprüfung des Arbeitsspeichers. Wenn Sie booten und das BIOS aufrufen, deaktivieren Sie die Option "Quick Power-On Self Test" (Schneller Selbsttest beim Einschalten), damit Ihr RAM vollständig überprüft wird. Diese Option sollte sich in "Advanced BIOS Features" (erweiterten BIOS-Funktionen) befinden, was bei AMI-BIOS der zweiten Wahl entspricht.

Ich hoffe, das bringt Sie einen Schritt weiter. ;-)


3

Sie nicht brauchen RAM zB eine Verwendung Turing - Maschine .

Eine Turingmaschine ist ein hypothetisches Gerät, das Symbole auf einem Bandstreifen gemäß einer Regeltabelle manipuliert. Trotz seiner Einfachheit kann eine Turing-Maschine angepasst werden, um die Logik eines beliebigen Computeralgorithmus zu simulieren, und ist besonders nützlich, um die Funktionen einer CPU in einem Computer zu erläutern.

(Ich würde ein Band nicht als RAM betrachten.)

Jetzt sollten Ihre eigentlichen Fragen nach "nützlich" lauten und definieren, was Sie unter "nützlich" verstehen .


3
Auf der konzeptionellen Ebene einer Turing-Maschine sind alle Arten von Lese- und Schreibdatenspeichern im Wesentlichen gleichwertig: RAM, Register, Cache, Magnetband, Platte. Der einzige Unterschied zwischen ihnen ist die Zugriffsgeschwindigkeit.
Barmar

1
@Barmar RAM steht für Random Access Memory. Das heißt, Sie können in beliebiger Reihenfolge auf die darin enthaltenen Zellen zugreifen. Auf die Zellen auf einem Band einer Turing-Maschine kann nur sequentiell zugegriffen werden (entweder in Richtung oder alternierend). Also würde ich sagen, dass das Band auf einer Turing-Maschine per Definition kein RAM ist.
Kasperd

1
@Barmar Das ist falsch. Die Definition des RAM erlaubt keine Suchzeiten. Daher passt das Band eines TM einfach nicht zur Definition von RAM, weil Sie nicht auf beliebige Zellen zugreifen können, ohne zu suchen.
Kasperd

1
@Barmar, der Begriff der Wanduhrzeit mag nicht zutreffen, aber der Begriff der Zeit, wie er O (n) Leseoperationen erfordert, um dorthin zu gelangen, ist sicher.
Psusi

1
@Barmar, nein, tust du nicht. Deshalb verwenden wir die große "O" -Notation, um über rein mathematische Komplexität zu sprechen, die nichts damit zu tun hat, wie viel "Zeit" etwas Reales in Anspruch nehmen könnte. Das mathematische Modell eines Bandlaufwerks in diesem TM ist so konzipiert, dass es nur in beide Richtungen lesen kann und nicht in beliebiger Zeit vorwärts oder rückwärts zoomen kann. Wenn Sie Byte 1 zuletzt gelesen haben, können Sie daher Byte 27 nicht lesen, ohne vorher die 26 Bytes dazwischen zu lesen. Deshalb ist es kein Widder. Wenn Sie Speicher benötigen, der diese 26 Bytes überspringen kann, unabhängig davon, ob dies 0 Mal oder 5 Minuten dauert, ist dies RAM, kein Band.
Psusi

3

Es gibt spezielle Betriebssysteme für die eingebettete Verwendung, bei denen der gesamte ROM-Speicher (Nur-Lese-Speicher) zur Verfügung steht. Um jedoch etwas Nützliches zu tun, benötigen Sie in der Regel immer noch mindestens eine geringe Menge an RAM. Ich habe noch keinen PC gesehen, der ohne RAM bootet.

Bei der ursprünglichen Frage zu einem Speichertest wurde Memtest86 speziell zum Testen des Arbeitsspeichers entwickelt, wenn der Computer einen POST durchführt (dh den Selbsttest beim Einschalten besteht und versucht, den Computer zu starten). Es testet die ersten 64 KB RAM, lädt sich selbst in diesen RAM und testet dann den Rest des Systemspeichers so gründlich, wie Sie möchten. "Flakey" -Speicher (im Gegensatz zu einfach schlechtem Speicher) ist ungewöhnlich, aber ich habe gesehen, dass Memtest86 ein zeitweise schlechtes Bit abfängt, das der Speichertest des Computers übersehen hat (schließlich soll der POST-Speichertest in angemessener Zeit abgeschlossen werden Der schnellste Test von memtest86 dauert 5-10 Minuten, umfassendere Tests dauern Stunden.)


1

Ja, Sie können einen Computer ohne RAM haben. In den meisten x86-Prozessoren gibt es einen speziellen Modus, der es ermöglicht, sie nur mit Cache auszuführen. Wenn Sie nach Coreboot (früher Linuxbios) suchen, ist dies möglich. Es heißt Cache-as-RAM. Eigentlich kann man ein ganzes Betriebssystem darauf aufbauen, und mit den modernen großen Caches könnte es sogar eine GUI haben (siehe menuet-os). Aber noch keiner.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.