Diferencia entre semáforo y monitor

Diferencia entre semáforo y monitor
Diferencia entre semáforo y monitor

Video: Diferencia entre semáforo y monitor

Video: Diferencia entre semáforo y monitor
Video: difference between lilo and grub | what is grub | What is LILO? | Lec - 5 2024, Mes de julio
Anonim

Semáforo vs Monitor

Semaphore es una estructura de datos que se utiliza para garantizar que múltiples procesos no accedan a un recurso común oa una sección crítica al mismo tiempo, en entornos de programación paralelos. Los semáforos se utilizan para evitar puntos muertos y condiciones de carrera. Monitor es una construcción de lenguaje de programación que también se usa para evitar que múltiples procesos accedan a un recurso común al mismo tiempo, por lo tanto, garantiza la exclusión mutua. Los monitores usan variables condicionales para lograr esta tarea.

¿Qué es un semáforo?

Semaphore es una estructura de datos que se utiliza para proporcionar exclusión mutua a secciones críticas. Los semáforos admiten principalmente dos operaciones llamadas espera (históricamente conocida como P) y señal (históricamente conocida como V). La operación de espera bloquea un proceso hasta que se abre el semáforo y la operación de señal permite que ingrese otro proceso (hilo). Cada semáforo está asociado con una cola de procesos en espera. Cuando un subproceso llama a la operación de espera, si el semáforo está abierto, el subproceso puede continuar. Si el semáforo está cerrado cuando un subproceso llama a la operación de espera, el subproceso se bloquea y tiene que esperar en la cola. La operación de señal abre un semáforo y si ya hay un subproceso esperando en la cola, se permite que el proceso continúe y si no hay subprocesos esperando en la cola, la señal se recuerda para los siguientes subprocesos. Hay dos tipos de semáforos llamados semáforos mutex y semáforos de conteo. Los semáforos mutex permiten un solo acceso a un recurso y los semáforos de conteo permiten que varios subprocesos accedan a un recurso (que tiene varias unidades disponibles).

¿Qué es un monitor?

Un monitor es una construcción de lenguaje de programación que se utiliza para controlar el acceso a los datos compartidos. Los monitores encapsulan estructuras de datos compartidas, procedimientos (que operan en estructuras de datos compartidas) y sincronización entre invocaciones de procedimientos concurrentes. Un monitor se asegura de que sus datos no se enfrenten a accesos no estructurados y garantiza que los threads (que acceden a los datos del monitor a través de sus procedimientos) interactúen de manera legítima. Un monitor garantiza la exclusión mutua al permitir que solo un subproceso ejecute cualquier procedimiento de monitor en un momento dado. Si otro subproceso intenta invocar un método en el monitor, mientras que un subproceso ya está ejecutando un procedimiento en el monitor, el segundo procedimiento se bloquea y tiene que esperar en la cola. Hay dos tipos de monitores llamados monitores Hoare y monitores Mesa. Difieren principalmente en su semántica de programación.

¿Cuál es la diferencia entre Semaphore y Monitor?

Aunque tanto los semáforos como los monitores se utilizan para lograr la exclusión mutua en entornos de programación paralela, difieren en las técnicas utilizadas para lograr esta tarea. En los monitores, el código que se usa para lograr la exclusión mutua está en un solo lugar y está más estructurado, mientras que el código para los semáforos se distribuye como llamadas de función de espera y señal. Además, es muy fácil cometer errores al implementar semáforos, mientras que hay muy pocas posibilidades de cometer errores al implementar monitores. Además, los monitores usan variables de condición, mientras que los semáforos no.

Recomendado: