Cos'è un Process Image in Linux?
In Linux, un process image è il layout completo della memoria virtuale di un processo in esecuzione—uno spazio di indirizzo contiguo (dalla prospettiva del processo) contenente tutto ciò che serve per l'esecuzione.
Segmenti di un Process Image
| Segmento | Contenuto | Permessi |
|---|---|---|
| Text (Codice) | Istruzioni eseguibili (ELF .text), librerie condivise di sola lettura | r-x |
| Data | Globali/statici inizializzati (.data), non inizializzati (.bss) | rw- |
| Heap | Allocazioni dinamiche (malloc, new); cresce verso l'alto | rw- |
| Memory Mappings | Librerie condivise (libc, ecc.), file mmap, vDSO, vsyscall | r--, r-x, rw- |
| Stack | Frame di funzione, variabili locali, indirizzi di ritorno; cresce verso il basso | rw- |
| Kernel | Riservato (top 1 GiB su x86_64); inaccessibile da user mode | --- |
Ciclo di Vita
- Creazione:
fork()duplica l'immagine del genitore;execve()la sostituisce con un nuovo programma (carica ELF, mappe librerie, imposta stack). - Runtime: heap/stack si espandono;
mmap/munmapaggiungono/rimuovono mappe; ASLR randomizza gli indirizzi base. - Terminazione:
exit()rilascia tutte le pagine, chiude file, segnala il genitore.
Strumenti di Ispezione
cat /proc/– mappa memoria./maps pmap -x– RSS, dirty, swap dettagliati.gdb/perf– debug/profiling all'interno dell'immagine.coredumpctl– snapshot immagine post-mortem.
L'astrazione del process image isola i processi, abilita la memoria virtuale e sottende la sicurezza e il multitasking di Linux.