Working Set

Il working set di un processo è il set di pagine nello spazio indirizzi virtuale del processo attualmente residente in memoria fisica. Il working set contiene solo allocazioni di memoria di paging; le allocazioni di memoria non modificabili, ad esempio AWE (Address Windowing Extensions ) o le allocazioni di pagine di grandi dimensioni non sono incluse nel working set.

Quando un processo fa riferimento a memoria pagable che non è attualmente presente nel relativo working set, si verifica un errore di pagina . Il gestore degli errori della pagina di sistema tenta di risolvere l'errore della pagina e, se ha esito positivo, la pagina viene aggiunta al working set. L'accesso alle allocazioni di pagine AWE o di grandi dimensioni non causa mai un errore di pagina, perché queste allocazioni non sono disponibili per la pagina.

Un errore di pagina rigida deve essere risolto leggendo il contenuto della pagina dall'archivio di backup della pagina, ovvero il file di paging di sistema o un file mappato alla memoria creato dal processo. È possibile risolvere un errore di pagina temporanea senza accedere all'archivio di backup. Si verifica un errore di pagina temporanea quando:

  • La pagina si trova nel working set di un altro processo, quindi è già residente in memoria.
  • La pagina è in fase di transizione, perché è stata rimossa dai working set di tutti i processi che utilizzano la pagina e non è ancora stata riutilizzata oppure è già residente in seguito a un'operazione di prelettura di Gestione memoria.
  • Un processo fa riferimento a una pagina virtuale allocata per la prima volta (talvolta denominata errore di richiesta zero).

Le pagine possono essere rimosse da un working set di processi in seguito alle azioni seguenti:

  • Il processo riduce o svuota il working set chiamando la funzione SetProcessWorkingSetSize, SetProcessWorkingSetSizeEx o EmptyWorkingSet .
  • Il processo chiama la funzione VirtualUnlock in un intervallo di memoria non bloccato.
  • Il processo annulla il mapping di una visualizzazione mappata di un file usando la funzione UnmapViewOfFile .
  • Gestione memoria taglia le pagine dal working set per creare una memoria più disponibile.
  • Il gestore della memoria deve rimuovere una pagina dal working set per liberare spazio per una nuova pagina, ad esempio perché il working set ha le dimensioni massime.

Se più processi condividono una pagina, la rimozione della pagina dal working set di un processo non influisce su altri processi. Dopo la rimozione di una pagina dai working set di tutti i processi che lo utilizzano, la pagina diventa una pagina di transizione. Le pagine di transizione rimangono memorizzate nella cache nella RAM fino a quando la pagina non viene nuovamente referenziata da un processo o riutilizzata (ad esempio, riempite con zeri e date a un altro processo). Se una pagina di transizione è stata modificata dopo l'ultima scrittura su disco, ovvero se la pagina è "dirty", la pagina deve essere scritta nell'archivio di backup prima di poterla riutilizzare. Il sistema può iniziare a scrivere pagine di transizione dirty nel proprio archivio di backup non appena tali pagine diventano disponibili.

Ogni processo ha una dimensione minima e massima del working set che influisce sul comportamento di paging della memoria virtuale del processo. Per ottenere le dimensioni correnti del working set di un processo specificato, utilizzare la funzione GetProcessMemoryInfo . Per ottenere o modificare le dimensioni minime e massime del working set, usare le funzioni GetProcessWorkingSetSizeEx e SetProcessWorkingSetSizeEx .

L'interfaccia PSAPI (Process Status Application Programming Interface) fornisce una serie di funzioni che restituiscono informazioni dettagliate sul working set di un processo. Per informazioni dettagliate, vedere Working Set Information.For details, see Working Set Information.