wake-up-neo.com

Windows - Commit Size vs Virtual Size

ich möchte den genauen Unterschied zwischen Commit Size (sichtbar im Task Manager ) und Virtual Size) kennen (sichtbar in SysInternals Process Explorer ).

Der Parameter Virtuelle Größe im Prozess-Explorer scheint ein genauerer Indikator für zu sein Gesamte Nutzung des virtuellen Speichers durch einen Prozess. Die Commit-Größe ist jedoch immer kleiner als die virtuelle Größe und ich denke Es enthält nicht den gesamten virtuellen Speicher, der vom Prozess verwendet wird. Ich möchte, dass jemand erklärt, was genau in diesen Parametern enthalten ist.

33
Faris Zacina

Speicher kann reserviert, festgeschrieben, zuerst aufgerufen und Teil des Arbeitssatzes sein. Wenn Speicher reserviert ist , wird ein Teil des Adressraums reserviert, sonst passiert nichts.

Wenn der Speicher festgeschrieben ist , garantiert das Betriebssystem, dass die entsprechenden Seiten im Prinzip existieren entweder in physischen RAM oder auf der Auslagerungsdatei. Mit anderen Worten, es wird auf die feste Grenze der insgesamt verfügbaren Seiten im System angerechnet, und es werden formal Seiten erstellt. Das heißt, es werden Seiten erstellt und so getan, als ob sie existieren (wenn sie in Wirklichkeit noch nicht existieren).

Wenn zum ersten Mal auf den Speicher zugegriffen wird , existieren die Seiten, die formal sind werden so geschaffen, dass sie wirklich existieren. Dem Prozess wird entweder eine Nullseite zugeführt, oder es werden Daten aus einem Mapping in eine Seite eingelesen. Die Seite wird in den Arbeitssatz des Prozesses verschoben (bleibt aber nicht unbedingt für immer dort).

Jeder laufende Prozess hat eine Anzahl von Seiten, die sich sachlich und logisch im RAM befinden , das heißt, diese Seiten existieren, und sie existieren auch "offiziell". Dies ist der Arbeitssatz des Prozesses.
Außerdem hat jeder laufende Prozess Seiten, die sich tatsächlich im RAM befinden, aber offiziell in RAM nicht existieren Mehr. Sie befinden sich möglicherweise in der sogenannten "Standby-Liste" oder in einem Teil des Puffercaches oder in einem anderen Bereich. Wenn auf diese zugegriffen wird, kann das Betriebssystem sie einfach wieder in den Arbeitsbereich verschieben.
Schließlich hat jeder Prozess Seiten, die sich überhaupt nicht in RAM befinden (entweder beim Tausch oder sie existieren noch nicht).

Virtuelle Größe umfasst die Größe aller Seiten, die der Prozess reserviert hat .

Commit size umfasst nur Seiten, für die ein Commit durchgeführt wurde .

Das heißt, "virtuelle Größe" ist für Laien so ziemlich Ihr eigenes Problem und nur durch die Größe Ihres Adressraums begrenzt, wohingegen "Commit-Größe" das Problem aller ist, da es eine global begrenzte Ressource (RAM plus Swap) verbraucht. Es beeinflusst daher andere Prozesse .

52
Damon

Die Festschreibungsgröße ist die Menge an Speicherplatz, die in der Auslagerungsdatei für den Prozess reserviert ist. Wird verwendet, wenn die Seiten ausgetauscht werden müssen, um Platz in RAM für andere Prozesse zu schaffen.

Und ja, der virtuelle Speicher wird größer, da er die Seiten enthält, die nicht von der Auslagerungsdatei gesichert werden. Zumindest die Code- und Ressourcenabschnitte in den EXE- und nicht verschobenen DLLs. Bei Bedarf können diese Seiten einfach aus der Datei entfernt und neu geladen werden. Alle Betriebssystem-DLLs passen zu dieser Kategorie. Darüber hinaus alle vom Prozess verwendeten Speicherzuordnungsdateien. Das VMMap-Dienstprogramm von SysInternals kann einen Einblick geben.

10
Hans Passant

Virtuelle Größe ist die Größe des virtuellen Adressraums des Prozesses.

Bei der Zuweisung von Speicher können Sie einen Adressbereich anfordern, ohne den dahinter liegenden Speicher zu belegen. Diese Adressen zeigen nicht auf den physischen Speicher, bis ein zweiter Zuweisungsaufruf verwendet wird, um sie festzuschreiben.

Lesen Sie mehr auf VirtualAlloc . Linux hat die MMAP-Funktion, die dasselbe tut.

2
egur