Perguntas e Respostas sobre Semaphores de SO # 1

Question: Explique os semáforos e escreva uma breve nota sobre eles.

Answer:Dijkestra propôs uma técnica significativa para gerenciar processos concorrentes para problemas complexos de exclusão mútua. Ele introduziu uma nova ferramenta de sincronização chamada Semaphore.

Os semáforos são de dois tipos -

  1. Semáforo binário

  2. Semáforo de contagem

O semáforo binário pode assumir os valores 0 e 1 apenas. O semáforo de contagem pode assumir valores inteiros não negativos.

Duas operações padrão, espera e sinal são definidas no semáforo. A entrada na seção crítica é controlada pela operação de espera e a saída de uma região crítica é controlada pela operação de sinal. As operações de espera e sinal também são chamadas de operações P e V. A manipulação do semáforo (S) ocorre da seguinte forma:

  1. O comando de espera P (S) diminui o valor do semáforo em 1. Se o valor resultante se torna negativo, o comando P é atrasado até que a condição seja satisfeita.

  2. O V (S) ou seja, a operação de sinais aumenta o valor do semáforo em 1.

A exclusão mútua no semáforo é aplicada em P (S) e V (S). Se vários processos tentarem P (S) simultaneamente, apenas um processo terá permissão para prosseguir e os outros processos estarão esperando. Essas operações são definidas como em -

P(S) or wait(S): 
If S > 0 then
   Set S to S-1
Else
   Block the calling process (i.e. Wait on S)

V(S) or signal(S): 
If any processes are waiting on S
   Start one of these processes
Else
   Set S to S+1

As operações do semáforo são implementadas como serviços do sistema operacional e, portanto, a espera e o sinal são de natureza atômica, ou seja, uma vez iniciada, a execução dessas operações não pode ser interrompida.

Portanto, o semáforo é um mecanismo simples, mas poderoso, para garantir a exclusão mútua entre processos simultâneos.