Physischer Speicher und die Auslagerungsdatei unter Windows


Früher war es bei älteren Betriebssystem so, dass der physische Speicher gleichbedeutend mit den im Rechner vorhandenen Arbeitsspeicher war. Das heißt, waren nur 16 MB Speicher eingebaut, so hatten alle Prozesse auch nur 16 MB zur Verfügung. Moderne Betriebssysteme können hingegen Festplattenplatz wie RAM-Speicher aussehen lassen und so den verfügbaren Arbeitsspeicher erhöhen. Die entsprechende Datei auf der Festplatte heißt im deutschen bezeichnenderweise Auslagerungsdatei, weil dort hin Seiten1 des Arbeitsspeichers ausgelagert werden. Im englischen nennt man sie unter Windows gewöhnlich pagefile.

Aus der Sicht der Anwendung erhöht die Auslagerungsdatei den zur Verfügung stehenden Speicher auf eine transparente Art und Weise. Nehmen wir folgende Konstellation: Wir haben 64 MB Arbeitsspeicher und eine 100 MB große Auslagerungsdatei, so scheint für die Anwendung jedoch insgesamz 164 MB Speicher zur Verfügung zu stehen. Das Betriebssystem lagert dann, in Zusammenarbeit mit der CPU, Bereiche des RAM-Speichers auf die Festplatte aus und lädt sie bei Bedarf wieder von der Festplatte zurück in den Arbeitsspeicher. Für die Verwaltung dieses virtuellen Speichers ist natürlich eine erhebliche Unterstützung der CPU erforderlich. Wenn ein Thread versucht auf ein Byte zuzugreifen, muss die CPU natürlich wissen, wo sie dieses Byte findet, im Arbeitsspecher oder in der Auslagerungsdatei. Es gibt also zwei Möglichkeiten, die angeforderten Daten befinden sich im Arbeitsspeicher und können direkt verwendet werden oder eben nicht und müssen erst in den Arbeitsspeicher geschrieben werden, damit die CPU darauf zugreifen kann.

Was genau passiert, wenn ein Thread auf einen Datenblock zugreift, verdeutlicht folgendes Schema:

Schema

Die erste Möglichkeit ist natürlich trivial und die günstigste, der Datenblock befindet sich bereits im Arbeitsspeicher. In diesem Fall bildet die CPU lediglich die virtuelle Adresse der Daten auf die physische Adresse im RAM ab und ermöglicht so den gewünschten Zugriff.

Allerdings kommt es jedoch öfters vor, dass sich die gewünschten Daten anstatt im RAM, irgendwo in der Auslagerungsdatei auf der Festplatte befinden. Ein Zugriff auf die Daten erzeugt dann einen so genannten Seitenfehler. Diese Seitenfehler kann man sich auch mal im Taskmanager ansehen:

Taskmanager Seitenfehler

Mit diesen Seitenfehlern informiert die CPU das Betriebssystem darüber, dass ein Zugriffsversuch misslungen ist. Das Betriebssystem guckt daraufhin, ob noch eine freie Seite im Arbeitsspeicher zur Verfügung steht. Steht eine zur Verfügung, werden die angeforderten Daten dorthin geladen und die CPU kann darauf zugreifen. Wird keine freie Speicherseite gefunden, muss eine belegte Seite freigegeben werden. Wurde die Seite nicht verändert, kann sie sofort freigegeben werden. Wurde sie aber verändert, muss sie zuvor in die Auslagerungsdatei kopiert werden. Dann greift das System auf die Auslagerungsdatei zu, sucht die angeforderten Daten und kopiert sie in den Arbeitsspeicher. Ist der Vorgang abgeschlossen, aktualiisert das Betriebssystem seine Tabelle und zeigt an, dass die virtuelle Speicheradresse jetzt auf die passende Adresse des physikalischen Speichers im RAM zeigt. Die CPU probiert jetzt erneut die Anweisung aus, die ursprünglich den Seitenfehler auslöste. Dies mal aber kann die CPU die virtuelle Speicheradresse auf eine physikalische Speicheradresse im RAM abbilden und auf die Daten zugreifen.

Es dürfte klar sein, dass je öfter das Betriebsystem diesen Vorgang wiederholen muss, desto langsamer wird es. Denn anstatt das zu startende Programm in den Arbeitsspeicher zu laden, ist es damit beschäftigt Speicherseiten aus- und einzulagern. Man kann dieses Verhalten aber verbessern, in dem man dem System entsprechen mehr Arbeitsspeicher zur Verfügung stellt, damit nicht mehr so viel ein- und ausgelagert werden muss. Damit ergibt sich eine Grundregel: Meist ist der Leistungsgewinn durch mehr RAM größer, als der, der sich durch das Ersetzen einer schnelleren CPU erreichen läßt.

Quellenangaben:

  1. Eine Seite ist die Grundeinheit, die bei der Speicherverwaltung verwendet wird.
2010-12-29T23:44:58 +0100, mail+homepage[at]michael-puff.de