Pascale
Les différents modèles de multithreading sont les suivants :
Modèle plusieurs-à-un
Dans le modèle
plusieurs-à-un, de nombreuses bandes de roulement au niveau utilisateur sont mappées sur un seul thread de noyau. Il est efficace car il est implémenté dans l'espace utilisateur. Un processus utilisant ce modèle être entièrement bloqué si un thread effectue un appel système bloquant. Un seul thread peut accéder au noyau à la fois, il ne peut donc pas être exécuté en parallèle sur un multiprocesseur.
Modèle un-à-un
Figure : Modèle
un-à-un
Dans ce modèle, chaque thread utilisateur est mappé à un thread du noyau. Il fournit plus de simultanéité car il permet à un autre thread de s'exécuter lorsqu'un thread effectue un appel système bloquant. Il facilite le parallélisme en multiprocesseur. Chaque thread utilisateur nécessite un thread noyau, ce qui peut affecter les performances du système. La création de threads dans ce modèle est limitée à un certain nombre. Ce modèle est utilisé par Windows NT, Windows 2000 et OS/2.
Modèle homme-à-plusieurs
Ce modèle multiplexe de nombreux threads de niveau utilisateur vers un nombre plus petit ou égal de threads de noyau. Le nombre de threads du noyau peut être spécifique à une application particulière ou à une machine particulière. L'utilisateur peut créer n'importe quel nombre de threads utilisateur et les threads du noyau correspondants peuvent s'exécuter en parallèle sur un multiprocesseur. Lorsqu'un thread effectue un appel système bloquant, le noyau peut exécuter un autre thread. Il est utilisé par Solaris 2, IRIX et Tru64.