Requisito previo: sincronización de procesos
1. Semáforo binario :
los semáforos binarios son semáforos que pueden asumir los valores 0 y 1 únicamente. Se utilizan para implementar los bloqueos mediante el uso de un mecanismo de señalización para lograr la exclusión mutua.
Aquí, si el valor del semáforo es 0, significa que está bloqueado, por lo que el bloqueo no está disponible.
Si el valor del semáforo es 1, significa que está desbloqueado, por lo que el bloqueo está disponible.
2. Mutex :
un mutex proporciona exclusión mutua, tanto el productor como el consumidor pueden tener la clave (mutex) y continuar con su trabajo. Mientras el productor llene el búfer, el consumidor debe esperar, y viceversa.
En cualquier momento, solo un subproceso puede trabajar con todo el búfer. El concepto se puede generalizar usando semáforo.
Diferencia entre semáforo binario y mutex:
Semáforo binario | exclusión mutua |
---|---|
Sus funciones basadas en el mecanismo de señalización. | Sus funciones basadas en mecanismo de bloqueo |
El subproceso que tiene mayor prioridad que el subproceso actual también puede liberar el semáforo binario y bloquearlo. | El subproceso que ha adquirido mutex solo puede liberar Mutex cuando sale de la sección crítica. |
El valor del semáforo cambia según las operaciones de espera() y señal(). | Los valores de exclusión mutua se pueden modificar como bloqueados o desbloqueados. |
Varios hilos pueden adquirir semáforos binarios a la vez al mismo tiempo. | Solo un subproceso puede adquirir mutex a la vez |
El semáforo binario no tiene propiedad. | Hay propiedad asociada con mutex porque solo el propietario puede liberar el bloqueo. |
Son más rápidos que mutex porque cualquier otro hilo/proceso puede desbloquear semáforos binarios. | Son más lentos que los semáforos binarios porque solo el hilo que ha adquirido debe liberar el bloqueo. |
Si tiene una cantidad de instancias para el recurso, es mejor usar el semáforo binario. | Si tiene una sola instancia para el recurso, es mejor usar mutex. |