Está en la página 1de 1

Universidad Católica de Santiago del Estero

Departamento Académico Rafaela

Sistemas Operativos
Unidad N°4: Concurrencia - Sincronización
Año 2017

Monitores

Primitiva de sincronización de más alto nivel.


Es un conjunto de procedimientos, variables y estructuras de datos que se agrupan en un
tipo especial de módulo o paquete.
Los procesos pueden llamar a procedimientos en un monitor siempre que lo deseen pero no
pueden accesar directamente las estructuras de datos internas del monitor a partir de
procedimientos declarados fuera del monitor.
Un solo proceso puede estar activo en un monitor en cualquier instante.
El compilador sabe que son especiales y cuando se llama a un procedimiento monitor las
primeras instrucciones del procedimiento verificarán si hay algún otro procedimiento activo
dentro del monitor.
El compilador que interpreta al monitor es el encargado de gestionar la exclusión mutua
(generalmente por semáforos binarios) reduciendo el riesgo de que salga mal.
Basta con convertir todas las secciones críticas en procedimientos monitores. Consiste en
reunir todas las funciones que operan sobre datos compartidos en un solo módulo, de
manera que todos los accesos a esos estarán forzados a utilizar dichas funciones.
Lo que les falta es una manera de que los procesos se bloqueen cuando no puedan
continuar.
Se recurre entonces a las variables de condición junto a las operaciones WAIT y SIGNAL.
Cuando un procedimiento monitor descubre que no puede proseguir realiza una operación
WAIT con alguna variable de condición. De esta forma se bloquea el proceso solicitante.
Otro proceso puede desbloquear a su socio realizando una operación SIGNAL con la
variable de condición que espera el socio. El proceso que realiza la operación SIGNAL
debe salir de forma inmediata. Si existen varios procesos esperando por la variable de
condición, el planificador elige cual revivir.

Desventajas:

El compilador debe reconocer a los monitores y arreglárselas para lograr la exclusión


mutua. C, Pascal y la mayoría de los otros lenguajes no tienen monitores, es irracional
esperar que sus compiladores lo hagan. Lenguaje con monitores: Euclides Concurrete, Ada,
Modula.
Cuando tenemos un sistema distribuido que consta de múltiples CPU cada una con su
memoria privada, conectadas en una red local, los monitores como los semáforos se
vuelven inapropiados.

Ing. Biderbosts, Guillermo – Ing. Roldán, Cesar -1-

También podría gustarte