Sommario:
Definizione - Cosa significa Semaforo?
Un semaforo è un oggetto di sincronizzazione che controlla l'accesso di più processi a una risorsa comune in un ambiente di programmazione parallelo. I semafori sono ampiamente utilizzati per controllare l'accesso ai file e alla memoria condivisa. Le tre funzionalità di base associate ai semafori sono impostate, controllare e attendere fino a quando non si cancella per reimpostarle. |
I semafori vengono utilizzati per risolvere i problemi di sincronizzazione dei benchmark.
Il concetto di semaforo è stato sviluppato dall'informatico olandese Edsger Dijkstra.
Techopedia spiega Semaphore
I semafori sono valori interi non negativi che supportano le operazioni semaphore-> P () e semaphore-> V (). P è un'operazione atomica che attende che un semaforo sia positivo e quindi lo decrementa di uno, mentre V è un'operazione atomica che incrementa un semaforo di uno, il che implica che si sveglia un'attesa P. Il test e l'insieme associato al semaforo sono routine implementato in hardware per coordinare sezioni critiche di livello inferiore.
I semafori vengono normalmente implementati utilizzando descrittori di file. Le creazioni di semafori non sono atomiche. Se due processi tentano di creare, inizializzare e utilizzare un semaforo contemporaneamente, viene creata una condizione di competizione. I semafori vengono creati e inizializzati su un valore positivo per mostrare la disponibilità di una risorsa da utilizzare. I semafori possono essere implementati attraverso gli interrupt o usando le operazioni del set di test.
Ogni semaforo mantiene una serie di permessi. Limita il numero di thread che accedono alle risorse. I semafori con un solo permesso e inizializzati su uno servono come blocchi di esclusione reciproca. Sono indicati come tali perché hanno solo due stati: permesso disponibile o permesso zero disponibile. Ciò racchiude la proprietà in modo che un blocco possa essere rilasciato da un thread diverso dal proprietario, contribuendo al ripristino del deadlock. I semafori vengono utilizzati per esclusioni reciproche in cui il semaforo ha un valore iniziale di uno e P () e V () vengono chiamati prima e dopo le sezioni critiche.
