Quelle est la différence entre les threads du noyau et des threads utilisateur?
Quelle est la différence entre les threads du noyau et des threads utilisateur? Est-ce que le thread du noyau sont planifié et exécuté en mode noyau? Quelles sont les techniques utilisées pour la création de threads du noyau?
Est-il que l'utilisateur thread est planifié, exécuté en mode utilisateur? Est-ce que le Noyau ne participe pas à l'exécution/l'ordonnancement des threads utilisateur? Lorsque les interruptions se produisent lors de l'exécution de l'utilisateur thread qui s'occupe de ça?
À chaque fois, le thread est créé une PTE est créé pour chaque. maintenant, dans le cas de threads de niveau utilisateur
Est-ce que cette PTE est créé à l'adresse de l'utilisateur de l'espace ?
Dans le cas de la commutation entre les deux threads de niveau utilisateur qui gère la commutation de contexte ?
Il existe un concept de multithreading modèles :
- Beaucoup à un
- Un à un
- De nombreux de Nombreux.
Quels sont ces modèles? Comment sont ces modèles utilisés en pratique?
Avoir lu quelques articles sur ce sujet, mais encore confus
Veut effacer le concept ..
Merci d'avance,
Tazim
OriginalL'auteur tazim | 2011-02-13
Vous devez vous connecter pour publier un commentaire.
Threads du noyau sont privilégiés et peuvent accéder à des choses hors-limites pour le mode utilisateur threads. Jetez un oeil à "Anneau (Sécurité Informatique)" sur Wikipédia. Sur Windows, en mode utilisateur correspond à l'Anneau 3, tandis que le mode noyau correspond à l'Anneau 0.
Ce qui est extrêmement dépendant du système d'exploitation.
La PTE enregistre des informations relatives à un fil que le noyau utilise dans l'exécution de ce thread, non? Donc si il ont été attribués dans l'espace utilisateur, le mode utilisateur thread pourrait les modifier ou de les corrompre, ce qui ne semble pas être une très bonne idée. Donc, ne vous supposez il est créé dans l'espace du noyau?
Wikipedia semble très clair à ce sujet.
veuillez élaborer sur la façon dont quelque chose dans ma réponse est un non sens.
Vous affirmez "thread du noyau = fonctionne entièrement en mode noyau". Ensuite vous expliquer les résultats. Lorsque l'assertion échoue, le reste n'a pas de sens. Donc pas de sens. Autant que je sache, votre description de "thread du noyau" est inexistant dans de nombreux noyaux - au lieu de compter sur les "événements" comme des interruptions à effectuer toutes les tâches en arrière-plan le noyau a besoin de le faire. Certes mes connaissances sur cette zone manque. Je ne vais pas obstacle à ce que le sens de "thread du noyau" est utilisé dans certaines noyau dev cercles, mais des "threads utilisateur ne sera pas exécuté en mode noyau" - appels système sont pris au piège et basculé en mode noyau.
concernant "le reste n'a pas de sens," le reste de ma réponse a été explicitement en référence à threads de niveau utilisateur, comme spécifié dans le prix de la partie de la question d'origine.
OriginalL'auteur Jeff
Wikipedia a les réponses à la plupart, si pas toutes ces questions.
http://en.wikipedia.org/wiki/Thread_(computer_science)
http://en.wikipedia.org/wiki/Thread_(computer_science)#Processes.2C_kernel_threads.2C_user_threads.2C_and_fibers
OriginalL'auteur EmeryBerger
Thread du noyau signifie un thread que le noyau est responsable de la planification. Cela signifie, entre autres choses, que le noyau est capable de planifier chaque thread sur les différents processeurs/cœurs en même temps.
Comment les utiliser varie beaucoup avec les langages de programmation et le filetage Api, mais comme une simple illustration,
Dans l'exécution de chaque je connais, le noyau peut mettre en pause à tout moment. ("préemption")
Threads utilisateur, ou "l'Utilisateur prévu fils", prendre le programme lui-même responsable de la commutation entre eux. Il y a beaucoup de façons de le faire et, en conséquence, il ya une variété de noms.
Sur une extrémité vous avez "fils Verts"; en fait, d'essayer de faire la même chose que les threads du noyau ne. Ainsi, vous gardez toutes les complications de la programmation avec de vrais fils.
Sur l'extrémité opposée, vous avez des "Fibres", qui sont tenus de rendement avant toute autre fibre est exécuté. Cela signifie
Comme l'exemple le plus simple de fibres, que je pense:
où chacun fait un peu de travail, puis retourne lorsque la partie est terminée. Notez que ceux-ci sont fait de manière séquentielle dans le même "thread matériel" signifie que vous n'obtenez pas une augmentation de la performance de parallellism. D'autre part, les interactions entre eux sont très bien définis, de sorte que vous n'avez pas de conditions de course. Le travail effectif de chaque fonction peut varier. Ils pourraient aussi être des "utilisateur thread objets" à partir d'un vecteur/matrice.
Kernel thread means a thread that the kernel is responsible for scheduling.
Pourquoi couldlt il threads s'exécutant dans l'espace du noyau?OriginalL'auteur MaHuJa
Essentiellement de l'utilisateur threads s'exécutent dans le contexte d'un utilisateur avec les privilèges appropriés niveaux, par exemple les threads utilisateur très certainement de ne pas avoir accès au niveau du noyau de la mémoire/structures de données/routines etc. Alors que les threads du Noyau s'exécute dans le contexte du noyau de système d'exploitation et ainsi de leur donner des privilèges pour exécuter du code qui a accès à un niveau faible de routines du noyau/mémoire/structures de données.
OriginalL'auteur LordDoskias