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:
Semaforo binario
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:
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.
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.