6. Threads utilisateur, noyau et modèles hybrides
6.1 Gestion en espace utilisateur
Une bibliothèque du processus conserve les TCB et choisit le prochain thread. Le noyau voit le processus ou un ensemble plus petit d’entités exécutables, mais pas nécessairement chaque travailleur.
Avantages :
- création et commutation rapides;
- absence de transition noyau pour plusieurs opérations;
- politique d’ordonnancement adaptée à l’application;
- possibilité d’offrir des threads au-dessus d’un noyau moins riche.
Limites :
- un appel système bloquant peut immobiliser tous les threads utilisateur associés à la même entité noyau;
- le noyau ne peut pas préempter individuellement ce qu’il ne connaît pas;
- le rendement peut dépendre d’une coopération volontaire;
- un modèle plusieurs-à-un ne peut pas employer plusieurs cœurs pour les threads du même processus.
6.2 Gestion par le noyau
Le noyau connaît chaque thread, conserve son TCB, le préempte et l’ordonnance indépendamment. Si un thread bloque, un autre thread du processus peut progresser. Plusieurs travailleurs peuvent être placés sur plusieurs cœurs.
Cette visibilité exige davantage de structures noyau et d’appels système. Le coût par opération est supérieur à celui d’une commutation purement utilisateur. Dans l’environnement présenté au cours, les pthread se comportent comme des threads noyau; cette implantation ne doit pas être généralisée à toute bibliothèque ou tout système historique.
6.3 Correspondances
| Modèle | Correspondance | Blocage | Multicœur interne | Coût et contrôle |
|---|---|---|---|---|
| Plusieurs-à-un | Plusieurs threads utilisateur → un thread noyau | Peut bloquer tout le groupe | Non | Très léger côté utilisateur, contrôle applicatif élevé |
| Un-à-un | Un thread utilisateur → un thread noyau | Indépendant | Oui | Plus de ressources noyau; limite possible sur le nombre de threads |
| Plusieurs-à-plusieurs | Plusieurs threads utilisateur → plusieurs threads noyau | Réparti entre les entités noyau | Oui | Flexible, mais implantation complexe |
| Deux niveaux | Plusieurs-à-plusieurs avec liaison facultative | Comme M:N, avec garanties ciblées | Oui | Certains threads peuvent être attachés à un thread noyau précis |
Le modèle à deux niveaux convient lorsqu’une activité particulière exige une progression ou une politique plus prévisible, tandis que les autres restent multiplexées.