Threads : Motivation
La plupart des applications modernes sont « multithreadées ».
Les threads s'exécutent au sein de l'application.
Plusieurs tâches de l'application peuvent être implémentées par des threads
distincts.
• Mise à jour de l'affichage.
• Récupération de données.
• Vérification orthographique.
• Réponse à une requête réseau.
La création de processus est lourde, tandis que la création de threads est légère.
Peut simplifier le code et améliorer l'efficacité.
Les noyaux sont généralement « multithreadés ».
07/11/2025 Systèmes d'Exploitation 93
Threads : Motivation
07/11/2025 Systèmes d'Exploitation 94
Threads : Motivation
07/11/2025 Systèmes d'Exploitation 95
Architecture serveur multithread
Processus monothread et multithread
07/11/2025 Systèmes d'Exploitation 96
Processus monothread et multithread
Processus monothread et multithread
07/11/2025 Systèmes d'Exploitation 97
Bénéfice threads
Réactivité – peut permettre une exécution continue si une partie du
processus est bloquée, ce qui est particulièrement important pour les
interfaces utilisateur.
Partage des ressources – les threads partagent les ressources du
processus, ce qui est plus simple que la mémoire partagée ou la
transmission de messages.
Économie – moins cher que la création de processus, le changement de
contexte pour les threads est moins couteux que le changement de
contexte pour les processus.
Passage à l’échelle (Scalability) – le processus peut tirer parti des
architectures multicœurs.
07/11/2025 Systèmes d'Exploitation 98
Exécution simultanée (concurrente) vs. Parallélisme
Exécution simultanée (concurrente) sur un système monocœur :
Parallélisme sur un système multicœur :
07/11/2025 Systèmes d'Exploitation 99
Programmation multicœurs
Les systèmes multicœurs ou multiprocesseurs mettent la
pression sur les programmeurs plutôt que sur le système
d’exploitation. Parmi les défis à relever figurent :
• Division des activités
• Équilibrage
• Fractionnement des données
• Dépendance des données
• Tests et débogage
07/11/2025 Systèmes d'Exploitation 100
Programmation multicœurs
Types de parallélisme
• Parallélisme des données : répartition de sous-ensembles de données
identiques sur plusieurs cœurs, chaque opération étant identique.
• Parallélisme des tâches : répartition des threads sur plusieurs cœurs,
chaque thread effectuant une opération unique.
07/11/2025 Systèmes d'Exploitation 101
Parallélisme de données et parallélisme de tâches
07/11/2025 Systèmes d'Exploitation 102
La loi d’Amdahl
07/11/2025 Systèmes d'Exploitation 103
Threads utilisateur et threads noyau
Threads utilisateur : gestion assurée par la bibliothèque de threads utilisateur
Trois bibliothèques de threads principales :
• Pthreads POSIX
• Threads Windows
• Threads Java
Threads noyau : pris en charge par le noyau
Exemples : pratiquement tous les systèmes d’exploitation à usage général,
notamment :
• Windows
• Linux
• iOS
• Android
07/11/2025 Systèmes d'Exploitation 104
Threads utilisateur et threads noyau
07/11/2025 Systèmes d'Exploitation 105
Modèles multithreading
Plusieurs à un
Un à un
Plusieurs à plusieurs
07/11/2025 Systèmes d'Exploitation 106
Plusieurs à un
Plusieurs threads utilisateur sont mappés sur un seul thread du noyau.
Le blocage d'un thread entraîne le blocage de tous les threads.
Plusieurs threads peuvent ne pas s'exécuter en parallèle sur un système multicœur, car
un seul thread peut être présent simultanément dans le noyau.
Actuellement, peu de systèmes utilisent ce modèle.
07/11/2025 Systèmes d'Exploitation 107
Un à un
Chaque thread utilisateur est mappé à un thread noyau.
La création d'un thread utilisateur crée un thread noyau.
Le nombre de threads par processus est parfois limité en raison de la surcharge.
Exemples :
• Windows
• Linux
07/11/2025 Systèmes d'Exploitation 108
Plusieurs à plusieurs
Permet de mapper plusieurs threads utilisateur à plusieurs threads noyau.
Permet au système d'exploitation de créer un nombre suffisant de threads noyau.
Peu courant.
07/11/2025 Systèmes d'Exploitation 109
Modèle à deux niveaux
Similaire à Plusieurs à plusieurs, sauf qu'il permet à un thread utilisateur d'être lié au
thread du noyau
07/11/2025 Systèmes d'Exploitation 110
Librairies threads
La librairie de threads fournit aux programmeurs une API pour créer et
gérer des threads.
Deux principales méthodes d'implémentation
• Librairie entièrement dans l'espace utilisateur
• Librairie au niveau du noyau prise en charge par le système d'exploitation
07/11/2025 Systèmes d'Exploitation 111
Pthreads
Peut être fourni au niveau utilisateur ou au niveau noyau.
Une API standard POSIX pour la création et la synchronisation de threads.
C’est une Spécification, et non une implémentation.
L'API spécifie le comportement de la bibliothèque de threads ;
l'implémentation dépend du développement de la librairie.
Implémenté par UNIX (Linux).
07/11/2025 Systèmes d'Exploitation 112
Pthreads : Exemple
07/11/2025 Systèmes d'Exploitation 113
Pthreads : Exemple
07/11/2025 Systèmes d'Exploitation 114