presentación concurrencia monitoreo
TRANSCRIPT
CONCURRENCIA EXCLUSIÓN MUTUA Y
SINCRONIZACIÓN-MONITORES
Presentado por:
Alejandro Vargas
Código: 10143
Concurrencia-Monitores
¿que es concurrencia?
en informática, se habla de concurrencia cuando hay una existencia simultánea de varios procesos en ejecución.
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.
• 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).
Concurrencia-Monitoreo
Concurrencia-MonitoresMonitor 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
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.
Concurrencia-Monitores
¿como se implementa un monitor?
monitor MiMonitor {public void oper1 (...) {.....}public void oper2 (...) {....}
};
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 ();}};
El compilador genera un código parecido a este:
El cerrojo garantiza que no puede haber más de un proceso dentro del monitor.