2. Programme, processus et espace d'adressage
2.1 Programme contre processus
Un programme est une entité passive : un fichier exécutable ou un ensemble d'instructions stocké. Un processus est une instance active de ce programme, avec un état CPU, de la mémoire, des ressources et un identifiant. Deux lancements du même exécutable créent normalement deux processus distincts.
Le processus peut être vu comme une photographie évolutive de l'exécution :
- le compteur ordinal désigne la prochaine instruction;
- les registres contiennent les opérandes, résultats intermédiaires et données de contrôle;
- la mémoire contient le code et les données du programme;
- le noyau conserve les métadonnées nécessaires à la gestion de l'ensemble.
Cette distinction évite une confusion fréquente : le fichier exécutable ne « s'exécute » pas tout seul. Le chargeur et le noyau créent une entité d'exécution à partir de lui.
2.2 Organisation logique de la mémoire
L'espace d'adressage d'un processus comprend typiquement :
| Zone | Rôle |
|---|---|
| Texte | Instructions binaires du programme; généralement non modifiables |
| Données | Variables globales et statiques |
| Tas | Allocations dynamiques produites notamment par malloc ou new |
| Pile | Paramètres, variables locales, adresses de retour et registres sauvegardés des appels de fonctions |
| Zones mappées | Bibliothèques partagées, fichiers mappés et autres régions selon le système |
La pile croît par cadres d'appels. Une récursion non bornée peut l'épuiser. Le tas répond à des durées de vie plus souples, mais exige un mécanisme de libération ou de collecte.
L'espace d'adressage est une vue logique privée. Le système empêche normalement un processus d'écrire directement dans la mémoire d'un autre. Cette isolation protège les données et les informations de contrôle comme les adresses de retour. Elle ne signifie pas que toute page physique est nécessairement unique : le noyau peut partager des pages tant que le comportement observable reste celui de mémoires indépendantes.