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.



