Saltar al contenido

Mutex vs Semaphore: ¿Cuál es la diferencia?

¿Qué es el semáforo?

Semáforo variables que no son negativas y se dividen entre subprocesos. Un semáforo es un mecanismo de señalización y un hilo que espera en un semáforo se puede firmar con otro hilo. Utiliza dos operaciones atómicas, 1) esperar y 2) señal para la sincronización del proceso.

Un semáforo permite o no permite el acceso al recurso, que depende de cómo esté configurado.

En este tutorial, aprenderá:

¿Qué es Mutex?

Mutex es la forma completa de Propósito de Exclusión Mutua. Es un tipo especial de semáforo binario que se utiliza para controlar el acceso al recurso compartido. Incluye un mecanismo de herencia de prioridad para evitar problemas de inversión de prioridad extendidos. Permite que las tareas actuales de alta prioridad se mantengan en la posición bloqueada durante el mayor tiempo posible. Sin embargo, una herencia de prioridad no corrige una inversión de prioridad, pero minimiza su efecto.

Usar semáforo

Para un solo búfer, podemos dividir el búfer de 4 KB en cuatro búferes de 1 KB. Se puede asociar un semáforo con estos cuatro búferes. Esto permite a los usuarios y productores trabajar en varios búferes al mismo tiempo.

Usar mutex

Mutex proporciona exclusión mutua, que puede ser un productor o un consumidor que puede tener la clave (mutex) y continuar con su trabajo. Mientras el productor llene un búfer, el usuario debe esperar y viceversa. En un bloqueo Mutex, todo el tiempo, solo un subproceso puede funcionar con el búfer completo.

Diferencia entre semáforo y mutex

ParámetrosSemáforoMutex
MecanismoEs un tipo de mecanismo de señalización.Es un mecanismo de bloqueo.
Tipo de datosEl semáforo es una variable entera.Mutex es solo un objeto.
ModificaciónPuede modificar las operaciones de espera y señalización del semáforo.Solo se modifica mediante el proceso mediante el cual se puede solicitar o liberar un recurso.
Administracion de recursosSi no hay un recurso libre, entonces el proceso requiere un recurso que debe realizar una operación de espera. Debe esperar hasta que el recuento de semáforos supere 0.Si está bloqueado, el proceso debe esperar. El proceso debe mantenerse en cola. Solo es necesario acceder a este cuando el mutex está desbloqueado.
HiloPuede tener varios hilos.Puede tener varios subprocesos en mutex pero no al mismo tiempo.
PropiedadEl valor se puede cambiar a través de cualquier proceso mediante el cual el recurso se libera o adquiere.Un bloqueo de objetivo solo se libera a través del proceso, que obtuvo el bloqueo.
TiposLos tipos de semáforos cuentan con semáforos y semáforos binarios.Mutex no tiene subtipos.
OperaciónEl valor de un semáforo se modifica mediante el uso de esperando () y señal ().El objeto Mutex está bloqueado o desbloqueado.
Recursos de ocupaciónArgumenta si se están utilizando todos los recursos y si el proceso que requiere recursos funciona () y se bloquea hasta que el semáforo cuenta> 1.Cuando el objeto ya está bloqueado, el proceso que solicita recursos se detiene y el sistema lo apaga antes de desbloquearlo.

Datos populares sobre Mutex y Semaphore

Aquí hay algunos datos comunes sobre Mutex y Semaphore:

Beneficios del semáforo

Estos son los pros / contras de usar Semaphore:

Beneficios de Mutex

Estos son los beneficios / ventajas clave de Mutex

Desventaja de los semáforos

Aquí están las desventajas / desventajas del semáforo

Desventajas de Mutex

Aquí están las desventajas / desventajas de Mutex