1. Fil directeur
La semaine 04 déplace l’unité d’exécution du processus vers le thread. Le processus demeure le conteneur de l’espace d’adressage et des ressources; plusieurs threads peuvent toutefois porter chacun leur propre contexte CPU à l’intérieur de ce même conteneur. Le partage direct du code, du tas, des globales et des fichiers rend les communications moins coûteuses qu’entre processus, mais élimine une partie de l’isolation qui protégeait les participants les uns des autres.
La progression suit quatre questions.
- Que possède un thread? Une pile, des registres, un compteur ordinal, un identifiant et un état d’ordonnancement.
- Comment le programmer? L’API POSIX crée des travailleurs avec
pthread_createet exprime une dépendance de terminaison avecpthread_join. - Qui gère les threads? Une bibliothèque utilisateur, le noyau ou une combinaison des deux peut conserver les TCB et prendre les décisions d’ordonnancement.
- Quel est le coût du partage? Les accès non coordonnés aux données mutables produisent des conditions de concurrence. Les pools et OpenMP simplifient la gestion, mais ne rendent pas automatiquement le programme sûr.
Le cours 07 termine le module Threads puis amorce le module Concurrence. Les exemples du spouleur et du compteur partagé montrent pourquoi la simple création de threads ne suffit pas : il faut aussi définir la propriété des données et protéger les sections critiques.
Les activités pratiques ajoutent deux perspectives. Une courte activité fait comparer fork et pthread, tandis qu’un laboratoire historique fait parcourir toute la chaîne d’un appel système. L’enregistrement du vendredi poursuit plutôt les commandes Unix, les pipelines et Bash; il est inclus parce qu’il appartient officiellement à la semaine, sans être présenté comme une extension théorique des threads.