Exclusion mutuelle

Définition, exemples et bonnes pratiques

À retenir

  • C'est un garde-fou qui empêche la corruption des données.
  • Elle repose sur un système de verrou (on prend le verrou, on travaille, on relâche le verrou).
  • Seule une entité à la fois peut franchir la barrière de l'exclusion mutuelle.

L'exclusion mutuelle est un procédé de sécurité informatique qui garantit qu'une seule tâche (ou programme) peut accéder à une ressource partagée à la fois. C'est un peu comme une clé unique pour accéder aux toilettes d'un café : tant qu'une personne possède la clé et occupe la pièce, personne d'autre ne peut y entrer afin d'éviter tout conflit.

Étymologie

Le terme est composé de « exclusion » (du latin exclusio, action de mettre à l'écart) et de « mutuelle » (du latin mutuus, qui se fait en retour). En informatique, on utilise très souvent son équivalent anglais sous forme de mot-valise : Mutex (pour MUTual EXclusion).

Exemples d'usage

  • La gestion d'un compte bancaire : si deux retraits se produisent à la microseconde près, le système utilise l'exclusion mutuelle pour traiter le premier, mettre à jour le solde, puis traiter le second.
  • L'écriture dans un fichier texte : pour éviter que deux programmes n'écrivent des caractères mélangés dans le même document, un seul est autorisé à modifier le fichier à un instant T.

Cas d'usage

Ce concept est omniprésent dans la programmation multithread (quand un programme fait plusieurs choses en même temps) et dans les systèmes d'exploitation. On l'utilise pour protéger des variables globales, des bases de données ou des périphériques physiques comme une imprimante.

Bonnes pratiques

Il est crucial de limiter au maximum le temps passé dans la zone « verrouillée » (appelée section critique) pour ne pas ralentir l'ensemble du système. Le piège classique est l'interblocage (deadlock) : deux programmes s'attendent mutuellement pour obtenir une clé que l'autre possède déjà, bloquant ainsi tout le logiciel.

Synonymes

mutex verrou lock synchronisation binaire

Antonymes

concurrence libre accès non restreint

Conseil

Pour bien comprendre, dessinez le flux de votre programme. Si deux flèches pointent vers la même boîte en même temps, vous avez probablement besoin d'une exclusion mutuelle. En programmation moderne, privilégiez les structures de données « thread-safe » qui gèrent souvent ce mécanisme pour vous de manière invisible.

Questions fréquentes

Qu'arrive-t-il si on oublie de lever l'exclusion mutuelle ?

Le programme risque de rester bloqué indéfiniment (freeze), car les autres tâches attendront une libération qui n'arrivera jamais.

Quelle est la différence entre un Mutex et un Sémaphore ?

Un Mutex est un verrou binaire (une seule place), alors qu'un sémaphore peut être vu comme un compteur permettant à un nombre défini de participants (par exemple 3) d'accéder à une ressource simultanément.