Processus légers
(threads)
Objectif : Avoir plusieurs processus qui partagent le même
espace d'adressage.
Principe : Des processus légers sont des "copies" (ou instantiations)
d'un même processus avec leur propre compteur ordinal et leur pile
mais ils partagent l'espace d'adressage, les fichiers, les processus fils,
etc. Quand un processus léger se bloque, un autre processus léger
(instance) du même processus peut s'exécuter.
- Threads utilisateurs: Dans ce cas les threads ne sont pas "vus".
Les threads ne sont pas des processus à part entière
mais des instanciations d'un même processus. De fait, ils sont transparents
pour l'ordonnanceur qui lui ne "voit" qu'un seul processus.
- Threads noyau: Les threads ont une existence dans le noyau.
Ils sont vus par le système et donc par l'ordonnanceur qui les voient
comme des processus différents.
Contrainte: L'accès à
la mémoire partagée (accès critique car partagé)
est à la charge du programmeur.
Exemple du serveur de fichier:
Sans processus légers: Un serveur de fichier traite des demandes déposées
dans un tampon par des clients. Si le serveur ne peut accéder à
un fichier pour servir une requète d'un client il se bloquera et
plus aucune requête ne pourra être satisfaite tant que le serveur
reste bloqué.
Avec processus légers: Si un processus
léger serveur se bloque, un autre peut être actif pour traiter
la requête suivante (ils partagent le même tampon).
suivant
plan