Station MinuitPortail personnel de révision

IFT-2001 — Systèmes d’exploitationAutomne 2026

Semaine 4 — Threads

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

LECTURE 05 / 194 repères · 1 captureSynthèse avec omissions acceptées

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

Sur le terrain / Capture LinuxS04-THREADS
Un processus, plusieurs identités de thread. Le PID reste identique sur toutes les lignes.
Un processus, plusieurs identités de thread

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+ python3

Dé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 :

Tableau 1 — État · Signification
É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.

Un processus, deux contextes de threadLe 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.Un processus : espace d’adressage commun / PCBPARTAGÉS : code, globales / statiques, tasFichiers ouverts et ressources du processusThread A / TCB ARegistres + compteur ordinalPile propre + identifiantÉtat d’ordonnancementThread B / TCB BRegistres + compteur ordinalPile propre + identifiantÉtat d’ordonnancementUne pile propre ne crée pas une mémoire protégée des autres threads.
Un processus, deux contextes de thread

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.

Retour au sommaire de l’unitéHaut de page
Récupérer manuellement les données locales

Copier séparément les données ci-dessous dans des fichiers texte avant de fermer la page ou de modifier le stockage. Une valeur illisible ou incompatible reste en place. Aucun effacement ni rétablissement écrasant n’est effectué automatiquement. L’export/import JSON est disponible sur la page Progression du cours. Cette récupération séparée reste utile pour une valeur brute ou un conflit.

Clé de ce cours : . Format v1 porté par cette clé; dates UTC et identifiants durables.

Si l’accès est refusé, la valeur persistée peut rester inaccessible. Réautoriser le stockage dans le navigateur puis rouvrir ce cours permet de la relire. Une réinitialisation exige une décision explicite après récupération; aucune commande de suppression n’est proposée ici. Les données restent sur cette origine et cet appareil, sans transfert automatique.