Qu'est-ce qu'une image de processus sous Linux ?
Sous Linux, une image de processus est la disposition complète de la mémoire virtuelle d'un processus en cours d'exécution – un espace d'adressage contigu (du point de vue du processus) contenant tout le nécessaire à l'exécution.
Segments d'une image de processus
| Segment | Contenu | Permissions |
|---|---|---|
| Text (Code) | Instructions exécutables (ELF .text), bibliothèques partagées read-only | r-x |
| Data | Globales/statiques initialisées (.data), non initialisées (.bss) | rw- |
| Heap | Allocations dynamiques (malloc, new) ; croît vers le haut | rw- |
| Mappages mémoire | Bibliothèques partagées (libc, etc.), fichiers mmap, vDSO, vsyscall | r--, r-x, rw- |
| Stack | Frames fonctions, variables locales, adresses retour ; croît vers le bas | rw- |
| Kernel | Réservé (haut 1 GiB sur x86_64) ; inaccessible depuis user mode | --- |
Cycle de vie
- Création :
fork()duplique l'image du parent ;execve()remplace par nouveau programme (charge ELF, mappe libs, configure stack). - Exécution : Heap/stack s'étendent ;
mmap/munmapajoutent/suppriment mappages ; ASLR randomise adresses de base. - Terminaison :
exit()libère toutes les pages, ferme fichiers, signale le parent.
Outils d'inspection
cat /proc/– carte mémoire./maps pmap -x– RSS détaillé, dirty, swap.gdb/perf– debug/profile dans l'image.coredumpctl– snapshot image post-mortem.
L'abstraction image de processus isole les processus, active la mémoire virtuelle, et sous-tend la sécurité et le multitâche de Linux.
