Arbeitssatz

Der Arbeitssatz eines Prozesses ist der Satz von Seiten im virtuellen Adressbereich des Prozesses, der derzeit im physischen Arbeitsspeicher vorhanden ist. Der Arbeitssatz enthält nur ausgelagerte Speicherbelegungen. Nicht ausgelagerte Speicherbelegungen wie Adressfenstererweiterungen (Address Windowing Extensions , AWE) oder große Seitenzuordnungen sind nicht im Arbeitssatz enthalten.

Wenn ein Prozess auf auslagerungsfähigen Speicher verweist, der sich derzeit nicht in seinem Arbeitssatz befindet, tritt ein Seitenfehler auf. Der Systemseitenfehlerhandler versucht, den Seitenfehler zu beheben, und wenn er erfolgreich ist, wird die Seite dem Arbeitssatz hinzugefügt. (Der Zugriff auf AWE oder große Seitenzuordnungen verursacht nie einen Seitenfehler, da diese Zuordnungen nicht ausgelagert werden können.)

Ein harter Seitenfehler muss behoben werden, indem Seiteninhalte aus dem Sicherungsspeicher der Seite gelesen werden, bei dem es sich entweder um die System paging-Datei oder eine vom Prozess erstellte Speicherzuordnungsdatei handelt. Ein Weichseitenfehler kann ohne Zugriff auf den Sicherungsspeicher behoben werden. Ein Weichseitenfehler tritt auf, wenn:

  • Die Seite befindet sich im Arbeitssatz eines anderen Prozesses, sodass sie sich bereits im Arbeitsspeicher befindet.
  • Die Seite befindet sich im Übergang, da sie entweder aus den Arbeitssätzen aller Prozesse entfernt wurde, die die Seite verwendet haben und noch nicht neu verwendet wurden, oder sie ist bereits als Ergebnis eines Arbeitsspeicher-Manager-Vorabrufvorgangs vorhanden.
  • Ein Prozess verweist zum ersten Mal auf eine zugeordnete virtuelle Seite (manchmal auch als "demand-zero fault" bezeichnet).

Seiten können als Ergebnis der folgenden Aktionen aus einem Prozessarbeitssatz entfernt werden:

  • Der Prozess reduziert oder leert den Arbeitssatz, indem die Funktion SetProcessWorkingSetSize, SetProcessWorkingSetSizeEx oder EmptyWorkingSet aufgerufen wird.
  • Der Prozess ruft die VirtualUnlock-Funktion für einen Arbeitsspeicherbereich auf, der nicht gesperrt ist.
  • Der Prozess hebt die Zuordnung einer zugeordneten Ansicht einer Datei mithilfe der UnmapViewOfFile-Funktion auf.
  • Der Speicher-Manager schneidet Seiten aus dem Arbeitssatz ab, um mehr verfügbaren Arbeitsspeicher zu erstellen.
  • Der Speicher-Manager muss eine Seite aus dem Arbeitssatz entfernen, um Platz für eine neue Seite zu schaffen (z. B. weil der Arbeitssatz seine maximale Größe aufweist).

Wenn mehrere Prozesse eine Seite gemeinsam nutzen, wirkt sich das Entfernen der Seite aus dem Arbeitssatz eines Prozesses nicht auf andere Prozesse aus. Nachdem eine Seite aus den Arbeitssätzen aller Prozesse entfernt wurde, die sie verwendet haben, wird die Seite zu einer Übergangsseite. Übergangsseiten bleiben im RAM zwischengespeichert, bis entweder von einem Prozess erneut auf die Seite verwiesen oder neu verwendet wird (z. B. mit Nullen gefüllt und an einen anderen Prozess übergeben). Wenn eine Übergangsseite geändert wurde, seit sie zuletzt auf den Datenträger geschrieben wurde (d. h. wenn die Seite "modifiziert" ist), muss die Seite in ihren Sicherungsspeicher geschrieben werden, bevor sie erneut verwendet werden kann. Das System beginnt möglicherweise mit dem Schreiben modifiziert Der Übergang von Seiten in den Backing Store, sobald diese Seiten verfügbar sind.

Jeder Prozess verfügt über eine minimale und maximale Arbeitssatzgröße, die sich auf das Auslagerungsverhalten des virtuellen Arbeitsspeichers des Prozesses auswirkt. Verwenden Sie die GetProcessMemoryInfo-Funktion , um die aktuelle Größe des Arbeitssatzes eines angegebenen Prozesses abzurufen. Verwenden Sie zum Abrufen oder Ändern der minimalen und maximalen Arbeitssatzgrößen die Funktionen GetProcessWorkingSetSizeEx und SetProcessWorkingSetSizeEx .

Der Prozess status Application Programming Interface (PSAPI) stellt eine Reihe von Funktionen bereit, die detaillierte Informationen zum Arbeitssatz eines Prozesses zurückgeben. Weitere Informationen finden Sie unter Arbeitssatzinformationen.