Diferencia entre semáforo y monitor en SO

Autor: Laura McKinney
Fecha De Creación: 1 Abril 2021
Fecha De Actualización: 5 Mayo 2024
Anonim
Diferencia entre semáforo y monitor en SO - Tecnología
Diferencia entre semáforo y monitor en SO - Tecnología

Contenido


Semaphore y Monitor permiten que los procesos accedan a los recursos compartidos en exclusión mutua. Ambas son la herramienta de sincronización de procesos. En cambio, son muy diferentes entre sí. Dónde Semáforo es una variable entera que solo puede operarse mediante la operación wait () y signal () aparte de la inicialización. Por otro lado, el Monitor type es un tipo de datos abstracto cuya construcción permite que un proceso se active al mismo tiempo. En este artículo, discutiremos las diferencias entre el semáforo y el monitor con la ayuda del cuadro de comparación que se muestra a continuación.

  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Conclusión

Cuadro comparativo

Bases para la comparaciónSemáforo Monitor
BASIC Los semáforos son una variable entera S.El monitor es un tipo de datos abstracto.
AcciónEl valor de Semaphore S indica la cantidad de recursos compartidos disponibles en el sistemaEl tipo Monitor contiene variables compartidas y el conjunto de procedimientos que operan en la variable compartida.
AccesoCuando cualquier proceso accede a los recursos compartidos, realiza la operación wait () en S y cuando libera los recursos compartidos, realiza la operación signal () en S.Cuando cualquier proceso quiere acceder a las variables compartidas en el monitor, necesita acceder a él a través de los procedimientos.
Variable de condiciónEl semáforo no tiene variables de condición.El monitor tiene variables de condición.


Definición de semáforo

Siendo una herramienta de sincronización de procesos, Semáforo es un variable entera S. Esta variable entera S se inicializa en cantidad de recursos presente en el sistema. El valor del semáforo S solo puede modificarse mediante dos funciones Espere() y señal() aparte de la inicialización.

La operación wait () y signal () modifica el valor del semáforo S indivisiblemente. Lo que significa que cuando un proceso está modificando el valor del semáforo, ningún otro proceso puede modificar simultáneamente el valor del semáforo. Además, el sistema operativo distingue el semáforo en dos categorías Contando los semáforos y el semáforo binario.

En Contando Semáforo, el valor del semáforo S se inicializa a la cantidad de recursos presentes en el sistema. Cada vez que un proceso quiere acceder a los recursos compartidos, realiza Espere() operación en el semáforo que decrementos El valor del semáforo por uno. Cuando libera el recurso compartido, realiza un señal() operación en el semáforo que incrementos El valor del semáforo por uno. Cuando el recuento de semáforos va a 0, significa todos los recursos están ocupados por los procesos Si un proceso necesita usar un recurso cuando el recuento de semáforos es 0, ejecuta wait () y obtiene obstruido hasta que un proceso que utiliza los recursos compartidos lo libera y el valor del semáforo se vuelve mayor que 0.


En Semáforo binario, el valor del semáforo oscila entre 0 y 1. Es similar al bloqueo de mutex, pero mutex es un mecanismo de bloqueo, mientras que el semáforo es un mecanismo de señalización. En el semáforo binario, si un proceso quiere acceder al recurso, realiza la operación wait () en el semáforo y decrementos el valor del semáforo de 1 a 0. Cuando el proceso libera el recurso, realiza un señal() opera en el semáforo e incrementa su valor a 1. Si el valor del semáforo es 0 y un proceso desea acceder al recurso, realiza la operación wait () y se bloquea hasta que el proceso actual que utiliza los recursos libera el recurso.

Definición de monitor

Para superar los errores de sincronización que ocurren mientras se usa el semáforo para la sincronización del proceso, los investigadores han introducido una construcción de sincronización de alto nivel, es decir, el tipo de monitor. Un tipo de monitor es un tipo de datos abstracto que se usa para la sincronización de procesos.

Al ser un tipo de monitor de tipo de datos abstracto contiene el variables de datos compartidos que deben ser compartidos por todos los procesos y algunos definidos por el programador operaciones que permiten que los procesos se ejecuten en exclusión mutua dentro del monitor. Un proceso puede no acceder directamente la variable de datos compartidos en el monitor; el proceso tiene que acceder a través de procedimientos definido en el monitor que permite que solo un proceso acceda a las variables compartidas en un monitor a la vez.

La sintaxis del monitor es la siguiente:

monitor monitor_name {// procedimiento de declaraciones de variables compartidas P1 (...) {} procedimiento P2 (...) {} procedimiento Pn (...) {} código de inicialización (...) {}}

Un monitor es una construcción tal como solo un proceso está activo a la vez dentro del monitor. Si otro proceso intenta acceder a la variable compartida en el monitor, se bloquea y se alinea en la cola para obtener acceso a los datos compartidos cuando el proceso de acceso anterior lo libera.

Variables condicionales fueron introducidos para un mecanismo de sincronización adicional. La variable condicional permite que un proceso espere dentro del monitor y permite que un proceso de espera se reanude inmediatamente cuando el otro proceso libera los recursos.

los variable condicional solo puede invocar dos operaciones Espere() y señal() Donde si un proceso P invoca una espera () operación se suspende en el monitor hasta otro proceso Señal de invocación Q () operación, es decir, una operación de señal () invocada por un proceso reanuda el proceso suspendido.

  1. La diferencia básica entre semáforo y monitor es que el semáforo es un variable entera S que indican la cantidad de recursos disponibles en el sistema mientras que, el monitor es el tipo de datos abstractos que permite que solo se ejecute un proceso en la sección crítica a la vez.
  2. El valor del semáforo puede ser modificado por Espere() y señal() operación solamente. Por otro lado, un monitor tiene las variables compartidas y los procedimientos solo a través de los cuales los procesos pueden acceder a las variables compartidas.
  3. En Semáforo, cuando un proceso quiere acceder a recursos compartidos, el proceso realiza Espere() opera y bloquea los recursos y cuando libera los recursos que realiza señal() operación. En los monitores, cuando un proceso necesita acceder a recursos compartidos, tiene que acceder a ellos a través de procedimientos en el monitor.
  4. El tipo de monitor tiene variables de condición qué semáforo no tiene.

Conclusión:

Los monitores son fáciles de implementar que el semáforo, y hay pocas posibilidades de error en el monitor en comparación con los semáforos.