Mutex vs Semaphore: diferencia entre ellos

Diferencia clave entre mutex y semáforo

  • Mutex es un mecanismo de bloqueo, mientras que Semaphore es un mecanismo de señalización.
  • Mutex es solo un objeto, mientras que Semaphore es un número entero
  • Mutex no tiene subtipo, mientras que Semaphore tiene dos tipos, que son semáforo contable y semáforo binario.
  • Semaphore admite la modificación de operaciones de espera y señal, mientras que Mutex solo lo modifica el proceso que puede solicitar o liberar un recurso.
  • El valor del semáforo se modifica mediante las operaciones de espera () y señal (), por otro lado, las operaciones Mutex se bloquean o desbloquean.

¿Qué es Semáforo?

Semáforo es simplemente una variable que no es negativa y se comparte entre subprocesos. Un semáforo es un mecanismo de señalización, y un hilo que está esperando en un semáforo puede ser señalado por otro hilo. utiliza dos atomoperaciones ic, 1) espera y 2) señal para el synchronización.

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

¿Qué es Mutex?

La forma completa de Mutex es Objeto 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 extendida. Permite que las tareas actuales de mayor prioridad se mantengan en estado bloqueado durante el menor tiempo posible. Sin embargo, la herencia de prioridad no corrige la inversión de prioridad, sino que sólo minimiza su efecto.

Uso del semáforo

En el caso de un solo buffer, podemos separar los 4 KB buffer en cuatro 1 KB buffers. El semáforo se puede asociar con estos cuatro buffers. Esto permite a los usuarios y productores trabajar en diferentes buffers al mismo tiempo.

Uso de exclusión mutua

Un mutex proporciona exclusión mutua, que puede ser tanto el productor como el consumidor que pueden tener la clave (mutex) y continuar con su trabajo. Mientras el productor llene buffer, el usuario debe esperar y viceversa. En el bloqueo Mutex, todo el tiempo, solo un hilo puede funcionar con todo el buffer.

Diferencia entre semáforo y mutex

Diferencia entre semáforo y mutex

parámetros Semáforo Mutex
Mecanismo Es un tipo de mecanismo de señalización. Es un mecanismo de bloqueo.
Tipo de datos El semáforo es una variable entera. Mutex es solo un objeto.
Modificación Las operaciones de espera y señal pueden modificar un semáforo. Es modificado únicamente por el proceso que puede solicitar o liberar un recurso.
Gestión de recursos Si ningún recurso está libre, entonces el proceso requiere un recurso que debe ejecutar la operación de espera. Debe esperar hasta que el recuento del semáforo sea mayor que 0. Si está bloqueado, el proceso tiene que esperar. El proceso debe mantenerse en cola. Solo es necesario acceder a este cuando el mutex está desbloqueado.
Hilo Puede tener múltiples hilos de programa. Puede tener varios subprocesos de programa en mutex pero no simultáneamenteneoUsualmente
Propiedad El valor puede cambiarse mediante cualquier proceso que libere u obtenga el recurso. El bloqueo del objeto lo libera únicamente el proceso que ha obtenido el bloqueo sobre él.
Tipos Los tipos de semáforo son el semáforo contable y el semáforo binario. Mutex no tiene subtipos.
Operación El valor del semáforo se modifica mediante la operación de espera () y señal (). El objeto Mutex está bloqueado o desbloqueado.
Ocupación de recursos Está ocupado si se están utilizando todos los recursos y el proceso que solicita el recurso realiza la operación de espera () y se bloquea hasta que el recuento de semáforos sea> 1. En caso de que el objeto ya esté bloqueado, el proceso que solicita recursos espera y el sistema lo pone en cola antes de que se libere el bloqueo.

Datos comunes sobre Mutex y semáforo

A continuación se presentan algunos datos comunes sobre Mutex y Semaphore:

  • Sólo una tarea puede adquirir el mutex. Por lo tanto, existe una propiedad asociada con un mutex y solo el propietario puede liberar el mutex.
  • Las razones para usar mutex y semáforo son diferentes, tal vez debido a la similitud en su implementación, un mutex se denominaría semáforo binario.
  • Un error muy conocido es que los mutexes y los semáforos son casi iguales, con la única diferencia de que un mutex es capaz de contar hasta 1, mientras que los semáforos pueden contar de 0 a N.
  • Siempre existe incertidumbre entre el semáforo binario y el mutex. Es posible que escuche que un mutex es un semáforo binario, lo cual no es correcto.

Ventajas del semáforo

A continuación se detallan las ventajas y ventajas de utilizar Semaphore:

  • Permite que más de un hilo acceda a la sección crítica.
  • Los semáforos son independientes de la máquina.
  • Los semáforos se implementan en el código independiente de la máquina del microkernel.
  • No permiten que múltiples procesos ingresen a la sección crítica.
  • Como hay mucha espera en el semáforo, nunca se desperdician tiempo ni recursos en el proceso.
  • Son independientes de la máquina, por lo que deben ejecutarse en el código independiente de la máquina del microkernel.
  • Permiten una gestión flexible de los recursos.

Ventajas de Mutex

Aquí se detallan importantes ventajas y beneficios de Mutex.

  • Los mutex son simples bloqueos que se obtienen antes de ingresar a su sección crítica y luego liberarla.
  • Dado que solo hay un subproceso en su sección crítica en un momento dado, no hay condiciones de carrera y los datos siempre permanecen consistentes.

Desventaja de los semáforos

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

  • Una de las mayores limitaciones de un semáforo es la inversión de prioridad.
  • El sistema operativo debe realizar un seguimiento de todas las llamadas para esperar y señalar el semáforo.
  • Su uso nunca se impone, sino que es únicamente por convención.
  • Para evitar deadlockEn el semáforo, las operaciones de espera y señal deben ejecutarse en el orden correcto.
  • La programación de semáforos es una com.plex método, por lo que hay posibilidades de no lograr la exclusión mutua.
  • Tampoco es un método práctico para uso a gran escala ya que su uso conduce a una pérdida de modularidad.
  • Semaphore es más propenso a errores del programador.
  • Puede causar deadlock o violación de exclusión mutua debido a un error del programador.

Desventajas de Mutex

Aquí están las desventajas/desventajas de Mutex

  • Si un subproceso obtiene un bloqueo y se pone en suspensión o se le adelanta, es posible que el otro subproceso no pueda avanzar. Esto puede provocar hambruna.
  • No se puede bloquear ni desbloquear desde un contexto diferente al que lo adquirió.
  • Sólo se debe permitir un hilo en la sección crítica a la vez.
  • La implementación normal puede provocar un estado de espera ocupado, lo que desperdicia tiempo de CPU.