Differenza tra mutex e semaforo

Mutex vs Semaphore

I mutex vengono utilizzati per fornire l'accesso serializzato a una parte di un codice rientrante che non può essere eseguito in parallelo da più di un thread. Un mutex si assicura che solo un codice possa accedere alla sezione controllata alla volta. Per accedere, altri codici sono fatti per aspettare fino all'uscita del primo codice. Puoi considerarlo come una chiave per una stanza. La persona che ha accesso a quella chiave va per prima cosa. Fino al momento in cui la persona ritorna, nessun altro può accedere a quella stanza.

Il semaforo consente di accedere a una risorsa condivisa a un numero di utenti contemporaneamente. Con l'aumentare del numero di utenti che accedono alla risorsa, il conteggio del semaforo diminuisce. Una volta che gli utenti iniziano a rilasciare la risorsa, il conteggio dei semafori riprende a salire. Viene utilizzato dalle applicazioni che richiedono la sincronizzazione. Il numero di utenti concorrenti è limitato in base al limite del semaforo. Un semaforo può essere pensato come un mazzo di chiavi simili a serrature simili a una singola stanza, ma queste chiavi sono in numero limitato. Le persone che hanno queste chiavi possono condividere la stanza.

Differenze tra mutex e semaforo:

1. Mutex è usato per l'esclusione reciproca mentre il semaforo trova la sua utilità in entrambi gli eventi

notifica ed esclusioni reciproche.

2. Mutex fornisce accesso seriale a risorse comuni laddove il semaforo pone un limite

il numero di accessi concorrenti.

3. Un mutex funziona con un thread alla volta mentre il semaforo gestisce più thread

insieme.

4. Mutex ha un concetto di proprietario in cui solo il processo che blocca il mutex

riaprilo. Nessuno degli altri processi può farlo. Ma nel caso del semaforo, tale

le restrizioni non esistono.

5. Un mutex è un meccanismo di blocco mentre un semaforo è un meccanismo di segnalazione con

rispetto alla sincronizzazione dell'accesso a una risorsa.

Sommario:

1. Semanticamente e in teoria, sia il mutex che il semaforo sono gli stessi. Uno può essere

implementato usando l'altro, ma praticamente entrambi sono diversi.

2. Un mutex non è altro che un semaforo con un valore di conteggio uguale a uno.

3. Un mutex è un semaforo con funzionalità aggiuntive come la proprietà e l'inversione di priorità

protezione.

4. Un semaforo è un tipo di dati astratto che controlla l'accesso a una risorsa comune tramite

più processi in un ambiente di programmazione parallelo.

5. Il semaforo trova il suo uso in molti sistemi operativi come primitiva della sincronizzazione.

6. Sia il mutex che il semaforo sono risorse del kernel utilizzate allo scopo di

sincronizzazione.