Ist es überhaupt möglich Ubuntu ohne RAM zu benutzen?

15

Wenn ich den Wert für swappiness auf 100 setze und versuche, die auf der Festplatte meines Freundes installierte Ubuntu-Festplatte ohne RAM zu booten, kann ich den Computer dann überhaupt ohne Ram booten?

pio123498765
quelle
31
Was meinst du mit dem Computer deines Freundes ohne RAM? Bist du sicher, dass es ein Computer ist?
Terdon
5
@terdon Es ist eine Teekanne .
Katze

Antworten:

47

Nein. Die CPU kann keinen Code aus dem Swap ausführen. Das Austauschen funktioniert, indem RAM-Inhalte auf die Festplatte und andere Festplatteninhalte in den RAM verschoben werden. Die Ausführung erfolgt jedoch immer über den RAM.

Und nein, es gibt keine Möglichkeit, Code oder Daten von der Festplatte direkt in die CPU-Caches zu übertragen. Sie können den RAM nicht umgehen.

Sogar Mikrocontroller-Architekturen, die Code direkt aus NOR-Flash ausführen können, benötigen RAM für den Stack, zumindest einige eingebaute SRAMs wie manche Controller.

Philippos
quelle
1
@ LưuVĩnhPhúc Du hast recht. Ich bin es immer noch gewohnt, diese SoCs mit ARM Cortex-A-Kernen als "Mikrocontroller" zu bezeichnen, obwohl dies möglicherweise irreführend ist. Diese haben eine MMU, können Linux ausführen und haben normalerweise auch das interne SRAM (das für den Boot-Code benötigt wird), aber ich glaube nicht, dass diese Code direkt von Flash ausführen können. Nun, das OP scheint sowieso an einen normalen PC zu denken.
Philippos
1
Ich denke, S390 Linux kann Code direkt von der Festplatte ausführen. Die Funktion wurde hinzugefügt, da der S390 eine 31-Bit-Architektur ist und es ein Gewinn ist, jedes Byte anstelle von Code für Daten verfügbar zu machen. Ich konnte mich zwar falsch erinnern, aber das Patch-Set war einprägsam, da es den einzigartigen Unterschied hatte, sowohl für Mainframes als auch für Mikrocontroller (dh die beiden extremen Enden der Linux-Skalierung) wertvoll zu sein, aber für nichts dazwischen von Interesse zu sein.
Jörg W Mittag
2
Ah, gefunden, es ist die XIP-Funktion (eXecute In Place). Natürlich benötigen Sie noch RAM für Daten. Es geht nur um Code.
Jörg W Mittag
1
@rackandboneman Als Embedded-Entwickler habe ich alles gemacht, vom nackten Assembler auf 8-Bit-Controllern über RTOS bis hin zu Embedded Linux. Der wenigste Speicher, den ich traf, war ein ATtiny mit Speicher für einen Stapel mit drei Rücksprungadressen. Ohne das könnten Sie nicht einmal Interrupts haben! Jetzt bitte nicht streiten, ob dieser Stapelspeicher RAM oder Register ist ... (-:
Philippos
1
@Philippos warum sollte ich streiten - WIR reden das gleiche.
Rackandboneman
7

/electronics//a/311839/111920 enthält den Link http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699?pgno=2, der das beschreibt Bootvorgang einer modernen Intel-CPU bis ins kleinste Detail.

TL; DR: Nein. Während des Startvorgangs gibt es tatsächlich eine Phase, in der die RAM-Chips nicht verwendet werden und der Prozessor nur mit seinem internen Cache als Behelfs-RAM ausgeführt wird. Dies ist jedoch sehr früh im BIOS-Ladevorgang und eines der ersten Dinge, die das BIOS tut, ist die Initialisierung des RAM, um es verwenden zu können. Der dort ablaufende Maschinencode ist sehr spezialisiert, sehr handgefertigt.

Nach diesem sehr frühen Stadium wird RAM für alles benötigt. Dies bedeutet, dass Sie ohne RAM nicht einmal in der Lage sind, das BIOS aufzurufen, ein Videosignal zu empfangen oder von einem beliebigen Medium zu booten.

AnoE
quelle