Start

Warum zeigt das Programm so viele Einlagerungsvorgänge, obwohl ich genug Speicher habe und keine Auslagerung stattfindet?

Alle modernen Betriebssysteme arbeiten mit virtueller Speicherverwaltung. In der Hardware des Prozessors, und damit in allen Programmen, wird nicht mit den echten Adressen des Hauptspeichers (RAM) gearbeitet, sondern nur mit simulierten. Alle Vorgänge finden in einem virtuellen Speicherraum statt. Dieser virtuelle Speicher wird bei Bedarf auf echte Adressen des Hauptspeichers abgebildet, wobei jeder einzelne Prozess in seinem eigenen Speicherraum arbeitet, der gegen alle anderen streng abgeschottet ist. Falls zur Verarbeitung einer gegebenen Arbeitslast nicht genug Hauptspeicher zur Abbildung aller virtuellen Speicherräume im Computer eingebaut ist, werden gerade nicht dringend benötigte Blöcke des Hauptspeichers auf die Festplatte ausgelagert, um Platz zu schaffen. Wird auf diese Blöcke später wieder zugegriffen, wird der jeweilige Block von der Festplatte gelesen und wieder in den Hauptspeicher eingelagert. Falls dabei immer noch Platzmangel herrscht, wird dafür ein anderer, gerade nicht benötigter Block ausgelagert. Diese Technik wird als Paging bezeichnet. Der vorreservierte Speicherbereich auf der Festplatte zur Auslagerung heißt Auslagerungsbereich oder Swap Space.

Betrachtet man die Ein- und Auslagerungsstatistik im Bereich Speicher von System Monitor, so kann man feststellen, dass sehr viele Einlagerungsvorgänge — manchmal auch Auslagerungen — stattfinden, selbst wenn sich genug RAM-Speicher im Computer befindet und keinerlei Auslagerungsspeicher benutzt wird. Dies scheint auf den ersten Blick ein Widerspruch zu sein.

Dieser Effekt wird dadurch erklärt, dass moderne Betriebssysteme wie macOS die Ein- und Auslagerung auch noch für andere Zwecke nutzen, nämlich zur Hochgeschwindigkeitsverarbeitung normaler Dateien. Soll beispielsweise eine Datei der Größe 4 MByte von einem Programm gelesen werden, so kann dieses Programm so tun, als läge diese Datei in voller Größe bereits im virtuellen Speicherraum. Wird nun auf einzelne Bytes dieser Datei zugegriffen, so sind dafür keine „konventionellen“ Lesezugriffe auf die Datei nötig. Stattdessen merkt die virtuelle Speicherverwaltung in der Prozessorhardware, dass die Daten fehlen und aktiviert den Teil des Betriebssystemkerns, der für die Einlagerung von Speicherblöcken zuständig ist. Die Datei wird nun vom hochoptimierten Speichereinlagerungsteil des Systemkerns blockweise gelesen, als ob es sich um Teile des Auslagerungsbereichs handeln würde. Diese Technik wird Memory-Mapped Files genannt („in den Speicher abgebildete Dateien“). Sie kann nicht nur zum Lesen, sondern in Einzelfällen auch zum Schreiben von Daten verwendet werden.

Das System unterscheidet nicht, ob sich Ein-/Auslagerungsvorgänge auf den Auslagerungsbereich oder auf normale Dateien beziehen. Die Statistikzähler können deshalb hohe Werte anzeigen, selbst wenn überhaupt kein „echtes“ Auslagern stattfindet.