Diferencia Entre Semáforo Y Monitor

Diferencia Entre Semáforo Y Monitor
Diferencia Entre Semáforo Y Monitor

Vídeo: Diferencia Entre Semáforo Y Monitor

Vídeo: Diferencia Entre Semáforo Y Monitor
Vídeo: Monitores vs Semaforos sistemas, informatica 2024, Noviembre
Anonim

Semáforo vs Monitor

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

¿Qué es un semáforo?

El semáforo es una estructura de datos que se utiliza para proporcionar exclusión mutua a las secciones críticas. Los semáforos soportan principalmente dos operaciones llamadas esperar (históricamente conocida como P) y señal (históricamente conocida como V). La operación de espera bloquea un proceso hasta que el semáforo se abre y la operación de señal permite que entre otro proceso (subproceso). Cada semáforo está asociado con una cola de procesos en espera. Cuando un hilo llama a la operación de espera, si el semáforo está abierto, el hilo puede continuar. Si el semáforo se cierra cuando un hilo llama a la operación de espera, el hilo se bloquea y tiene que esperar en la cola. La operación de señal abre un semáforo y si ya hay un hilo esperando en la cola, ese proceso puede continuar y si no hay hilos esperando en la cola, la señal se recuerda para los siguientes hilos. Hay dos tipos de semáforos llamados semáforos mutex y semáforos contadores. Los semáforos mutex permiten un acceso único 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 compartidos, procedimientos (que operan en estructuras de datos compartidos) 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 pasos (que acceden a los datos del monitor a través de sus procedimientos) interactúan de forma 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, entonces el segundo procedimiento se bloquea y tiene que esperar en la cola. Hay dos tipos de monitores denominados monitores Hoare y monitores Mesa. Se diferencian 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 en paralelo, difieren en las técnicas utilizadas para lograr esta tarea. En los monitores, el código que se utiliza para lograr la exclusión mutua está en un solo lugar y está más estructurado, mientras que el código para 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 utilizan variables de condición, mientras que los semáforos no.

Recomendado: