Qu'est-ce qu'un thread utilisateur et un thread noyau?

13

Je sais ce qu'est un thread et je sais comment ils fonctionnent, mais je suis assez confus quant à ce qu'est un thread utilisateur et un thread noyau en termes de ce qu'ils sont autorisés à faire.

Pouvez-vous préciser ce qu'un thread utilisateur peut faire et ce qu'un thread noyau peut faire?

Fasih Khatib
la source
1
Cette question a déjà été répondue sur SO: stackoverflow.com/questions/5957570/kernel-space-vs-user-space
Shadok
Eh bien, la question a été posée mais pas correctement répondu. Tout ce qui a été répondu à partir des 5 ou 6 questions posées par la personne concernait l'espace utilisateur et l'espace noyau.
Fasih Khatib
1
Je pense que la définition de Dave Rager est concise et précise: "L'espace noyau et l'espace utilisateur sont la séparation des fonctions privilégiées du système d'exploitation et des applications utilisateur restreintes."
Shadok

Réponses:

13

Un thread du noyau, parfois appelé LWP (Lightweight Process) est créé et planifié par le noyau. Les threads du noyau sont souvent plus chers à créer que les threads utilisateur et les appels système pour créer directement les threads du noyau sont très spécifiques à la plate-forme.

Un thread utilisateur est normalement créé par une bibliothèque de threads et la planification est gérée par la bibliothèque de threads elle-même (qui s'exécute en mode utilisateur). Tous les threads utilisateur appartiennent au processus qui les a créés. L'avantage des threads utilisateur est qu'ils sont portables. La différence majeure peut être observée lors de l'utilisation de systèmes multiprocesseurs, les threads utilisateur entièrement gérés par la bibliothèque de threads ne peuvent pas être exécutés en parallèle sur les différents CPU, bien que cela signifie qu'ils fonctionneront correctement sur les systèmes à processeur unique. Étant donné que les threads du noyau utilisent le planificateur du noyau, différents threads du noyau peuvent s'exécuter sur différents CPU. De nombreux systèmes implémentent le threading différemment,

Un modèle de thread plusieurs-à-un mappe de nombreux processus utilisateur directement sur un thread du noyau, le thread du noyau peut être considéré comme le processus principal. Un modèle de thread un à un mappe chaque thread utilisateur directement sur un thread du noyau, ce modèle permet un traitement parallèle sur les systèmes multiprocesseurs. Chaque thread du noyau peut être considéré comme un VP (processus virtuel) géré par le planificateur.

Source: Réponses

Vous pouvez également trouver des informations dans wikipedia chapitre 3 - 3 Processus, threads du noyau, threads utilisateur et fibres:

Fil

Jason Paddle
la source
Je ne pense pas que ce soit une bonne idée de copier sans apparemment savoir exactement de quoi il s'agit vraiment et sans connaître complètement la réponse. N'est-ce pas un LWP généralement créé au-dessus d'un thread noyau comme un pont entre ce dernier et le thread utilisateur? De plus, cette réponse est très déroutante car elle continue de changer de terminologie, et à la fin vous ne comprenez pas si, par exemple, un thread du noyau est un processus, etc.
nbro