Page préc.
Les modèles de coopération entre processus
Fin de page Page suiv.
Exclusion mutuelle réalisée par logiciel

Attente active

    Lorsqu'une activité ne peut plus progresser provisoirement, par exemple par manque de ressource, son avancement doit être bloqué. Deux possibilités peuvent être envisagées :     On dit qu'un processus est en attente active lorsqu'il effectue une boucle ne contenant que l'évaluation d'une condition sans action. Alors que, par exemple, une boucle en C++ du type while(--x); n'est pas une attente active, l'instruction while(x); en est une : le processus attend que la condition devienne vraie. A l'évidence, cette condition ne peut évoluer de sa propre initiative, ni grâce à ce processus. Cela suppose donc qu'un autre processus puisse la modifier, donc qu'il devienne lui-même actif. Une attente active est donc du gaspillage du temps CPU, qui n'est utilisable que dans un contexte de multiprocesseur, et/ou seulement pour des temps très courts. Dans le cas d'un monoprocesseur, tout le temps passé par le processus 1 à attendre empêche un autre processus de le débloquer. Nous évoquerons plus loin les techniques de mise en attente passive et réveil d'un processus, évoquées à la fin du chapitre précédent, et mises en œuvre dans tous les mécanismes de synchronisation, réalisés par exemple par les fonctions système Unix wait() et kill(). Dans les exemples suivants, nous n'utiliserons l'attente active que pour des commodités de présentation.


Page préc.
Les modèles de coopération entre processus
Début de page Page suiv.
Exclusion mutuelle réalisée par logiciel
Dernière mise à jour : 11/10/2001