Réalisons un come back à l’époque de la naissance de l’informatique, il n’était alors possible que de réaliser une seule action à la fois! Pas question de penser à écouter de la musique en écrivant un texte. Cela relevait du mythe…
Heureusement pour nous, de nombreux systèmes ont été créés depuis afin de permettre à
plusieurs programmes de fonctionner en parallèle sur une même machine. Des procédés ont
également dû être inventés pour permettre la synchronisation entre ces programmes, ainsi que le contrôle d’accès aux ressources ou à la mémoire partagée.
L’ensemble de ces systèmes sont généralement regroupé sous la famille des IPC « Inter-
Process Communication » , autrement dit : la communication inter-processus.
Avec cette multiplication de processus, un problème est bien vite arrivé : quel processus est
prioritaire? Quand doit-il mourir? Qui décide de son état? C’est alors que de nouveaux termes sont apparus dans ce milieu car il fallait, en effet, inventer de nouvelles règles et mettre à disposition de nouveaux outils pour les développeurs. 3 nouveaux mécanismes sont apparus :
- Les signaux : ils correspondent à la commande « kill ». Un signal peut, par exemple, être envoyé à un processus si il tente d’accéder un une zone mémoire défendue.
- Les verrous : ils permettent d’interdire à un processus une opération telle qu’une écriture ou une lecture sur un fichier.
- Les sémaphores : ce sont de véritables « outil à tout faire » ils permettent de limiter un accès à une zone mémoire définie par le développeur. Nous nous y intéresseront principalement dans la suite de ce projet.
Concrètement, un sémaphore peut être vu comme un drapeau, chaque processus qui l’utilise
peut le prendre. Lorsqu’un processus détient ce drapeau, il détient les droits sur la zone
protégée par celui-ci. Les autres processus sont alors mis en sommeil le temps de remettre le
drapeau en jeu.
Vous voulez en savoir plus? Les sémaphores sur Wikipedia (en)

