Samuel Landau wrote: > > Pourtant, j'ai cru entendre dire quelque part que les threads > > utilisateurs �taient vu comme des processus par le noyau. On > > m'aurait menti ? > > les threads natifs sont des threads noyau tout ce qu'il y a de > classique, donc le noyau voit bien des processus. ils partagent les > data, et c'est cens� commuter plus vite entre eux qu'entre process > distincts. on les programme avec la librairie pthread, incluse dans la > glibc. et ce n'est pas forc�ment source-portable vers d'autres Un*ces > (qui n'ont peut-�tre pas de threads, ou pas la m�me API).
La librairies pthread incluse dans la glibc est celle de Xavier Leroy. Elle impl�mente les threads POSIX (d'o� le p). Cette interface est portable pourvue que l'autre Unix est aussi une librairie pthread. Pour revenir sur les threads natifs (aka noyaux) et les processus, c'est la m�me chose pour le noyau Linux. Ils sont cr�es soit par la primitive clone(), soit la primitive fork(). Elles appellent toutes les deux la m�me fonction noyau do_fork() qui permet de patager tel ou tel segment, les fichiers ouverts, les handlers de signaux ... (voir CLONE_* dans include/linux/sched.h). En fait, pour Linux, un processus est un thread qui n'a pas de ``fr�re''. -- Edouard G. Parmelan http://egp.free.fr

