Qu'est-ce que le Semaphore? Comptage, types binaires avec exemple
โก Rรฉsumรฉ intelligent
Semaphore Dans un systรจme d'exploitation, il s'agit d'une variable entiรจre non nรฉgative partagรฉe entre les threads qui coordonne l'accรจs aux ressources partagรฉes grรขce ร deux opรฉrations atomiques, wait et signal, empรชchant les conditions de concurrence lors de la synchronisation des processus.

Qu'est-ce que le Semaphore?
Semaphore est simplement une variable non nรฉgative et partagรฉe entre les threads. Un sรฉmaphore est un mรฉcanisme de signalisation, et un thread qui attend un sรฉmaphore peut รชtre signalรฉ par un autre thread. Il utilise deux opรฉrations atomiques, 1) Attendre et 2) Signal pour la synchronisation des processus.
Un sรฉmaphore autorise ou interdit l'accรจs ร la ressource, selon la maniรจre dont elle est configurรฉe.
Caractรฉristiques des Semaphore
Voici les caractรฉristiques d'un sรฉmaphore :
- C'est un mรฉcanisme qui peut รชtre utilisรฉ pour assurer la synchronisation des tรขches.
- Il s'agit d'un mรฉcanisme de synchronisation de bas niveau.
- Semaphore contiendra toujours une valeur entiรจre non nรฉgative.
- Semaphore peut รชtre implรฉmentรฉ ร l'aide d'opรฉrations de test et d'interruptions, qui doivent รชtre exรฉcutรฉes ร l'aide de descripteurs de fichiers.
Types d' Semaphores
Les deux types courants de sรฉmaphores sont :
- Compter les sรฉmaphores
- Sรฉmaphores binaires
Compte Semaphores
Ce type dโ Semaphore Utilise un compteur permettant d'acquรฉrir ou de libรฉrer une tรขche ร plusieurs reprises. Si le compteur initial est รฉgal ร 0, le sรฉmaphore de comptage doit รชtre crรฉรฉ dans l'รฉtat indisponible.
Cependant, si le nombre est > 0, le sรฉmaphore est crรฉรฉ dans l'รฉtat disponible et le nombre de jetons dont il dispose est รฉgal ร son nombre.
binaire Semaphores
Les sรฉmaphores binaires sont assez similaires aux sรฉmaphores de comptage, mais leur valeur est limitรฉe ร 0 et 1. Dans ce type de sรฉmaphore, l'opรฉration d'attente ne fonctionne que si le sรฉmaphore vaut 1, et l'opรฉration de signal rรฉussit lorsque le sรฉmaphore vaut 0. Il est plus facile ร implรฉmenter que les sรฉmaphores de comptage.
Exemple de Semaphore
Le programme ci-dessous est une implรฉmentation รฉtape par รฉtape, qui implique l'utilisation et la dรฉclaration d'un sรฉmaphore.
Shared var mutex: semaphore = 1;
Process i
begin
.
.
P(mutex);
execute CS;
V(mutex);
.
.
End;
Attends et Signal Operadans Semaphores
Ces deux opรฉrations sont utilisรฉes pour mettre en ลuvre synchronisation des processus. Le but de cette opรฉration sรฉmaphore est dโobtenir une exclusion mutuelle.
Attendre Operaproduction
Ce type d'opรฉration de sรฉmaphore vous aide ร contrรดler l'entrรฉe d'une tรขche dans la section critique. Cependant, si la valeur de wait est positive, alors la valeur de l'argument wait X est dรฉcrรฉmentรฉe. En cas de valeur nรฉgative ou nulle, aucune opรฉration n'est exรฉcutรฉe. On l'appelle รฉgalement opรฉration P(S).
Une fois la valeur du sรฉmaphore diminuรฉe, qui devient nรฉgative, la commande est maintenue jusqu'ร ce que les conditions requises soient satisfaites.
P(S)
{
while (S<=0);
S--;
}
Signal la vente au dรฉtail h/
Ce type dโ Semaphore L'opรฉration est utilisรฉe pour contrรดler la sortie d'une tรขche d'une section critique. Elle permet d'augmenter la valeur de l'argument de 1, ce qui est notรฉ V(S).
P(S)
{
while (S>=0);
S++;
}
Compte Semaphore vs binaire Semaphore
Voici quelques diffรฉrences majeures entre le comptage et le sรฉmaphore binaire :
| Compte Semaphore | binaire Semaphore |
| Pas d'exclusion mutuelle | Exclusion mutuelle |
| Toute valeur entiรจre | Valeur uniquement 0 et 1 |
| Plus d'un emplacement | Un seul emplacement |
| Fournir un ensemble de processus | Il dispose dโun mรฉcanisme dโexclusion mutuelle. |
Diffรฉrence entre Semaphore contre Mutex
Le tableau ci-dessous compare un sรฉmaphore avec mutex et ce, selon plusieurs paramรจtres :
| Paramรจtres | Semaphore | mutex |
| Mรฉcanisme | C'est un type de mรฉcanisme de signalisation. | C'est un mรฉcanisme de verrouillage. |
| Type de donnรฉes | Semaphore est une variable entiรจre. | Mutex n'est qu'un objet. |
| Modification | Les opรฉrations wait et signal peuvent modifier un sรฉmaphore. | Il n'est modifiรฉ que par le processus susceptible de demander ou de libรฉrer une ressource. |
| La gestion des ressources | Si aucune ressource n'est libre, alors le processus nรฉcessite une ressource qui doit exรฉcuter l'opรฉration d'attente. Il doit attendre que le nombre du sรฉmaphore soit supรฉrieur ร 0. | S'il est verrouillรฉ, le processus doit attendre. Le processus doit รชtre maintenu dans une file d'attente. Il faut y accรฉder uniquement lorsque le mutex est dรฉverrouillรฉ. |
| Fil ร coudre | Vous pouvez avoir plusieurs threads de programme. | Vous pouvez avoir plusieurs threads de programme dans mutex mais pas simultanรฉment. |
| Droit de propriรฉtรฉ | La valeur peut รชtre modifiรฉe par n'importe quel processus libรฉrant ou obtenant la ressource. | Le verrouillage d'un objet est libรฉrรฉ uniquement par le processus qui a obtenu le verrou sur celui-ci. |
| Types | Types d' Semaphore sont des sรฉmaphores de comptage et des sรฉmaphores binaires. | Mutex n'a pas de sous-types. |
| Opรฉration | Semaphore la valeur est modifiรฉe ร l'aide des opรฉrations wait() et signal(). | L'objet Mutex est verrouillรฉ ou dรฉverrouillรฉ. |
| Occupation des ressources | Il est occupรฉ si toutes les ressources sont utilisรฉes et que le processus demandant la ressource effectue l'opรฉration wait () et se bloque jusqu'ร ce que le nombre de sรฉmaphores devienne >1. | Si l'objet est dรฉjร verrouillรฉ, le processus demandant des ressources attend et est mis en file d'attente par le systรจme avant que le verrou ne soit libรฉrรฉ. |
Avantages de Semaphores
Voici les avantages/avantages de lโutilisation Semaphore:
- Il permet ร plusieurs threads d'accรฉder ร la section critique.
- SemaphoreLes s sont indรฉpendants de la machine.
- SemaphoreLes s sont implรฉmentรฉs dans le code indรฉpendant de la machine du micro-noyau.
- Ils ne permettent pas ร plusieurs processus d'entrer dans la section critique.
- Comme il y a beaucoup d'attente dans le sรฉmaphore, il n'y a jamais de perte de temps et de ressources.
- Ils sont indรฉpendants de la machine et doivent รชtre exรฉcutรฉs dans le code indรฉpendant de la machine du micro-noyau.
- Ils permettent une gestion flexible des ressources.
Inconvรฉnients de Semaphores
Voici les inconvรฉnients du sรฉmaphore :
- L'une des plus grandes limitations d'un sรฉmaphore est l'inversion des prioritรฉs.
- Le systรจme d'exploitation doit conserver track de tous les appels pour attendre et signaler le sรฉmaphore.
- Leur utilisation nโest jamais imposรฉe, mais uniquement par convention.
- Afin d'รฉviter les blocages dans le sรฉmaphore, les commandes Wait et Signal les opรฉrations doivent รชtre exรฉcutรฉes dans le bon ordre.
- Semaphore La programmation est complexe, il est donc possible de ne pas parvenir ร une exclusion mutuelle.
- Ce nโest pas non plus une mรฉthode pratique pour une utilisation ร grande รฉchelle car son utilisation entraรฎne une perte de modularitรฉ.
- Semaphore est plus sujet aux erreurs du programmeur.
- Cela peut causer impasse ou violation de l'exclusion mutuelle en raison d'une erreur du programmeur.


