Diferența dintre Mutex și Semaphore

Mutex vs Semaphore

Mutex-ul este folosit pentru a oferi acces serializat la o parte a unui cod reintrins care nu poate fi executat în paralel de mai multe fire. Un mutex se asigură că un singur cod poate accesa secțiunea controlată la un moment dat. Pentru a obține acces, alte coduri sunt făcute să aștepte până când primul cod iese. Puteți considera că este ca o cheie a unei camere. Persoana care are acces la acea cheie mai întâi. Până când persoana se întoarce înapoi, nimeni altcineva nu poate accesa acea cameră.

Semaphore oferă acces simultan unei resurse partajate unui număr de utilizatori. Pe măsură ce crește numărul de utilizatori care accesează resursele, numărul semaforului se reduce. Odată ce utilizatorii încep să elibereze resursele, numărul semaforului începe să crească din nou. Este folosit de aplicații care necesită sincronizare. Numărul de utilizatori concurenți este restricționat pe baza limitei de semafor. Un semafor poate fi considerat ca o mulțime de chei similare la încuietori similare într-o singură cameră, dar aceste chei sunt limitate în număr. Persoanele care au aceste chei pot împărtăși camera.

Diferențele dintre mutex și semafor:

1. Mutexul este folosit pentru excluderea reciprocă, în timp ce semaforul își găsește utilitatea în ambele cazuri

notificarea și excluderile reciproce.

2. Mutex oferă acces serios la resursele comune, în timp ce semaforul pune o limită

numărul de accesuri concurente.

3. Un mutex funcționează cu câte un fir la un moment dat în timp ce semaforul gestionează fire multiple

împreună.

4. Mutex are un concept de proprietar în cazul în care procesul care blochează mutexul poate numai

redeschideți-l. Nici unul dintre celelalte procese nu poate face acest lucru. Dar în cazul semaforului, așa

restricțiile nu există.

5. Un mutex este un mecanism de blocare în timp ce un semaphore este un mecanism de semnalizare cu

respectarea sincronizării accesului la o resursă.

Rezumat:

1. Semantic și teoretic, atât mutexul cât și semaphorele sunt aceleași. Poate fi

implementate folosind cealaltă, dar practic ambele sunt diferite.

2. Un mutex nu este altceva decât un semafor cu o valoare de număr egală cu una.

3. Un mutex este un semafor cu caracteristici suplimentare cum ar fi proprietatea și inversarea priorităților

protecţie.

4. Un semaphore este un tip de date abstract care controlează accesul la o resursă comună prin

multiple procese într-un mediu de programare paralel.

5. Semaphore își găsește utilizarea în multe sisteme de operare ca primitive de sincronizare.

6. Atât mutexul cât și semaphorele sunt resurse de kernel care sunt utilizate în scopul

sincronizare.