
In seiner AutobiographieNur zum Spaßerwähnt Linus die „Page-to-Disk“-Funktion, die ausschlaggebend dafür war, Linux zu einem würdigen Konkurrenten für Minix und andere damalige UNIX-Klone zu machen:
Ich erinnere mich, dass es im Dezember einen Typen in Deutschland gab, der nur 2 Megabyte RAM hatte. Er versuchte, den Kernel zu kompilieren, konnte aber GCC nicht ausführen, weil GCC damals mehr als ein Megabyte benötigte. Er fragte mich, ob Linux mit einem kleineren Compiler kompiliert werden könnte, der nicht so viel Speicher benötigt. Also beschloss ich, dass ich diese Funktion für ihn realisieren würde, obwohl ich sie nicht brauchte. Das nennt sich Page-to-Disk und bedeutet, dass jemand, der nur 2 Megabyte RAM hat, es so aussehen lassen kann, als ob er mehr Speicher von der Festplatte hätte. Das war um Weihnachten 1991.
Page-to-Disk war eine ziemlich große Sache, weil Minix das noch nie gemacht hatte. Es war in Version 0.12 enthalten, die in der ersten Januarwoche 1992 veröffentlicht wurde. Sofort begannen die Leute, Linux nicht nur mit Minix, sondern auch mit Coherent zu vergleichen, einem kleinen Unix-Klon, der von der Mark Williams Company entwickelt wurde. Die Einführung von Page-to-Disk ließ Linux von Anfang an über die Konkurrenz hinausragen.
Das war der Zeitpunkt, als Linux durchstartete. Plötzlich wechselten Leute von Minix zu Linux.
Wovon spricht er swapping
hier im Wesentlichen? Leute mit einem historischen Einblick in Linux wissen es wahrscheinlich.
Antwort1
Ja, das ist tatsächlich ein Tausch. Zitat ausVersionshinweise für 0.12:
Virtueller Speicher.
Zusätzlich zum Programm „mkfs“ gibt es jetzt ein Programm „mkswap“ auf der Root-Platte. Die Syntax ist identisch: „mkswap -c /dev/hdX nnn“, und auch hier gilt: Dies überschreibt die Partition, also seien Sie vorsichtig. Swapping kann dann aktiviert werden, indem das Wort bei Offset 506 im Bootimage auf das gewünschte Gerät geändert wird. Verwenden Sie dasselbe Programm wie zum Einstellen des Root-Dateisystems (ändern Sie aber natürlich den Offset 508 auf 506).
HINWEIS! Dies wurde von Robert Blum getestet, der eine 2M-Maschine hat, und es ermöglicht Ihnen, gcc ohne viel Speicher auszuführen. JEDOCH musste ich aufhören, es zu verwenden, da mein Speicherplatz von der Beta-gcc-2.0 aufgefressen wurde, also würde ich gerne hören, dass es noch funktioniert: Ich war seit etwa Weihnachten absolut nicht in der Lage, eine Swap-Partition für auch nur rudimentäre Tests zu erstellen. Daher könnten die neuen Änderungen möglicherweise auf der VM nach hinten losgegangen sein, aber ich bezweifle es.
In 0.12 wird Paging für eine Reihe von Funktionen verwendet, nicht nur für das Auslagern auf ein Gerät: Demand-Loading (Seiten aus Binärdateien nur laden, wenn sie verwendet werden), Sharing (gemeinsame Seiten zwischen Prozessen teilen).
Antwort2
Ja, das ist genau das Konzept, das man nenntPaging oder Swapping. (Vor langer Zeit hatten diese Begriffe leicht unterschiedliche Bedeutungen, aber im 21. Jahrhundert sind sie synonym, außer vielleicht im Kontext einiger Nicht-Unix-Betriebssysteme.)
Um es klar zu sagen: Swapping war keine innovative Funktion: Die meisten „seriösen“ Unix-Systeme hatten es, und die Funktion ist älter als Unix. Swapping hat Linux zu einem „seriösen“ Unix gemacht, während MINIX für Bildungszwecke gedacht war.
Das heutige Swapping basiert immer noch auf demselben Konzept. Die Heuristik zur Entscheidung, welche Seiten wann gespeichert werden sollen, ist wesentlich komplexer geworden, aber das Grundprinzip bleibt bestehen.
Antwort3
Swapping ist ein Konzept, das dem virtuellen Speicher und sogar dem Speicherschutz vorausging: Es bedeutet lediglich, einen Prozess auf die Festplatte zu verschieben, um Platz für einen anderen zu schaffen. Das ursprüngliche Unix hatte in dieser Hinsicht zwei Eigenheiten: „Shared Text“-Programme, die den Programmcode nur einmal im Speicher hielten und nur den Datenabschnitt auslagerten. Und es hatte den Systemaufruf „Fork“, der einen Prozess auf die Festplatte auslagerte, ohne das Speicherabbild zu ersetzen und stattdessen eine Kopie (das Kind) laufen zu lassen.
Page-to-Disk ermöglicht im Gegensatz zum Swapping die Ausführung von Prozessen, die nicht in den physischen Speicher passen. Es erfordert den gesamten schützbaren Speicher, die Speicherzuordnung virtueller Adressen zu physischen Adressen und einen neu startbaren Seitenfehlermechanismus, der es ermöglicht, die Zuordnung von einer nicht zugeordneten virtuellen Adresse zu einer sinnvoll wählbaren physischen Adresse zu ändern und den Befehl fortzusetzen, der aufgrund der fehlenden Zuordnung abgebrochen werden musste.
UNIX konnte auf 68000-Prozessoren ohne MMU ausgeführt werden (einschließlich Swapping) und nutzte eine MMU, wenn verfügbar, zum Speicherschutz gut aus, aber erst der 68010 verfügte tatsächlich über die Mechanismen, die eine Fortsetzung eines Programms nach einem Seitenfehler ermöglichten.
Der 80386 war in vielerlei Hinsicht ein mieses und veraltetes Design. Aber seine eingebaute MMU und die Fähigkeit, Seitenfehler richtig zu beheben, machten ihn sofort brauchbarer für UNIX-ähnliche Systeme, die nicht nur Swap, sondern auch Page-to-Disk konnten.
Es ist eine Art Ironie der Geschichte, dass dieses große Opfer an Silizium (ein vollwertiges MMU- und Virtualisierungs-CPU-Design beanspruchte ziemlich viel Platz auf dem Chip) für die Götter moderner Systeme hauptsächlich von einem Bastler übernommen wurde und die „großen Fische“ wie Xenix und OS/2 schließlich auf der Strecke blieben.
Obwohl „nichts eingelagert und nicht zur Ausführung eingeplant“ dasselbe ist wie „ausgetauscht“, handelt es sich hier nicht wirklich um eine Alles-oder-Nichts-Situation wie die ursprüngliche Bedeutung von „ausgetauscht“.
Der Unterschied ging in den Jahrzehnten seitdem verloren, da Demand-Paging so viel nützlicher und besser skalierbar war als gewöhnliches Swapping, dass es dieses ersetzte, als die erforderlichen CPU- und MMU-Funktionen alltäglich wurden, aber die mit beiden verbundene Verlangsamung und Belastung sorgte für ein ähnliches Erscheinungsbild.