Semáforo

Definição – o que significa 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 usados ​​para controlar o acesso a arquivos e memória compartilhada. As três funcionalidades básicas associadas aos semáforos estão definidas, verifique e espere até que apague para defini-las novamente. |

Semáforos são usados ​​para resolver problemas de sincronização de benchmark.

O conceito de semáforo foi apresentado pelo cientista da computação holandês Edsger Dijkstra.

Definirtec explica Semaphore

Os 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 então o diminui em um, enquanto V é uma operação atômica que incrementa um semáforo em um, o que implica despertar 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 tentarem criar, inicializar e usar um semáforo ao mesmo tempo, uma condição de corrida será 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 por meio de interrupções ou usando operações de conjunto de teste.

Cada semáforo mantém conjuntos de licenças. Ele restringe o número de threads que acessam os recursos. Os semáforos com apenas uma permissão e inicializados com uma servem como bloqueios de exclusão mútua. São assim chamados porque têm apenas dois estados: licença disponível ou licença zero disponível. Isso inclui a propriedade para que um bloqueio possa ser liberado por um encadeamento diferente do proprietário, ajudando na recuperação de conflito. Os semáforos são usados ​​para exclusões mútuas em que o semáforo tem um valor inicial de um e P () e V () são chamados antes e depois das seções críticas.