Anda di halaman 1dari 3

Monitores

Sistemas Operativos
Estructuras de lenguaje de programacion

Monitores
Mario Medina (mariomedina@udec.cl)

Funcionalidad equivalente a semaforos


Mas facil de controlar
Presente en Pascal Concurrente, Modula-2, Modula-3, Java
Tambien implementado como biblioteca

The net interprets censorship as damage and routes around it.


La red interpreta la censura como da~
no y enruta alrededor
de e
sta.
John Gilmore

Caractersticas de un Monitor
Variables locales al monitor no son accesibles por procedimientos externos
Un proceso entra a un monitor invocando a uno de sus
procedimientos
S
olo un proceso puede estar ejecutando en el monitor a la vez
Asegura exclusion mutua
Proteger los datos compartidos insertandolos en un monitor

Sistemas Operativos, 2008-1

queue of
entering
processes
monitor waiting area

Sistemas Operativos, 2008-1

Variables de condici
on

Entrance
MONITOR

Herramientas de sincronizacion en monitores


condition c1

local data

Accesibles solo desde dentro del monitor

cwait(c1)
condition variables

cwait(x) Suspende la ejecucion del proceso bajo la condici


on x.
Monitor queda disponible para su uso por otros procesos

Procedure 1

condition cn
cwait(cn)

csignal(x) Reanuda la ejecucion de alg


un proceso suspendido
bajo la condicion x. Si un proceso ejecuta csignal(x) y no
hay procesos suspendidos bajo x, csignal se pierde.
Comparar comportamiento con semaforos!

Procedure k

Uso de monitores
Proceso entra a monitor por entrada controlada
Asegura exclusion mutua

urgent queue
csignal

initialization code

Exit

Figure 5.15 Structure of a Monitor

Proceso se suspende a s mismo bajo condici


on x
Otro proceso detecta cambio en condicion x, llama a
csignal(x)

Sistemas Operativos, 2008-1

Monitores vs. Sem


aforos

Productor/Consumidor con Buer Finito

Semaforos

Buer de n elementos asociado al monitor


Accesible solo mediante add(x) y take(x)

Programador responsable por exclusion mutua

add(x) y take(x) procedimientos del monitor


Accesibles solo por procesos ejecutandose en el monitor
Productor
while(true) {
produce(x);
add(x);
}
add(x)
if (count == n) {
cwait(notFull);
}
buffer[in] = x;
in = (in + 1) %n;
count++;
csignal(notEmpty);

Programador responsable por sincronizaci


on
Monitores

Consumidor
while(true) {
take(x);
consume(x);
}

Monitor responsable por exclusi


on mutua
Programador responsable por sincronizaci
on
Programador todava es responsable de usar cwait() y
csignal() sin errores!
Todas las funciones de sincronizaci
on estan dentro del monitor
Codigo mas facil de vericar

take(x)
if (count == 0) {
cwait(notEmpty);
}
x = buffer[out];
out = (out + 1) %n;
count;
csignal(notFull);

Sistemas Operativos, 2008-1

Adecuado para lenguajes orientados-al-objeto

Sistemas Operativos, 2008-1

Monitores de Hoare

Monitores Mesa

Monitores propuestos por C. A. R. Hoare

Monitores propuestos por Lampson y Redell para Mesa

Si no hay procesos esperando por x, csignal(x) se pierde


Si hay procesos esperando por x, proceso que ejecuta
csignal(x) debe
Despertar un proceso bloqueado esperando por cwait(x)
Perder el procesador

Reemplaza csignal(x) por cnotify(x)


cnotify(x) Similar a csignal(x), pero proceso en ejecucion contin
ua ejecutandose
No se requiere cambio de contexto adicional

Proceso sale del monitor


csignal(x) debe ser u
ltima lnea a ejecutar
Proceso se suspende en el monitor
Pero, proceso esta ejecutando su seccion crtica
Esto impide que otros procesos ingresen en seccion crtica
Dos cambios de proceso adicionales
Cola de Procesos Urgentes
da prioridad a procesos suspendidos en secciones crticas

Sistemas Operativos, 2008-1

Proceso que recibe la noticacion sera el pr


oximo en reanudarse
Condicion x puede haber sido cambiada nuevamente
por el proceso
por el sistema operativo
Proceso reanudado debe vericar nuevamente la condici
on al
recuperar la CPU
Si condicion x a
un no se cumple, llamar nuevamente a
cwait(x)
Espera indenida posible (Inanicion)
Agregar timer que despierta proceso despues de un intervalo predeterminado
 Si condicion a
un no se cumple, se volvera a suspender

Sistemas Operativos, 2008-1

Hoare vs. Mesa

Productor/Consumidor con Monitores Mesa

Cambios en el codigo de los procedimientos add(x) y take(x)


if() reemplazado por while()

Ventajas de Monitores Mesa


Reduce el n
umero de cambios de proceso

add(x)
while (count == n) {
cwait(notFull);
}
buffer[in] = x;
in = (in + 1) %n;
count++;
cnotify(notEmpty);

take(x)
while (count == 0) {
cwait(notEmpty);
}
x = buffer[out];
out = (out + 1) %n;
count;
cnotify(notFull);

Mas faciles de programar


Inmune a inanici
on (con timer)
Menos propenso a errores
Programacion mas modular
Ventajas de Monitores Hoare

Con monitores Mesa, procesos siempre verican la condicion


al ser reanudados

No reanuda un proceso consumidor si no hay un elemento


esperando ser consumido
El sistema operativo realiza menos trabajo!

Porque no despertarlos a todos?


cbroadcast(x) Primitiva de difusi
on. Reanuda todos los procesos que estan esperando por la condici
on x
Procesos verican la condicion al ser reanudados
Uno de ellos encuentra la condicion valida y se ejecuta
El resto queda esperando por la condicion
Sistemas Operativos, 2008-1

Sistemas Operativos, 2008-1

Anda mungkin juga menyukai