Table des matières:
Définition - Que signifie sémaphore?
Un sémaphore est un objet de synchronisation qui contrôle l'accès de plusieurs processus à une ressource commune dans un environnement de programmation parallèle. Les sémaphores sont largement utilisés pour contrôler l'accès aux fichiers et à la mémoire partagée. Les trois fonctionnalités de base associées aux sémaphores sont définies, vérifiez et attendez qu'elles disparaissent pour la réinitialiser. |
Les sémaphores sont utilisés pour résoudre les problèmes de synchronisation de référence.
Le concept de sémaphore a été mis en avant par l'informaticien néerlandais Edsger Dijkstra.
Techopedia explique Semaphore
Les sémaphores sont des valeurs entières non négatives qui prennent en charge les opérations sémaphore-> P () et sémaphore-> V (). P est une opération atomique qui attend qu'un sémaphore soit positif, puis le décrémente de un, tandis que V est une opération atomique qui incrémente un sémaphore de un, ce qui implique qu'il réveille un P. en attente. Le test et l'ensemble associé au sémaphore sont des routines implémenté dans le matériel pour coordonner les sections critiques de niveau inférieur.
Les sémaphores sont normalement implémentés à l'aide de descripteurs de fichiers. Les créations de sémaphore ne sont pas atomiques. Si deux processus tentent de créer, d'initialiser et d'utiliser un sémaphore en même temps, une condition de concurrence critique est créée. Les sémaphores sont créés et initialisés à une valeur positive pour montrer la disponibilité d'une ressource à utiliser. Les sémaphores peuvent être implémentés via des interruptions ou en utilisant des opérations d'ensemble de tests.
Chaque sémaphore conserve des ensembles de permis. Il limite le nombre de threads accédant aux ressources. Les sémaphores avec un seul permis et initialisés à un servent de verrous d'exclusion mutuelle. Ils sont désignés comme tels parce qu'ils n'ont que deux états: permis disponible ou permis zéro disponible. Cela enferme la propriété afin qu'un verrou puisse être libéré par un thread autre que le propriétaire, ce qui facilite la récupération de l'impasse. Les sémaphores sont utilisés pour les exclusions mutuelles où le sémaphore a une valeur initiale de un, et P () et V () sont appelés avant et après les sections critiques.
