Mit der Funktion für virtuellen Speicher / Paging kann ein Kernel den Speicher für Prozesse im Userspace "virtualisieren". Der Kernel kann Seiten aus dem physischen Speicher entnehmen und durch Blättern so anordnen, dass sie an einen Benutzerbereichsprozess angrenzen.
Es kann ein Limit für den Arbeitsspeicher eines Userspace-Prozesses festgelegt werden. Wenn der Prozess darüber hinausgeht, tritt ein "Seitenfehler" auf, der eine CPU-Ausnahme verursacht, die zum Kernel zurückspringt. Dadurch wird verhindert, dass das Userspace-Programm ohne die Erlaubnis des Kernels mit dem dem Kernel oder anderen Programmen zugewiesenen Speicher in Konflikt gerät.
Typischerweise fragen User - Space - Programme den Kernel diese Grenze über gut definierte Schnittstellen zu erweitern (durch die C - Funktionen aufgerufen malloc()
und free()
zum Beispiel.). Der Kernel ist dafür verantwortlich, nachzuverfolgen, wie viel und welcher Speicher einem Programm zugewiesen ist.
Dieser "Seitenfehler" -Mechanismus kann auch dazu führen, dass der Kernel die Seite, auf die der Prozess versucht hat, mit einer Seite von der Festplatte auszutauschen, wenn der Kernel in der Lage ist, Speicher überzubereiten (und dies sowohl von Windows als auch von Linux unterstützt wird). Wenn der Speicherzugriff tatsächlich ungültig war (dh der Prozess versucht, auf den Speicher zuzugreifen, nach dem er nicht zuerst gefragt hat), wird der Prozess normalerweise mit einem SIGSEGV abgebrochen.
"Tauschen" ist also eine zusätzliche Funktion (in Linux können Sie sie sogar ganz deaktivieren, wenn Sie möchten), die vom virtuellen Speicher / Paging abhängt, aber nicht erforderlich ist, nur weil eine CPU über virtuellen Speicher / Paging verfügt. Die Konzepte sind nicht identisch, aber das Austauschen hängt davon ab, ob Paging / virtueller Speicher vorhanden ist.
Nachdem Sie Ihre Frage genauer gelesen haben, wird "Paging" manchmal als Synonym für "Auslagern" verwendet. Ich habe jedoch noch nie von "Auslagern" gehört, was bedeutet, dass der gesamte Prozessspeicher ausgelagert wird, im Gegensatz zu "Auslagern", was nur einen Teil von "Auslagern" bedeutet es ist vertauscht.
Aber warum braucht Linux dann eine Swap-Partition? Wenn der physische Speicher voll ist, werden einige Prozesse auf die Festplatte ausgelagert und ein neuer Prozess wird vom virtuellen Speicher auf den physischen Speicher abgebildet.
"Virtueller Speicher" ist physischer Speicher, nur "neu zugeordnet". Die MMU-Hardware kann keinem Speichergerät direkt zugeordnet werden. Die MMU kann einen Fehler auslösen, der dem Kernel mitteilt, dass ein Prozess versucht hat, auf den Speicher zuzugreifen, den er nicht haben sollte - und der Kernel kann diesen Mechanismus verwenden, um festzustellen, dass ein Prozess etwas von der Festplatte zurückverlangen möchte, von dem er glaubte, dass es sich im Speicher befand, und dann die folgenden Schritte ausführen: Wechsel". Der Punkt ist, dass es das Betriebssystem ist, das entscheidet, Seiten auf der Festplatte zu speichern, damit es diese Seiten für andere Prozesse verwenden kann, nicht für die Hardware.