Índice:
Definição - O que significa o Semáforo?
Um semáforo é um objeto de sincronização que controla o acesso de vários processos a um recurso comum em um ambiente de programação paralelo. Os semáforos são amplamente utilizados para controlar o acesso a arquivos e memória compartilhada. As três funcionalidades básicas associadas aos semáforos são definidas, verifique e aguarde até que apague para configurá-lo novamente. |
Semáforos são usados para solucionar problemas de sincronização de benchmark.
O conceito de semáforo foi apresentado pelo cientista holandês da computação Edsger Dijkstra.
Techopedia explica o Semáforo
Semáforos são valores inteiros não negativos que suportam as operações semáforo-> P () e semáforo-> V (). P é uma operação atômica que espera que um semáforo seja positivo e o diminui em um, enquanto V é uma operação atômica que incrementa um semáforo em um, o que implica que ele acorda um P. em espera. Teste e conjunto associados ao semáforo são rotinas implementado em hardware para coordenar seções críticas de nível inferior.
Os semáforos são normalmente implementados usando descritores de arquivo. As criações de semáforo não são atômicas. Se dois processos tentam criar, inicializar e usar um semáforo ao mesmo tempo, uma condição de corrida é criada. Os semáforos são criados e inicializados com um valor positivo para mostrar a disponibilidade de um recurso a ser usado. Os semáforos podem ser implementados através de interrupções ou usando operações de conjunto de testes.
Todo semáforo mantém conjuntos de permissões. Ele restringe o número de threads que acessam os recursos. Os semáforos com apenas uma permissão e inicializados em um servem como bloqueios de exclusão mútua. Eles são referidos como tais porque possuem apenas dois estados: permissão disponível ou zero permissão disponível. Isso inclui a propriedade para que um bloqueio possa ser liberado por um encadeamento que não seja o proprietário, ajudando na recuperação de conflitos. Os semáforos são usados para exclusões mútuas, onde o semáforo tem um valor inicial de um, e P () e V () são chamados antes e depois das seções críticas.