Che cos'è un set di lavoro ea cosa serve?
Un set di lavoro è un sottoinsieme di pagine virtuali residenti nella memoria fisica.
Esistono diversi tipi di set di lavoro in Windows:
I set di lavoro di processo contengono le pagine a cui fanno riferimento i thread all'interno di un singolo processo.
Il set di lavoro di sistema contiene il sottoinsieme residente del codice di sistema paginabile (questo include principalmente il kernel e i driver caricati), tra il pool di paging e la cache di sistema.
Set di lavoro della sessione che contengono sottoinsiemi residenti di dati specifici della sessione in modalità kernel allocati dal sottosistema Windows, pool di paging di sessione, viste mappate di sessione e altri driver di sessione.
In sostanza, un set di lavoro viene utilizzato per decidere quanta memoria fisica può essere utilizzata per evitare un sacco di paging. Quando si verifica un errore di pagina , vengono esaminati i limiti del gruppo di lavoro e la quantità di memoria libera sul sistema. Se necessario, il gestore della memoria consente a un processo di crescere al massimo del set di lavoro. Se la memoria è insufficiente, Windows sostituirà le pagine in un set funzionante quando si verifica un errore di pagina.
Windows tenterà di mantenere la memoria disponibile scrivendo le pagine modificate sul disco. Se la memoria si esaurisce, il gestore dei set di lavoro proverà a tagliare la maggior parte dei set di lavoro per aumentare la quantità di memoria RAM fisica disponibile disponibile per il sistema. I processi che hanno una maggiore quantità di pagine hanno una tendenza più elevata a essere esaminati.
Il set di lavoro predefinito per un processo è composto da un minimo di 50 pagine e ha un massimo di 345 pagine. I limiti possono essere modificati, ma i valori predefiniti saranno sufficienti nella maggior parte dei casi d'uso, si deve anche notare che la dimensione massima del set di lavoro non può superare il massimo a livello di sistema calcolato al momento dell'avvio.
Windows riporta le quantità totali, di picco e private di RAM fisica utilizzate dalle pagine dei set di lavoro virtuali per un processo. Privato indica la memoria che non è condivisa tra i processi.
Che cos'è il commit commit ea cosa serve?
Le pagine nello spazio degli indirizzi virtuali di un processo sono libere, riservate o impegnate. Le applicazioni possono riservare lo spazio degli indirizzi e quindi impegnarsi ; riservarsi non occupa spazio di memoria o di file di paging, ma serve principalmente a ridurre la memoria rinviando gli impegni di paging.
Le pagine impegnate sono pagine che, quando accedute, alla fine si traducono in pagine valide nella memoria fisica; sono privati e condivisibili o associati a una vista di una sezione. Una sezione può essere memoria condivisa o file mappati ; quindi, se le pagine impegnate vengono mappate su una parte di un file mappato, potrebbe essere necessario accedervi dal disco quando si accede.
Il file mappato noto più comune è il file di paging . Memorizza le pagine modificate che sono ancora in uso da qualche processo ma che hanno dovuto essere scritte su disco. In questo modo in modo più aggressivo, la memoria può essere svuotata più facilmente senza dover scrivere prima I / O.
Il gestore della memoria tiene traccia dei costi di commit privati su base globale e per processo come quota del file di paging. Questi valori vengono quindi utilizzati per determinare la frequenza con cui scrivere nel file di paging. Si noti che la liberazione della memoria viene eseguita dal meccanismo del set di lavoro ...
Quando qualcosa non è più in memoria, viene caricato dal file di paging.
I report di Windows fanno pagare come quantità totale di memoria utilizzata da un processo per il quale non esiste un archivio di backup; riassume essenzialmente la quantità di RAM fisica che è ancora assente nel file di paging e sottrae da essa altri file mappati.
Un archivio di backup è un archivio che ha un backup dei dati; ad esempio, se si mappa un'immagine in memoria, l'immagine sarebbe sia in memoria che sul disco; quindi, non ha senso calcolare quell'immagine come utilizzo della memoria dato che puoi sempre accedervi dal disco quando necessario in condizioni di memoria elevata.
Cosa sono i cumuli di memoria e a cosa servono?
Conosciuto come pool paginato e non paginato ...
I thread di sistema dal kernel non hanno uno spazio di indirizzi come i processi; quindi, devono allocare qualsiasi memoria dinamica nei cumuli di memoria del sistema operativo, questo è principalmente formato dal pool di paging o non di paging.
Il pool di paging è costituito da memoria virtuale che può essere paginata dentro e fuori dal sistema. I driver di dispositivo che non devono accedere alla memoria a un livello di invio basso (una priorità più elevata) possono utilizzare liberamente i pool di paging.
Il pool non di paging è costituito da memoria virtuale che è garantita per risiedere sempre nella memoria fisica e quindi è possibile accedervi in qualsiasi momento senza incorrere in un errore di pagina. I driver di dispositivo che devono accedere alla memoria a un livello di invio inferiore DEVONO utilizzare il pool non di paging per garantire che i dati siano accessibili in quanto le chiamate I / O non sono disponibili a quel punto, esiste comunque principalmente un codice critico a questo livello ...
Questi pool hanno dimensioni minime e massime, sono determinati da un piccolo procent della RAM disponibile. Mentre possono crescere, tieni presente che non supereranno un certo precent della RAM disponibile. Mentre il pool non di paging è piuttosto solido dato che è solo per la memoria più critica, il pool di paging si estenderà nel file di paging.
Questo è uno dei problemi più controllati quando le persone disabilitano il loro file di paging. Tra gli altri problemi di stabilità e prestazioni , che vale sicuramente la pena verificare se hai disabilitato il file di paging.
- Fonte : estratti del libro di Windows Internals riscritti in un testo comprensibile.