Diferència entre Semàfor i Mutex

Diferència entre Semàfor i Mutex
Diferència entre Semàfor i Mutex

Vídeo: Diferència entre Semàfor i Mutex

Vídeo: Diferència entre Semàfor i Mutex
Vídeo: Comment différencier le léopard, le guépard, et le jaguar? 2024, Juliol
Anonim

Semàfor vs Mutex

El semàfor és una estructura de dades que s'utilitza per assegurar-se que diversos processos no accedeixen a un recurs comú o a una secció crítica alhora, en entorns de programació paral·lels. Els semàfors s'utilitzen per evitar bloquejos i condicions de carrera. Mutex (objecte d'exclusió mútua) també s'utilitza per evitar l'accés a un recurs comú alhora per diversos processos concurrents.

Què és un semàfor?

El semàfor és una estructura de dades que s'utilitza per proporcionar exclusió mútua de les seccions crítiques. Els semàfors suporten principalment dues operacions anomenades espera (històricament coneguda com a P) i senyal (històricament coneguda com a V). L'operació d'espera bloqueja un procés fins que el semàfor estigui obert i l'operació de senyal permet que entri un altre procés (fil). Cada semàfor està associat a una cua de processos d'espera. Quan un fil crida l'operació d'espera, si el semàfor està obert, el fil pot continuar. Si el semàfor es tanca quan un fil crida l'operació d'espera, el fil queda bloquejat i s'ha d'esperar a la cua. L'operació de senyal obre un semàfor i si ja hi ha un fil esperant a la cua, es permet que aquest procés continuï i si no hi ha cap fil esperant a la cua, el senyal es recorda per als següents fils. Hi ha dos tipus de semàfors anomenats semàfors mutex i semàfors de recompte. Els semàfors Mutex permeten un únic accés a un recurs i els semàfors de recompte permeten que diversos fils accedeixin a un recurs (que té diverses unitats disponibles).

Què és un Mutex?

Quan s'inicia una aplicació informàtica, crearà un mutex i l'adjuntarà a un recurs. Quan el recurs és utilitzat per un fil, està bloquejat i altres fils no poden utilitzar-lo. Si un altre fil vol utilitzar el mateix recurs, haurà de fer una sol·licitud. Aleshores, aquest fil es col·locarà en una cua fins que s'acabi el primer fil amb el recurs. Quan acabi el primer fil amb el recurs, el bloqueig s'eliminarà i el fil que està esperant a la cua podrà accedir al recurs. Si hi ha diversos fils esperant a la cua, se'ls dóna accés de manera rotativa. Pràcticament, quan el mutex alterna l'accés a un recurs entre diversos fils, serà visible ja que diversos fils consumeixen un recurs alhora. Però internament, només un sol fil accedeix al recurs en un moment determinat.

Quina diferència hi ha entre Semàfor i Mutex?

Tot i que tant els semàfors com els objectes mutex s'utilitzen per aconseguir l'exclusió mútua en entorns de programació paral·lel, tenen algunes diferències. Un objecte mutex només permet que un sol fil consumeixi un recurs o una secció crítica, mentre que els semàfors permeten un nombre restringit d'accessos simultanis a un recurs (menys d'un nombre màxim permès). Amb objectes mutex, altres fils que volen accedir al recurs han d'esperar en una cua fins que el fil actual acabi d'utilitzar el recurs.

Recomanat: