Quelle est la différence entre légèreté des processus et des threads?
J'ai trouvé une réponse à la question ici. Mais je ne comprends pas certaines idées dans la réponse. Par exemple, le processus léger est dit à partager son adresse logique de l'espace avec d'autres processus. Ça veut dire quoi? Je peux comprendre la même situation avec 2 fils: deux d'entre eux partagent un espace d'adressage, de sorte que les deux d'entre eux peuvent lire toutes les variables de segment bss (par exemple). Mais nous avons beaucoup de différents processus avec différents bss sections et je ne sais pas comment partager tous.
Possible dup de stackoverflow.com/questions/200469/...
Vous semblez être très confus au sujet de certains concepts. Je vous suggère d'abord la recherche de la définition de threads et de processus.
Je comprends la différence entre les processus et les threads, très clairement. Le problème est avec la compréhension de processus légers.
Je l'ai trouvé et compris (dans "Comprendre le noyau Linux").
Bien Sûr @Allok. Il y avait quelques détails à propos de processus légers sur cette page.
Vous semblez être très confus au sujet de certains concepts. Je vous suggère d'abord la recherche de la définition de threads et de processus.
Je comprends la différence entre les processus et les threads, très clairement. Le problème est avec la compréhension de processus légers.
Je l'ai trouvé et compris (dans "Comprendre le noyau Linux").
Bien Sûr @Allok. Il y avait quelques détails à propos de processus légers sur cette page.
OriginalL'auteur Allok | 2012-05-07
Vous devez vous connecter pour publier un commentaire.
À partir de MSDN, Les Threads et les Processus:
OriginalL'auteur IAbstract
Je ne suis pas sûr que les réponses sont correctes, ici, permettez-moi donc de poster ma version.
Il y a une différence entre les processus de LWP (processus léger) et de l'utilisateur thread. Je vais laisser le processus de définition de côté puisque c'est plus ou moins connus et de se concentrer sur
LWP vs user threads
.LWP est essentiellement ce que l'on appelle aujourd'hui les threads. À l'origine, l'utilisateur thread signifiait un thread qui est géré par l'application elle-même et le noyau ne sait rien à ce sujet.
LWP, d'autre part, est une unité de la planification et de l'exécution par le noyau.
Exemple:
Supposons que le système a 3 autres processus en cours d'exécution et de planification est de round-robin, sans priorités. Et vous avez 1 processeur/core.
Option 1. Vous avez 2 threads utilisateur à l'aide de l'un LWP. Cela signifie qu'à partir de l'OS de la perspective que vous avez UNE unité de planification. Totalement il y a 4 LWP en cours d'exécution (3 + 1 le vôtre). Votre LWP obtient 1/4 du total des temps CPU et puisque vous avez 2 threads utilisateur, chacun d'eux se 1/8 du total des temps CPU (en fonction de votre mise en œuvre)
Option2. Vous avez 2 LWP. À partir de l'OS de la perspective, vous avez DEUX de la planification d'unités. Totalement il y a 5 LWP en cours d'exécution. Votre LWP obtient 1/5 du total des temps CPU CHACUN et votre application de 2/5 de la CPU.
Un autre rugueuse différence - LWP a pid (process id), les threads utilisateur ne le font pas.
Pour une raison quelconque, naming eu peu foiré et nous nous référons à la LWP que les threads.
Il y a certainement plus de différences, mais s'il vous plaît, référez-vous à diapositives.
http://www.cosc.brocku.ca/Offerings/4P13/slides/threads.ppt
EDIT:
Après l'affichage, j'ai trouvé un bon article qui explique tout en détail et en mieux l'anglais que j'écris.
http://www.thegeekstuff.com/2013/11/linux-process-and-threads/
OriginalL'auteur Tigran
De l'OMI, LWP est un noyau fil de liaison qui peut être créée et exécutée dans le contexte de l'utilisateur.
Si je ne me trompe pas, vous pouvez joindre utilisateur fils à un seul LWP pour augmenter potentiellement le niveau de la concurrence sans la participation d'un appel système.
OriginalL'auteur stdout
Thread est fondamentalement tâche qui lui est assignée, avec un seul objectif et suffisamment d'informations pour effectuer une tâche spécifique .
Un processus peut créer plusieurs threads pour faire son travail aussi vite que possible.
e.g Une partie de programme peut avoir besoin d'entrée et de sortie, une partie peut avoir besoin d'autorisations.
Niveau de l'utilisateur thread sont celles qui peuvent être traitées par la bibliothèque de threads.
D'autre part niveau du noyau de filetage (qui doit traiter avec hadrware)sont aussi appelés LWP(lumière du poids), afin de maximiser l'utilisation du système, et donc le système ne s'arrêtera pas sur un seul système d'appel.
OriginalL'auteur arslan ahmed mir
Les Threads s'exécutent dans les processus.
Chaque processus peut contenir un ou plusieurs threads.
Si le noyau ne sait rien sur les threads s'exécutant dans le même processus, nous avons threads en cours d'exécution sur l'espace utilisateur et donc pas de multitraitement fonctionnalités sont disponibles.
D'autre part, nous pouvons avoir des threads en cours d'exécution sur l'espace du noyau, ce qui signifie que chaque processus s'exécute sur un PROCESSEUR différent. Cela nous permet de multitraitement, mais comme vous l'avez peut supposer qu'il est plus coûteux en termes de ressources du système d'exploitation.
Enfin, il y a une solution qui se situe quelque part au milieu, nous le groupe de fils ensemble dans LWP. Chaque groupe s'exécute sur un PROCESSEUR différent, mais les fils dans le groupe ne peut pas être multi-traitées. C'est parce que le noyau de cette version sait uniquement sur les groupes (qui sont multiprocessed) mais rien sur les threads qu'ils contiennent.
J'espère que c'est assez clair.
OriginalL'auteur gdaras
Un processus contient un ou plusieurs threads et un thread peut faire tout ce qu'un processus peut faire. Aussi des discussions au sein d'un processus partagent le même espace d'adressage en raison de laquelle le coût de la communication entre les threads est faible, car c'est à l'aide de la même section de code, de données de la section de l'OS et de ressources, de sorte que ces toutes les fonctionnalités de fil en fait un "processus léger".
OriginalL'auteur Piyush Chandra
De ici.
Chaque LWP est un noyau de ressources dans le noyau de la piscine, et est attaché et détaché d'un thread par thread. Cela se produit car les fils sont programmées ou créés et détruits.
OriginalL'auteur jok
Basé sur Tanenbaum du livre "Distribue des Systèmes", poids léger processus est généralement appelé une forme hybride au niveau de l'utilisateur thread et au niveau du noyau du fil. Un LWP s'exécute dans le contexte d'un processus unique, et il peut y avoir plusieurs LWPs par processus. En outre, chaque LWP peuvent être en cours d'exécution qui lui est propre (au niveau de l'utilisateur) thread. Applications Multi-thread sont construits par la création de threads (avec fil paquet de bibliothèque), et par la suite en assignant à chaque thread à un LWP.
Le plus grand avantage de l'utilisation de cette approche hybride est que la création, la destruction et à la synchronisation des threads est relativement bon marché et n'ont pas besoin de noyau d'intervention. A côté de cela, à condition qu'un processus est assez LWPs, un système de blocage d'appel ne suspend pas l'ensemble du processus.
OriginalL'auteur khesam109