[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: threads (Re: Multi xxx)



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


Reply to: