Phil Bull
philbull@gmail.com 2011
Michael Hill
mdhillca@gmail.com 2011, 2014
Visualizzare la mappa di memoria di un processo.
Davide Ferracin
davide.ferracin@protonmail.com 2022

# Usare le mappe di memoria

La memoria virtuale è una rappresentazione della combinazione della memoria fisica e dello spazio di swap in un sistema. Permette ai processi in esecuzione di accedere a più della memoria fisica esistente, mappando le posizioni in essa su dei file sul disco. Quando al sistema servono più pagine di memoria di quante ne abbia a disposizione, alcune delle pagine esistenti vengono spostate nello spazio di swap (in inglese si dice che vengono «paged out»).

La mappa di memoria mostra la memoria virtuale complessiva usata dal processo, e può essere usata: per determinare il costo in termini di memoria dell'eseguire un'istanza singola piuttosto che multipla del programma, per assicurarsi di stare usando le librerie condivise corrette, di vedere gli effetti di aver regolato qualche parametro sulle prestazioni, e per diagnosticare problemi come le falle di memoria.

Per visualizzare la mappa di memoria di un processo:

Fare clic sulla scheda Processi.

Fare clic destro sul processo desiderato nella lista dei processi.

Fare clic su Mappe memoria.

# Leggere le mappe di memoria

Gli indirizzi sono mostrati in esadecimale (base 16).

Le dimensioni sono mostrati con i prefissi binari della IEC.

Durante l'esecuzione, il processo può allocare dinamicamente ulteriore memoria in un'area chiamata heap, e immagazzinare argomenti e variabili in un'altra area chiamata stack.

Il programma stesso e ognuna delle librerie condivise hanno tre voci ciascuno, una per il segmento di testo leggibile ed eseguibile, una per il segmento di dati leggibili e scrivibili e una per il segmento di dati in sola lettura. Entrambi i segmenti di dati, se è necessario l'uso dello swap, vengono spostati nello spazio di swap.

## Proprietà

Nome file | La posizione di una libreria condivisa che è attualmente usata dal processo. Se questo campo è vuoto, le informazioni sulla memoria della riga corrispondente descrivono la memoria posseduta dal processo il cui nome è mostrato sopra alla tabella della mappa di memoria.
Inizio VM | L'indirizzo al quale comincia il segmento di memoria. Inizio VM, Fine VM ed Offset VM specificano, assieme, la posizione sul disco in cui è mappata la libreria condivisa.
Fine VM | L'indirizzo al quale termina il segmento di memoria.
Dimensione VM | La dimensione del segmento di memoria.

Flag

Le seguenti flag descrivono i diversi tipi di accesso al segmento di memoria che può avere il processo:

## p

Il segmento di memoria è riservato al processo, e altri processi non possono accedervi.

## r

Il processo ha il permesso di leggere dal segmento di memoria.

## s

Il segmento di memoria è condiviso con altri processi.

## w

Il processo ha il permesso di scrivere nel segmento di memoria.

## x

Il processo ha il permesso di eseguire istruzioni contenute all'interno del segmento di memoria.

Offset VM | La posizione dell'indirizzo all'interno del segmento di memoria, misurata a partire da Inizio VM.

Privata, condivisa, clean, dirty

Alle pagine private accede un solo processo

Alle pagine condivise possono accedere più processi

Le pagine clean non sono ancora state modificate da quando sono in memoria, e possono essere scartate al momento dello spostamento nello spazio di swap.

Le pagine dirty sono state modificate da quando sono in memoria, e devono essere trascritte sul disco al momento dello spostamento nello spazio di swap.

Device | Il major number e minor number del device sul quale si trova il nome del file della libreria condivisa. Presi assieme, specificano una partizione del sistema.
Inode | L'inode sul device dal quale la libreria condivisa è caricata in memoria. Un inode è la struttura che il file system usa per archiviare un file, e il numero assegnato ad esso è univoco.