Domande e risposte sui semafori del sistema operativo # 1

Question: Spiega i semafori e scrivici una breve nota.

Answer:Dijkestra ha proposto una tecnica significativa per la gestione di processi concorrenti per complessi problemi di mutua esclusione. Ha introdotto un nuovo strumento di sincronizzazione chiamato Semaphore.

I semafori sono di due tipi:

  1. Semaforo binario

  2. Conteggio del semaforo

Il semaforo binario può assumere solo il valore 0 e 1. Il semaforo di conteggio può assumere valori interi non negativi.

Sul semaforo sono definite due operazioni standard, wait e signal. L'ingresso alla sezione critica è controllato dall'operazione di attesa e l'uscita da una regione critica è garantita dall'operazione di segnale. Le operazioni di attesa e segnale sono anche chiamate operazioni P e V. La manipolazione del semaforo (S) avviene come segue:

  1. Il comando wait P (S) decrementa il valore del semaforo di 1. Se il valore risultante diventa negativo, il comando P viene ritardato finché la condizione non è soddisfatta.

  2. L'operazione dei segnali V (S) ie incrementa il valore del semaforo di 1.

L'esclusione reciproca sul semaforo è applicata all'interno di P (S) e V (S). Se più processi tentano P (S) simultaneamente, solo un processo potrà procedere e gli altri saranno in attesa.Queste operazioni sono definite come sotto -

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

Le operazioni del semaforo sono implementate come servizi del sistema operativo e quindi wait e signal sono di natura atomica, ovvero una volta avviate, l'esecuzione di queste operazioni non può essere interrotta.

Quindi il semaforo è un meccanismo semplice ma potente per garantire l'esclusione reciproca tra processi concorrenti.