El monitor es una de las formas de lograr la sincronización de Procesos. El monitor se apoya en lenguajes de programación para lograr la exclusión mutua entre procesos. Por ejemplo, métodos sincronizados de Java. Java proporciona construcciones de espera() y notificación().
- Es la colección de variables de condición y procedimientos combinados en un tipo especial de módulo o paquete.
- Los procesos que se ejecutan fuera del monitor no pueden acceder a la variable interna del monitor, pero pueden llamar a los procedimientos del monitor.
- Solo un proceso a la vez puede ejecutar código dentro de los monitores.
Sintaxis:
Variables de condición:
Se realizan dos operaciones diferentes en las variables de condición del monitor.
Wait. signal.
digamos que tenemos 2 variables de
condición condition x, y; // Declarando variable
Operación de espera
x.wait(): el proceso que realiza la operación de espera en cualquier variable de condición se suspende. Los procesos suspendidos se colocan en la cola de bloques de esa variable de condición.
Nota: Cada variable de condición tiene su cola de bloques única.
Operación de señal
x.signal(): cuando un proceso realiza una operación de señal en la variable de condición, se le da oportunidad a uno de los procesos bloqueados.
If (x block queue empty) // Ignore signal else // Resume a process from block queue.
Ventajas del monitor:
los monitores tienen la ventaja de hacer que la programación paralela sea más fácil y menos propensa a errores que el uso de técnicas como el semáforo.
Desventajas de Monitor:
Los monitores deben implementarse como parte del lenguaje de programación. El compilador debe generar código para ellos. Esto le da al compilador la carga adicional de tener que saber qué funciones del sistema operativo están disponibles para controlar el acceso a las secciones críticas en procesos concurrentes. Algunos lenguajes que admiten monitores son Java, C#, Visual Basic, Ada y Euclid concurrente.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA