Concurrencia-2010a(1..

Anuncio
Programación secuencial vs
programación concurrente
Pascal, C, Fortran , Cobol
Java, Ada, Posix
Secuenciales
Concurrentes
único hilo de control
Informática III 2009
varios hilos de control
Ing. Estela D'Agostino
1
Concurrencia
• Son la notación y las técnicas de programación
que expresan el paralelismo potencial.
Un programa concurrente es un conjunto de procesos
autónomos que se ejecutan en paralelo.
Informática III 2009
Ing. Estela D'Agostino
2
Procesos concurrentes
El trabajar con procesos concurrentes añade
complejidad a la tarea de programar.
¿Cuáles son entonces los beneficios que
aporta la programación concurrente?
Informática III 2009
Ing. Estela D'Agostino
3
Beneficios de la programación
concurrente
• Mejor aprovechamiento de la CPU.
• Velocidad de ejecución.
• Solución de problemas de naturaleza concurrente:
–
–
–
–
–
Sistemas de control
Tecnologías web
Aplicaciones basadas en interfaces de usuarios
Simulación
SGDB
Informática III 2009
Ing. Estela D'Agostino
4
Proceso
• Es una instancia de ejecución de un programa.
• Tiene un ciclo de vida, es decir pasa por distintos
estados.
Informática III 2009
Ing. Estela D'Agostino
5
Ciclo de vida de un proceso
No existente
No existente
nacido
listo
terminado
ejecución
Informática III 2009
Ing. Estela D'Agostino
6
Finalización de un proceso
1.
2.
3.
4.
5.
Finaliza la ejecución de su cuerpo.
Ejecución de alguna sentencia de auto finalización.
Condición de error sin tratar.
Aborto por medio de la intervención de otro proceso.
Nunca: procesos que se ejecutan en bloques que no
terminan.
6. Cuando ya no son necesarios.
Informática III 2009
Ing. Estela D'Agostino
7
Programa concurrente
Es un conjunto de procesos secuenciales
autónomos que se ejecutan en paralelo
Informática III 2009
Ing. Estela D'Agostino
8
Implementación de un conjunto de
procesos
1. Multiplexar sus ejecuciones en un único
procesador (multiprogramación).
2. Multiplexar sus ejecuciones en un sistema
multiprocesador con acceso a memoria
compartida (multiprocesamiento).
3. Multiplexar sus ejecuciones en diversos
procesadores que no comparten memoria
(sistema distribuido).
Informática III 2009
Ing. Estela D'Agostino
9
Ejecución de un programa
concurrente
Los procesos deben ser creados, distribuidos en los
procesadores y finalizados. Estas actividades la realiza
el núcleo de ejecución conocido como Run Time
System Support (RTSS).
Se encarga de la creación, terminación y
multiplexado de los procesos
Informática III 2009
Ing. Estela D'Agostino
10
Run Time System Support
• Estructura software programada como parte
de la aplicación (Modula-2).
• Sistema software generado junto al código
objeto del programa por el compilador (Ada
y Java).
• Estructura hardware microcodificada en el
procesador. Es más eficiente (Occam2).
Informática III 2009
Ing. Estela D'Agostino
11
¿Quién provee los mecanismos de
concurrencia?
• Sistema operativo (SO de Tiempo real)
• Lenguaje ( lenguaje que proporciona
mecanismos para concurrencia)
Informática III 2009
Ing. Estela D'Agostino
12
Ejecución de los procesos
• Todos los SO tiene formas de crear procesos.
• Cada proceso se ejecuta en su propia máquina
virtual.
• Los SO modernos permiten crear hilos (procesos
ligeros) dentro de la misma máquina virtual.
Informática III 2009
Ing. Estela D'Agostino
13
Ventajas si el lenguaje proporciona
los mecanismos de concurrencia
• Programas más legibles.
• Programas más portables.
• Si el sistema es embebido puede que no
tenga un SO residente.
Informática III 2009
Ing. Estela D'Agostino
14
Ventajas si el SO proporciona la
concurrencia
• El modelo de concurrencia es el mismo
para todos los lenguajes.
• Puede no ser fácil implementar el modelo
de concurrencia sobre algún modelo de SO.
Informática III 2009
Ing. Estela D'Agostino
15
Programación concurrente
Los lenguajes concurrentes tiene elementos para:
• Crear procesos
• Sincronizar procesos
• Comunicar procesos
Informática III 2009
Ing. Estela D'Agostino
16
Comportamiento de procesos
• Independientes: no se sincronizan
comunican (son muy raros).
ni
•Cooperativos: se comunican y sincronizan sus
actividades.
•Competitivos: compiten por recursos del
sistema.
Informática III 2009
Ing. Estela D'Agostino
17
Sincronizar y Comunicar
• Sincronizar: Satisfacer las restricciones en el enlazado
de las acciones de los distintos procesos.
• Comunicar: pasar información de un proceso a otro.
Informática III 2009
Ing. Estela D'Agostino
18
Modelo de concurrencia
•
•
•
•
Estructura: nro de procesos fijo o variable.
Nivel: paralelismo soportado.
Granularidad: muchos o pocos procesos.
Inicialización:
paso
de
parámetros,
o
comunicación explícita después de su ejecución
• Finalización: término, error, aborto, nunca,
suicidio, no son necesarios
• Representación: proceso responsable de la
creación (padre/hijo) y proceso afectado por su
finalización (guardián/dependiente).
Informática III 2009
Ing. Estela D'Agostino
19
Sincronizar y Comunicar
• Variables compartidas: objetos a los que
puede acceder más de un proceso
• Paso de mensajes: intercambio explícito de
datos entre dos procesos mediante el paso de
un mensaje mediante alguna forma que brinda
el SO o el propio lenguaje.
Informática III 2009
Ing. Estela D'Agostino
20
Sincronización y comunicación
basada en variables compartidas
Son objetos a los que puede acceder más de un
proceso.
La comunicación se logra accediendo a dichas
variables cuando sea necesario.
Trae problemas
Informática III 2009
Ing. Estela D'Agostino
21
Variables compartidas
Considere dos procesos que actualizan una variable
compartida, X, mediante la sentencia: X:= X+1
1. Carga el valor de X en algún registro.
2. Incrementa el valor en el registro en 1.
3. Almacena el valor del registro de nuevo en X.
Como ninguna de las tres operaciones es
indivisible, dos procesos que actualicen la variable
simultáneamente generarían un entrelazamiento que
podría producir un resultado incorrecto.
Informática III 2009
Ing. Estela D'Agostino
22
Variables compartidas
• Las partes de un proceso que tienen acceso
a las variables compartidas han de
ejecutarse indivisiblemente unas respecto a
las otras.
• Estas partes se denominan secciones
críticas.
• La protección requerida se conoce como
exclusión mutua.
Informática III 2009
Ing. Estela D'Agostino
23
Variables compartidas
• Sección crítica: secuencia de instrucciones que
debe ejecutarse sin perder el control, y afecta
variables compartidas. Si un proceso está
ejecutando código de su sección crítica, ningún
otro proceso puede estar ejecutando código de su
sección crítica.
Informática III 2009
Ing. Estela D'Agostino
24
El problema de la sección
crítica(SC)
• Intenta sistematizar el estudio
de la sincronización.
• Sean n procesos que tienen
datos
compartidos.
Cada
proceso tiene un segmento de
código llamado SC en el cual se
accede a los datos compartidos.
• Se pretende que cuando un
proceso está en su sección
crítica, ningún otro esté en su
SC.
Informática III 2009
Ing. Estela D'Agostino
Sección de entrada
Sección crítica
Sección de salida
Sección siguientes
25
Sincronizaciones necesarias en la
programación concurrente
– Exclusión mutua: es el mecanismo que asegura que
sólo un proceso está haciendo algo en un instante
determinado. Sincronización para proteger una
sección crítica. Es necesario si dos procesos
comparten variables.
– Sincronización condicionada: necesaria cuando un
proceso necesita realizar alguna acción, sólo
después que se haya cumplido una condición.
Informática III 2009
Ing. Estela D'Agostino
26
Sincronización de condición
Utilización de buferes: productor / consumidor
Son aquellos problemas en los que existe un conjunto
de procesos que producen información que otros
procesos consumen, siendo diferentes las velocidades
de producción y consumo de la información. Este
desajuste en las velocidades, hace necesario que se
establezca una sincronización entre los procesos de
manera que la información no se pierda ni se duplique,
consumiéndose en el orden en que es producida.
Informática III 2009
Ing. Estela D'Agostino
27
Variables compartidas
• Semáforos.
• Monitores tipos protegidos.
• Métodos sincronizados.
Informática III 2009
Ing. Estela D'Agostino
28
Semáforos
• Los introdujo Dikstra en 1968.
• Permiten resolver la mayoría de los
problemas de sincronización entre procesos y
forman parte del diseño de muchos sistemas
operativos y de lenguajes de programación
concurrentes.
Informática III 2009
Ing. Estela D'Agostino
29
Semáforos
Es una estructura de datos:
•
con una variable tipo entera.
•
una cola de procesos en espera.
typedef semaforo {
int contador;
cola: lista de procesos;
}
Informática III 2009
Ing. Estela D'Agostino
30
Semáforos
down(S)
up(S)
sleep(S)
wakeup(S)
wait(S)
notify()
Espera(S)
• Mientras S sea cero suspende el
proceso y lo ingresa a la cola
asociada.
• Decrementa el contador.
Signal(S)
• Incrementa el contador.
• Si el resultado es positivo
despierta a un proceso que se
encuentra en la cola (y le
permite completar su down).
Informática III 2009
Ing. Estela D'Agostino
31
Semáforos
public final class Semaforo {
String nombre;
int s;
// constructor
public synchronized void down() {
while (s == 0) {
try { wait(); } catch (InterruptedException e) {}
}
s--;
}
public synchronized void up() {
s++;
notify();
}
}
Informática III 2009
Ing. Estela D'Agostino
32
Sincronización de condición con semáforos
var S : semaforo (inicialmente en 0)
process p1
..........
wait(S);
..........
end p1;
//espera hasta que S=1
El uso de wait y signal
se da en dos procesos
por separado. En uno se
ejecuta wait y en el otro
signal.
process p2
..............
signal(S);
..........
end p2;
Informática III 2009
Ing. Estela D'Agostino
33
Características de los semáforos
Los semáforos tienen algunas características que pueden generar
incovenientes:
•las variables compartidas son globales a todos los procesos.
•las acciones que acceden y modifican dichas variables están
diseminadas por los procesos.
•para poder decir algo del estado de las variables compartidas,
es necesario mirar todo el código.
•la adición de un nuevo proceso puede requerir verificar que el
uso de las variables compartidas es el adecuado.
Programas poco
escalables
Informática III 2009
Ing. Estela D'Agostino
34
Críticas a los semaforos
• Si el semáforo se ubicó en un lugar erróneo falla
No se garantiza la exclusión mutua
Posible solución : monitores
Informática III 2009
Ing. Estela D'Agostino
35
Monitores
Es un conjunto de procedimientos que proporciona el
acceso con exclusión mutua a un recurso o conjunto
de recursos (datos o dispositivos) compartidos por
un grupo de procesos. Los procedimientos van
encapsulados dentro de un módulo que tiene la
propiedad especial de que sólo un proceso puede
estar activo cada vez para ejecutar un procedimiento
del monitor.
Informática III 2009
Ing. Estela D'Agostino
36
Características de un monitor
Es un TAD:
• uso independiente de la implementación.
• el usuario no conoce la implementación.
• nada se sabe del orden en que se van a invocar
acciones del monitor.
• por lo que necesita una correcta especificación.
Informática III 2009
Ing. Estela D'Agostino
37
Funcionamiento de un monitor
Respecto a la sincronización:
• la exclusión mutua se
definición:
asegura
por
– por lo tanto, sólo un proceso puede estar
ejecutando acciones de un monitor en un
momento dado.
– aunque varios procesos pueden en ese momento
ejecutar acciones que nada tengan que ver con
el monitor.
Informática III 2009
Ing. Estela D'Agostino
38
Funcionamiento de un monitor
la sincronización condicionada:
– cada proceso puede requerir una sincronización
distinta, por lo que hay que programar cada
caso.
– para ello, se usarán las variables “condición”:
• se usan para hacer esperar a un proceso hasta que
determinada condición sobre el estado del monitor
se “anuncie”
• también para despertar a un proceso que estaba
esperando por su causa
Informática III 2009
Ing. Estela D'Agostino
39
Monitores
• Existe necesidad de sincronización de
condición.
• Se maneja con dos operadores que se
llaman wait y signal.
Informática III 2009
Ing. Estela D'Agostino
40
Monitores
• Un wait siempre bloquea y se ubica en una
cola asociada a esa variable de condición.
• Cuando un proceso bloqueado libera su
bloqueo permitirá ingresar a otro proceso.
• Cuando un proceso ejecuta una operación
signal, liberará un proceso bloqueado.
Informática III 2009
Ing. Estela D'Agostino
41
Críticas a monitores
• Solución elegante a problemas de exclusión
mutua.
• No soluciona bien las sincronizaciones de
variables de condición.
• Sólo lo implementan muy pocos lenguajes
(Mesa, Pascal Concurrente y Modula-1)
Informática III 2009
Ing. Estela D'Agostino
42
Métodos sincronizados
• Es el concepto de monitor implementado
en el paradigma de Orientación a Objetos
• Se utilizan en lenguajes como Java, que
tiene la concurrencia totalmente integrada.
Informática III 2009
Ing. Estela D'Agostino
43
Métodos sincronizados
• Los métodos se califican con el modificador
synchronized.
• Puede existir también synchronized a nivel
de bloque.
Informática III 2009
Ing. Estela D'Agostino
44
Sincronizacion y comunicación
basada en mensajes
• El envío de mensajes se usa tanto para sincronizar
como para comunicar.
• Se necesita un proceso emisor y uno receptor.
• Información para intercambiar.
• Operaciones básicas son:
– Enviar (mensaje) (, dest)
– Recibir (mensaje) (, fuente)
Informática III 2009
Ing. Estela D'Agostino
45
Paso de mensajes
• Se debe establecer un enlace entre receptor
y emisor:
–
–
–
–
Modelo de sincronización.
Cómo nombrar los procesos.
Estructura del mensaje.
Confiabilidad
Informática III 2009
Ing. Estela D'Agostino
46
Modelo de sincronización
• Sincronización implícita: un proceso no puede
recibir un mensaje antes que el emisor lo haya
emitido.
– El receptor puede leer una variable que no haya sido
escrita por el emisor.
– Un proceso que ejecuta una recepción de mensaje
incondicional cuando no existe ningún mensaje,
permanecerá suspendido hasta que llegue el mensaje.
Informática III 2009
Ing. Estela D'Agostino
47
Modelo de sincronización de
procesos
Operación envía (send):
– Asíncrona: el emisor continua trabajando sin saber si el mensaje
llegó o no (o se envió completamente o no).
– Síncrona: el emisor continua trabajando sólo cuando se recibió el
mensaje (o cuando se envió completamente).
– Invocación remota: el emisor continúa sólo cuando se recibió una
respuesta desde el receptor.
Informática III 2009
Ing. Estela D'Agostino
48
Primitivas con o sin bloqueo
• send síncrono o con
bloqueo: mientras se envía
el mensaje, el proceso
emisor se bloquea (la
instrucción siguiente se
ejecuta una vez que el
mensaje se haya enviado en
su totalidad).
• send asíncrono o sin
bloqueo: ¿Cuándo vuelve a
estar disponible el búffer?
Informática III 2009
Ing. Estela D'Agostino
49
Primitivas con o sin bloqueo
• send con bloqueo (CPU inactivo durante la
transmisión de los mensajes).
• send sin bloqueo, con copia (se desperdicia
el tiempo del CPU para la copia adicional).
• send sin bloqueo, con interrupción (dificulta
la programación).
Informática III 2009
Ing. Estela D'Agostino
50
Nombrado de procesos
Dirección:
nombrado directo:
envía <msj> <proceso>
nombrado indirecto:
envía <msj> <buzón>
Simetría:
simétrico: si el emisor y el
receptor se nombran
entre sí
envía <msj> <proceso>
espera <msj> <proceso>
asimétrico: acepta mensajes
de cualquier proceso
espera <msj>
Informática III 2009
Ing. Estela D'Agostino
51
Nombrado de procesos
• Una dirección se refiere a un proceso
específico (primitiva sin almacenamiento en
buffers).
• Una dirección se refiere a un buzón mailbox - (primitiva con almacenamiento en
buffers)
– Una llamada a receive elimina un mensaje del
buzón o se bloquea.
Informática III 2009
Ing. Estela D'Agostino
52
Estructura del mensaje
• Idealmente: cualquier objeto.
• Cada lenguaje ha impuesto sus restricciones.
Informática III 2009
Ing. Estela D'Agostino
53
Primitivas confiables vs. no
confiables
• Los mensajes se pueden perder.
• Si send es no confiable el sistema no garantiza
la entrega (se deja en manos de los usuarios).
• Se puede exigir al sistema del receptor enviar un
acuse de recibo (acknowledgement).
• Se puede utilizar la respuesta del servidor como
acuse de recibo.
Informática III 2009
Ing. Estela D'Agostino
54
Primitivas confiables vs. no
confiables
Informática III 2009
Ing. Estela D'Agostino
55
Acciones atómicas
• Hasta aquí la comunicación entre dos
procesos se expresó como una comunicación
simple.
No siempre ocurre así:
Ej: extracción por cajero automático
Necesito que todos vean un estado consistente del sistema.
Estado: valores de las variables en un momento dado de tiempo.
Informática III 2009
Ing. Estela D'Agostino
56
Acciones atómicas
Traspaso de fondos de una cuenta bancaria a otra:
Proceso de pedido de transferencia
Proceso de autenticación de cliente
Proceso de autenticación de cuenta a la que se transfiere
Proceso de debito
Proceso de Acreditación
Acción atómica
Informática III 2009
Ing. Estela D'Agostino
57
Acciones atómicas
• Una acción es atómica si los procesos que la
realizan no saben de la existencia de ningún otro
proceso activo, y ningún otro proceso activo tiene
constancia de las actividades de los procesos
durante el tiempo en el que están realizando la
acción.
• Una acción es atómica si los procesos que la
realizan no se comunican con otros procesos
mientras se está realizando la acción.
Informática III 2009
Ing. Estela D'Agostino
58
Acciones atómicas
• Una acción es atómica si los procesos que la
realizan no pueden detectar ningún cambio de
estado salvo aquellos realizados por ellos mismos,
y si no revelan sus cambios de estado hasta que la
acción se haya completado.
• Las acciones son atómicas si, en lo que respecta a
otros procesos, pueden ser consideradas
indivisibles e instantáneas, de forma que los
efectos sobre el sistema sean como si estuvieran
entrelazadas y no en concurrencia.
Informática III 2009
Ing. Estela D'Agostino
59
Acciones atómicas de dos fases
• Primer fase
– Petición de recursos
• Segunda fase
– Liberación de recursos
Si se liberan recursos antes que la acción atómica
finalice puede existir problemas con la recuperación de
un fallo.
Informática III 2009
Ing. Estela D'Agostino
60
Control de recursos
Tienen injerencia los procesos competitivos.
Aunque no se comuniquen entre ellos, pueden
comunicarse para coordinar el acceso a recursos.
Muy pocos recursos admiten el acceso concurrente
de procesos.
Informática III 2009
Ing. Estela D'Agostino
61
Control de recursos
Cuando varios procesos que compiten necesiten
recursos el modo de operación es el siguiente:
– Petición del recurso
– Utilización
– Liberación
Informática III 2009
Ing. Estela D'Agostino
62
Petición de recursos
• Un recurso se puede solicitar con:
– Acceso compartido: se puede utilizar
concurrentemente por más de un proceso.
– Acceso exclusivo: acceso en cada instante a un
único proceso.
Algunos se pueden utilizar en cualquier modo
Informática III 2009
Ing. Estela D'Agostino
63
Petición de recursos
• Si un proceso pide acceso compartido
mientras otro lo está usando en forma
exclusiva, entonces debe esperar.
Si se estaba usando en forma compartida
puede seguir.
Informática III 2009
Ing. Estela D'Agostino
64
Petición de recursos
• Como los procesos pueden bloquearse al
solicitar recursos, no deben pedirlos hasta
que lo necesiten.
• Una vez asignados deben liberarse tan
pronto como sea posible, una vez que la
acción que se quería realizar con el recurso
haya finalizado
Informática III 2009
Ing. Estela D'Agostino
65
Interbloqueo ( deadlock, abrazo mortal)
• Dos procesos forman un interbloqueo cuando cada
uno mantiene un recurso mientras que espera el
recurso mantenido por el otro.
Interbloqueo activo
• Dos procesos forman un interbloqueo activo si cada
uno se ejecuta, pero ninguno es capaz de avanzar.
Informática III 2009
Ing. Estela D'Agostino
66
Interbloqueo
Condiciones necesarias
•
•
•
•
Exclusión mutua.
Espera circular.
No desalojo.
Mantenimiento y espera.
Informática III 2009
Ing. Estela D'Agostino
67
Inanición
• Varios
procesos
están
intentando
continuamente conseguir acceso exclusivo al
mismo recurso. Si la política con que se
asignan no es justa, puede que un proceso no
acceda nunca al recurso.
• Vivacidad (liveness): Si se supone que algo
puede ocurrir, en algún momento ocurrirá.
Informática III 2009
Ing. Estela D'Agostino
68
Descargar