- Conditions de concurrence
-
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
Conditions de concurrence
Dans un contexte multitâche, plusieurs processus sont amenés à accéder à une même ressource. Un exemple classique est l'accès à une zone mémoire commune entre plusieurs threads. Ces situations où plusieurs processus accèdent à une même ressource partagée au même moment sont nommées conditions de concurrence.
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 système 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'incrémenter le pointeur. La page du premier processus ne sera donc pas imprimée.
L'exclusion mutuelle
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 :
- La désactivation des interruptions
- Les moniteurs
- Les verrous
- Les sémaphores
- Les mutex (Version simplifiée des sémaphores)
Voir aussi
Wikimedia Foundation. 2010.