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

Répondre à