Sémaphore

Définition, exemples et bonnes pratiques

À retenir

  • C'est un compteur qui gère l'accès aux ressources limitées.
  • Il met en attente les processus quand aucune place n'est disponible.
  • Il permet de protéger l'intégrité des données dans les systèmes complexes.

En programmation, un sémaphore est un outil de synchronisation qui contrôle l'accès de plusieurs processus ou fils d'exécution (threads) à une ressource partagée. On peut le comparer à un compteur de places dans un parking : chaque fois qu'une voiture (un processus) entre, le nombre de places diminue ; si le compteur tombe à zéro, les voitures suivantes doivent attendre qu'une place se libère pour entrer.

Étymologie

Issu du grec sêma (signe) et phoros (qui porte). À l'origine, il désigne un système de communication visuelle (signaux mécaniques ou drapeaux). Dans l'informatique moderne, le terme a été popularisé par le chercheur Edsger Dijkstra au milieu des années 1960 pour résoudre les problèmes de concurrence entre programmes.

Exemples d'usage

  • Gérer l'accès à un groupe de trois imprimantes partagées : le sémaphore autorise trois tâches d'impression simultanées.
  • Limiter le nombre de connexions actives à une base de données pour éviter qu'elle ne ralentisse.
  • Synchroniser deux programmes pour que l'un attende la fin du calcul de l'autre avant de continuer.

Cas d'usage

Ce concept intervient principalement dans la programmation système et le développement d'applications multi-threads (concurrence). Il est indispensable pour éviter les erreurs où plusieurs tâches tentent de modifier la même donnée en même temps, ce qui corromprait le résultat final.

Bonnes pratiques

Il est crucial de toujours libérer le sémaphore (incrémenter le compteur) une fois que la tâche est terminée. Si un programme oublie de le faire, les autres tâches resteront bloquées indéfiniment, un phénomène appelé interblocage (deadlock). Il faut également veiller à bien initialiser la valeur de départ selon le nombre de ressources réelles disponibles.

Synonymes

verrou de synchronisation compteur d'accès

Antonymes

accès libre accès non protégé

Conseil

Pour débuter, imaginez le sémaphore comme un jeton. Si vous avez le jeton, vous travaillez. Si vous n'en avez pas, vous attendez qu'on vous en donne un. Maîtriser les sémaphores est l'étape clé pour comprendre comment fonctionnent les systèmes d'exploitation comme Windows ou Linux.

Questions fréquentes

Quelle est la différence entre un sémaphore et un mutex ?

Un mutex est un cas particulier de sémaphore qui ne permet qu'un seul accès à la fois (compteur à 1), tandis qu'un sémaphore peut autoriser plusieurs accès (compteur supérieur à 1).

Que signifient les opérations P et V ?

Ce sont les noms historiques donnés par Dijkstra : P (proberen) pour tester/décrémenter et V (verhogen) pour incrémenter/libérer le sémaphore.