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.

EFECTO CLAVE

  • Mutex es un mecanismo de bloqueo, pero Semaphore es un mecanismo de señalización
  • Mutex es solo un objeto aunque Semaphore sea un número entero
  • Mutex no tiene subtipo, pero Semaphore tiene dos tipos, contando semáforo y semáforo binario.
  • Semaphore admite la modificación de las operaciones de espera y señal, pero Mutex solo se modifica a través del proceso que puede solicitar o liberar un recurso.
  • El valor del semáforo se modifica utilizando las operaciones wait () y signal (), por otro lado, las operaciones Mutex se bloquean o desbloquean.

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á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 Puede 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 recursos Si 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.
Hilo Puede tener varios hilos. Puede tener varios subprocesos en mutex pero no al mismo tiempo.
Propiedad El 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.
Tipos Los tipos de semáforos cuentan con semáforos y semáforos binarios. Mutex no tiene subtipos.
Operación El 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ón Argumenta 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:

  • Solo una tarea puede obtener el mutex. Entonces, la propiedad está asociada con el mutex, y solo el propietario puede liberar el mutex.
  • Las razones para usar mutex y semáforo son diferentes quizás debido a su similitud en la aplicación, mutex se conoce como semáforo binario.
  • Un error bien conocido es que los Mutexes y Semaphores son casi idénticos, y la única diferencia es que Mutex puede contar hasta 1, y Semaphores puede contar de 0 a N.
  • Siempre hay incertidumbre entre un semáforo binario y un mutex. Es posible que escuche que mutex es un semáforo binario, lo cual no es correcto.

Beneficios del semáforo

Estos son los pros / contras de usar Semaphore:

  • Permite que más de un hilo acceda a la parte 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 micro-kernel.
  • No permiten que múltiples procesos entren en la parte crítica.
  • Debido a que permanecer en el semáforo está ocupado, nunca se desperdician tiempo y recursos de proceso.
  • Son independientes de la máquina, que deben ejecutarse en código independiente de la máquina del micro-kernel.
  • Permiten una gestión flexible de los recursos.

Beneficios de Mutex

Estos son los beneficios / ventajas clave de Mutex

  • Los mutex son cerraduras simples que se obtienen antes de ingresar a su compartimiento crítico y luego liberarlos.
  • Dado que solo un hilo es una sección crítica en un momento dado, no hay condiciones de carrera y los datos siempre son 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 prioridades.
  • El sistema operativo debe realizar un seguimiento de todas las llamadas para esperar y señalar al semáforo.
  • Su uso nunca se impone, sino solo mediante convención.
  • Para evitar interbloqueos en el semáforo, es necesario completar las operaciones de Ventilador y Señal en el orden correcto.
  • La programación de semáforos es un método complejo, por lo que existe la posibilidad de que no se logre la exclusión mutua.
  • Tampoco es un método práctico para uso a gran escala ya que la modularidad se pierde como resultado de su uso.
  • El semáforo es más propenso a errores del programador.
  • Puede prevenir o violar la exclusión mutua debido a un error del programador.

Desventajas de Mutex

Aquí están las desventajas / desventajas de Mutex

  • Si un hilo se pone verde y se queda dormido o se interrumpe, es posible que el otro hilo no pueda continuar. Esto puede provocar hambre.
  • No se puede bloquear o desbloquear desde un contexto diferente al que lo recibió.
  • Solo se debe permitir un hilo en la parte crítica a la vez.
  • El funcionamiento normal puede llevar a una situación de mucha actividad, lo que hace que la CPU pierda tiempo.

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Salir de la versión móvil