3. Concurrencia-Monitores
Monitor
Los monitores son objetos destinados a ser usados sin peligro por más de
un hilo de ejecución. La característica que principalmente los define es
que sus métodos son ejecutados con exclusión mutua.
4. Concurrencia-Monitoreo
•
•
El monitor fue propuesto por Hoare (1972).
Tipo abstracto de datos.
o Estructura de datos privada.
o Operaciones públicas +
o Exclusión mutua.
o Sincronización (Variables condición).
5. Monitor ejemplo básico:
monitor contador {
// operaciones públicas
public contador () { valor = 0; }
public void incrementa () { valor ++;}
public int actual () { return valor; }
int valor; // variable interna privada
};
contador.incrementa ();
v = contador.actual ();
Concurrencia-Monitores
6. Concurrencia-Monitores
Si varios procesos intentan manipular el monitor al mismo tiempo, van
entrando de uno en uno: no puede haber más de un proceso trabajando con
el monitor en cada momento.
8. Concurrencia-Monitores
¿como se implementa un monitor?
monitor MiMonitor {
public void oper1 (...) {.....}
public void oper2 (...) {....}
};
El compilador genera un
código parecido a este:
El cerrojo garantiza que no
puede haber más de un
proceso dentro del monitor.
class Monitor {
semaforo cerrojo = 1;
public void oper1 (....) {
cerrojo.P ();
….. cuerpo de oper1 ...
cerrojo.V ();
}
public void oper2 (...) {....}
cerrojo.P ();
….. cuerpo de oper2 …
cerrojo.V ();
}
};