Conditions de concurrence

Un article de Wikipédia, l'encyclopédie libre.

Les conditions de concurrence correspondent aux situations dans lesquelles se retrouvent plusieurs processus tentant d'accéder au même moment à une même ressource partagée ( Fichier, Imprimante, etc... ). Le résultat de telles situations dépend de la manière dont elles sont traitées. En effet, s'il n'y a pas une gestion ad hoc des problèmes que posent les conditions de concurrences il peut en résulter des situations inexpliquées (Fichiers tronqués, attentes d'E/S infinies, etc...)

Sommaire

[modifier] Conditions de concurrence

Dans un contexte multitâche, plusieurs processus sont ammenés à accèder à une même ressource. Un exemple classique est l'accès à une zone mémoire commune entre plusieurs thread. Ces situations où plusieurs processus accèdent à une même ressource partagée au même moment sont nommées conditions de concurrence.

[modifier] Exemple d'accès à une ressource d'impression

Lorsqu'un processus veut imprimer une page, il écrit une entrée dans une liste d'attente et incrémente un pointeur qui pointe vers la prochaine entrée libre. Qu'arrive-t-il si un premier processus entre son entrée et que le systeme d'exploitation décide d'allouer le processeur à un deuxième processus immédiatement après ? Le second processus, s'il demande lui aussi une impression, va écrire son entrée dans la même que celle du premier processus puisque celui-ci n'a pas eu le temps d'incrementer le pointeur. La page du premier processus ne sera donc pas imprimée.

[modifier] L'exclusion mutuelle

Les méthodes de synchronisation

Barrière de synchronisation - Futex - Moniteur

Mutex - Sémaphore - Spinlock

L'exclusion mutuelle est une méthode permettant d'éviter les conditions de concurrence et donc de s'assurer que lorsqu'un processus accède à un élément partagé, les autres processus seront bloqués en attente de la ressource.

Si l'on empêche les processus d'accéder en même temps à la même ressource partagée c’est-à-dire d'entrer dans leur section critique au même moment, les conditions de concurrences sont évitées.

Différents types d'exclusion mutuelle existe :

[modifier] Voir aussi