Comment Linux gère les threads et l'ordonnancement des processus

J'essaie de comprendre comment Linux gère l'ordonnancement des processus et l'ordonnancement des threads. J'ai lu que Linux peut programmer à la fois les processus et les threads.

Linux a-t-il un planificateur de thread et un planificateur de processus? Si oui, comment font-ils coopérer?

22
demandé sur codeforester 2011-12-11 15:50:55

3 réponses

noyau Linux planificateur est en fait programmer des tâches, et ce sont soit des threads ou des processus (mono-threadés).

tâche (task_struct à l'intérieur du noyau), dans le contexte de l'ordonnanceur, est la chose qui est programmée, et peut être un thread du noyaukworker ou thread d'un processus multithread (comme firefox), ou le fil simple d'un single-threaded processus (bash), avec celui processus monothread.

processus est un ensemble fini non vide (parfois un singleton) de threads partage le même l'espace d'adresse virtuelle (et d'autres choses comme descripteurs de fichiers,répertoire de travail, etc etc...). Voir aussi informations d'identification(7),capabilities (7) etc....

les Threads sur Linux sont threads de noyau (dans le sens d'être géré par le noyau, qui crée aussi ses propres threads), créé par le spécifique Linux clone syscall (qui peut aussi être utilisé pour créer des processus sous Linux). pthread_create la fonction est probablement construit (sur Linux) ci-dessus clone à l'intérieur NPTL et Gnu Libc (qui a intégré NPTL sur Linux) et musl-libc.

34
répondu Basile Starynkevitch 2017-04-11 10:15:28

les threads du noyau sous Linux sont implémentés comme des processus qui partagent des ressources. L'ordonnanceur ne fait pas de différence entre un thread et un processus

Voir ici pour plus d'informations: http://www.linuxquestions.org/linux/articles/Technical/Linux_Kernel_Thread

22
répondu nurio 2011-12-11 12:05:02

sous LINUX il n'y a pas de concept de threads,pour faire Linux le thread plainte POSIX n'est rien d'autre qu'un autre processus.lorsque vous essayez d'obtenir un ID de processus, il afficherait l'id de processus leader sous n'importe quel thread. Pour plus de détails, référez-vous à ce livre "Comprendre le noyau LINUX".L'espoir

-3
répondu kiran 2014-12-04 14:00:43