2. Processus, threads et état d’exécution

Trois threads de travail attendent pendant le relevé ps -L. Avec le thread principal, quatre lignes apparaissent.
- Le PID reste identique sur toutes les lignes.
- Les TID distinguent les threads noyau observés; le thread principal porte ici un TID égal au PID.
Lire la capture en texte
3 threads de travail + thread principal
ps -L -o pid,tid,stat,comm -p <PID>
PID TID STAT COMMAND
385 385 Ssl+ python3
385 738 Ssl+ python3
385 739 Ssl+ python3
385 740 Ssl+ python3Démonstration Station Minuit · Ubuntu 24.04 / WSL2 · Python 3 · 15 octobre 2026 (Toronto). Sortie réelle remise en page et capturée; exemple ajouté, distinct du matériel officiel.
2.1 Le processus comme conteneur
Un processus regroupe un espace d’adressage, du code, des données, un tas, des fichiers ouverts et des structures gérées par le noyau. Son PCB (Process Control Block) représente cette entité auprès du système : identité, ressources, mémoire, état et informations d’ordonnancement.
Créer plusieurs processus procure une isolation forte, mais implique davantage de structures et une communication explicite, par exemple par mémoire partagée, tube, fichier ou réseau. Une application dont les activités manipulent les mêmes objets peut éviter une partie de ce coût en créant plusieurs threads dans un même processus.
2.2 Le thread comme flot d’exécution
Un thread est un chemin d’exécution interne au processus. Les threads du même processus partagent :
- le code;
- les variables globales et statiques;
- le tas;
- les fichiers ouverts et plusieurs autres ressources du processus;
- le même espace d’adressage.
Chaque thread possède toutefois :
- un identifiant;
- un compteur ordinal;
- ses registres;
- une pile propre;
- un état d’ordonnancement et éventuellement une priorité.
Le TCB (Thread Control Block) conserve ce contexte individuel. Il est généralement plus petit qu’un PCB; créer, terminer ou commuter entre des threads peut donc coûter moins cher que les opérations correspondantes entre processus.
Cette économie a une contrepartie : un pointeur invalide, une écriture hors limites ou une modification incorrecte du tas peut corrompre tout le processus. Les threads ne sont pas protégés les uns des autres par des espaces d’adressage distincts.
2.3 États
Comme un processus, un thread peut être :
| État | Signification |
|---|---|
| Actif | Il exécute actuellement des instructions sur un processeur. |
| Prêt | Il pourrait progresser, mais attend qu’un processeur lui soit attribué. |
| Bloqué | Il attend un événement, une E/S, une ressource ou la fin d’une autre opération. |
La différence entre prêt et bloqué demeure essentielle : donner immédiatement un CPU à un thread bloqué ne lui permettrait pas de continuer.
Le contour extérieur représente un seul processus, son PCB et son espace d’adressage. A et B accèdent au code, aux globales/statiques, au tas et aux fichiers ouverts communs. Chaque TCB représente ses propres registres, compteur ordinal, pile, identifiant et état d’ordonnancement. Les traits relient les deux contextes aux ressources communes; ils ne mesurent ni temps ni ordre d’exécution. Les piles sont propres à leur flot mais appartiennent au même espace d’adressage : un pointeur peut être transmis à un autre thread, sous réserve de durée de vie et d’accès synchronisés. Deux threads ne prouvent ni deux cœurs disponibles ni une exécution simultanée.
Source : 04 - Threads/SOMMAIRE_MAITRE_SEMAINE_04.md · §2.1–2.3 et §3.2; schéma original du portail, relu le 15 octobre 2026. Précision espace partagé : POSIX.1-2024, chapitre 2.