Академический Документы
Профессиональный Документы
Культура Документы
Clase 1
Facultad de Informtica
UNLP
Metodologa
Comunicacin
WebUNLP (webunlp.unlp.edu.ar) Solicitar inscripcin
En caso de problema con la plataforma:
Correo a: Dr. Marcelo Naiouf (mnaiouf@lidi.info.unlp.edu.ar)
Teora
Foundations of Multithreaded, Parallel, and Distributed Programming.
G. Andrews. Addison Wesley (www.cs.arizona.edu/people/greg/mpdbook
Metodologa
Teora
- Clases
- Consultas
- Cuestionarios (opcionales)
Explicacin de ejercicios
Integrado con las teoras
Prctica
Consultas (Martes, Jueves, Sbados)
20/8/2013
Metodologa
Para obtener la cursada
- Parcial normal: 3 fechas
- Parcial reducido: precondicin 3 de 4
parcialitos aprobados.
(Parcialitos en la teora de los lunes a la
maana)
Para obtener el final
- Final tradicional (terico-prctico)
- Promocin
20/8/2013
Metodologa
Optativo: promocin de teora
- Rendir al menos 3 de 4 parcialitos tericos (teora lunes
maana)
- Una prueba terica (marzo)
- Trabajo individual (tiempo hasta marzo 2016)
- Coloquio
20/8/2013
Objetivos
Plantear los fundamentos de programacin concurrente,
estudiando sintaxis y semntica, as como herramientas y
lenguajes p/ la resolucin de programas concurrentes.
20/8/2013
Temas
Conceptos
bsicos.
Concurrencia
y
arquitecturas
de
procesamiento. Multithreading, Procesamiento Distribuido,
Procesamiento Paralelo.
Concurrencia por memoria compartida. Procesos y sincronizacin.
Locks y Barreras. Semforos. Monitores. Resolucin de
problemas concurrentes con sincronizacin por MC.
Concurrencia por pasaje de mensajes. Mensajes asincrnicos.
Mensajes sincrnicos. Remote Procedure Call (RPC).
Rendezvous. Paradigmas de interaccin entre procesos.
Lenguajes que soportan concurrencia. Caractersticas. Similitudes
y diferencias
Introduccin a la programacin paralela. Conceptos, herramientas
de desarrollo, aplicaciones.
20/8/2013
Qu es la concurrencia?
RAE: Coincidencia, concurso simultneo de varias circunstancias
Dnde encontramos
concurrencia?
Concurrency is everywhere
Concurrency is a ubiquitious phenomenom
Est presente en la naturaleza (sistemas biolgicos que comprenden
un gran nmero de clulas evolucionando simultneamente y
realizando procesos independientes), la vida diaria, los sistemas de
cmputo, etc
Cualquier sistema ms o menos inteligente o complejo exhibe
concurrencia
10
Concurrencia natural
Problema: Mostrar en pantalla el movimiento de una
pelota
Pelota representada por posicin actual (Pos), intervalo que indica
cada cuntos instantes de tiempo se mueve (Interv), distancia que
marca cunto se mueve, y direccin del movimiento
Cdigo secuencial:
Programa pelota
Mientras (true)
Ubicar pelota en Pos
Mostrar pelota en Pos
Demorar (interv)
Calcular la nueva Pos
Fin mientras
Fin programa
20/8/2013
11
Concurrencia natural
Sino si Prox_mov_1 > Prox_mov_2
entonces
Demorar (Interv_2)
Programa dos_pelotas
Calcular Pos_2
Ubicar pelota_1 en posicin inicial
Mostrar pelota_2 en Pos_2
Ubicar pelota_2 en posicin inicial
Prox_mov_1 = Prox_mov_1
Mostrar pelota_1 en Pos_1
Prox_mov_2
Mostrar pelota_2 en Pos_2
Prox_mov_2 = Prox_mov_2 +
Prox_mov_1 = Interv_1
Interv_2
Prox_mov_2 = Interv_2
Sino # son iguales
Mientras (true)
Demorar(Interv_1) #o Interv_2
Si Prox_mov_1 < Prox_mov_2
Calcular Pos_1
entonces
Calcular Pos_2
Demorar (Interv_1)
Mostrar pelota_1 en Pos_1
Calcular Pos_1
Mostrar pelota_2 en Pos_2
Mostrar pelota1 en Pos_1
Prox_mov_1 =
Prox_mov_2 = Prox_mov_2
Prox_mov_2 =
Prox_mov_1
Fin Si
Prox_mov_1 =
Fin Si
Prox_mov_1 + Interv_1
Fin mientras
Fin programa
20/8/2013
12
Programacin Concurrente 2013 (P.03 y P.07) - Clase 1 - Dr. M. Naiouf
Si fueran 2 pelotas
Concurrencia natural
- Obliga a establecer un orden en la actualizacin de cada
objeto a la nueva posicin
- Cdigo ms complejo de desarrollar y mantener
- Si fueran N pelotas? Y si pudieran colisionar?
Ms natural: cada pelota es un elemento independiente que
acta concurrentemente con otros
Mientras (true)
Ubicar pelota i en posicin_i
Mostrar pelota en Pos_i
Demorar (interv_i)
Calcular la nueva posicin_i
Fin mientras
No hay un orden preestablecido en la ejecucin
20/8/2013
13
Por qu es necesaria la
Programacin Concurrente?
No hay ms ciclos de reloj Multicore por qu y para
qu?
Aplicaciones con estructura ms natural.
El mundo no es secuencial
14
15
Conexiones
20/8/2013
16
Un poco de historia
Evolucin en respuesta a los cambios tecnolgicos
De enfoques ad-hoc iniciales a tcnicas grales de
programacin
-60s Evolucin de los SO.
Controladores de dispositivos (canales) independientes
permitiendo E/S Interrupciones. No determinismo.
Multiprogramacin. Problema de la seccin crtica.
- 70s Formalizacin de la concurrencia en los lenguajes
- 80s Redes, procesamiento distribuido
- 90s MPP, Internet, C/S, Web computing
- 2000s procesamiento masivo de datos distribuidos, SDTR,
computacin mvil, Cluster y multicluster computing, sistemas
colaborativos, computacin pervasiva y ubicua, grid computing,
virtualizacin
- Hoy computacin elstica, cloud computing, green computing,
20/8/2013
17
La visin de Hoare
Hoare: Communicating Sequential Processes (1985)
- Procesos (P, Q, ) y alfabetos (P, Q, ) o eventos en que
encajan los procesos (a, b, )
- Prefijo: a P
- Chance o eleccin interna: P | Q (no determinismo)
- Eleccin externa: P [] Q (la eleccin la realiza el entorno)
- Concurrencia:
P || Q
- Interleaving:
P ||| Q
20/8/2013
18
La visin de Hoare
MAQUINA = (moneda (chocolate STOP))
MAQUINA = (moneda (chocolate MAQUINA))
MAQUINA = X: {moneda, chocolate}.(moneda (chocolate X))
MAQUINA2 = X. moneda (chocolate X | alfajor X)
MAQUINA-CRED = X.(moneda chocolate X | chocolate
moneda X)
RUIDOSA = (moneda clink chocolate clunk RUIDOSA)
CLIENTE = {moneda, chocolate, protesta, alfajor}
CLIENTE = (moneda (alfajor CLIENTE | protesta
chocolate CLIENTE))
(RUIDOSA || CLIENTE) = X.(moneda ( clink protesta
chocolate clunk X | protesta clink chocolate clunk
X ))
(MAQUINA ||| MAQUINA )=MAQUINA2CHOC #despacha hasta 2
chocs
20/8/2013
19
Qu es un proceso?
Programa secuencial:
un solo flujo de control que ejecuta una instruccin y
cuando esta finaliza ejecuta la siguiente
20/8/2013
20
Posibles comportamientos
de los procesos
Procesos independientes
20/8/2013
Relativamente raros
Poco interesantes
21
Posibles comportamientos
de los procesos
Competencia
Tpico en SO y redes, debido a recursos
compartidos
20/8/2013
22
Posibles comportamientos
de los procesos
Cooperacin
20/8/2013
23
Procesamiento secuencial,
concurrente y paralelo
Analicemos la solucin secuencial y monoprocesador (UNA
mquina) para fabricar un objeto compuesto por N partes o
mdulos.
20/8/2013
24
Procesamiento secuencial,
concurrente y paralelo
Si disponemos de N mquinas para fabricar el objeto, y no hay
dependencias (x ej de la materia prima), cada una puede trabajar
al mismo tiempo en una parte
Consecuencias
- Menor tiempo para completar el trabajo
- Menor esfuerzo individual
- Paralelismo del hardware
Dificultades
- Distribucin de la carga de trabajo
- Necesidad de compartir recursos evitando conflictos
- Necesidad de esperarse en puntos clave
- Necesidad de comunicarse
- Tratamiento de las fallas
- Asignacin de una de las mquinas para el ensamblado (Cual??)
20/8/2013
25
Procesamiento secuencial,
concurrente y paralelo
Vimos las soluciones secuencial y paralela (multiplicando el hard) en
el problema de fabricar un objeto (sistema) de mltiples partes
Dificultades
- Distribucin de carga de trabajo
- Necesidad de compartir recursos evitando conflictos
- Necesidad de esperarse en puntos clave
- Necesidad de comunicarse
- Necesidad de recuperar el estado de cada proceso al retomarlo.
CONCURRENCIA Concepto de software no restringido a una
arquitectura particular de hardware ni a un nmero
determinado de procesadores
20/8/2013
26
Procesamiento secuencial,
concurrente y paralelo
Multiprogramacin en un procesador
- El tiempo de CPU es compartido entre varios procesos x ej por
time slicing
- El SO controla y planifica procesos: si el slice expir o el
proceso se bloquea el SO hace context (process) switch
Process switch: suspender el proceso actual y
restaurar otro
1. Salvar el estado actual en memoria.
Agregar el proceso al final de la cola de
ready o una cola de wait
2. Sacar un proceso de la cabeza de la cola
ready. Restaurar su estado y ponerlo a
correr
Reanudar un proceso bloqueado: mover un
proceso de la cola de wait a la de ready
20/8/2013
27
Procesamiento secuencial,
concurrente y paralelo
Cambios de estado de los procesos (recordar de
S.O.)
20/8/2013
28
Programa Concurrente
Un programa concurrente especifica dos o ms programas
secuenciales que pueden ejecutarse concurrentemente en el
tiempo como tareas o procesos.
Un proceso o tarea es un elemento concurrente abstracto que puede
ejecutarse simultneamente con otros procesos o tareas (en
paralelo), si el hardware lo permite
29
Concurrencia simultnea
- Procesamiento simultneo fsicamente
- Requiere un sistema multiprocesador o
multicore
- Paralelismo full
20/8/2013
30
Procesos e hilos
Todos los sistemas operativos soportan procesos
- Cada proceso se ejecuta en una mquina virtual distinta
Algunos sistemas operativos soportan procesos ligeros (hilos o
threads)
- Proceso liviano que tiene su propio contador de programa
y su pila de ejecucin, pero no controla el contexto pesado (por
ejemplo, las tablas de pgina).
- Todos los hilos de un proceso comparten la misma mquina
virtual
- Tienen acceso al mismo espacio de memoria
- El programador o el lenguaje deben proporcionar
mecanismos para evitar interferencias
- La concurrencia puede estar soportada por
el lenguaje: Java, Ada, occam2
el sistema operativo: C/POSIX
20/8/2013
31
Secuencialidad y concurrencia
Programa secuencial
- totalmente ordenado
- determinstico: para los mismos datos de entrada, ejecuta siempre
la misma secuencia de instrucciones y obtiene la misma salida
Esto no es verdad para los programas concurrentes...
Ejemplo
x=0; //P
y=0; //Q
z=0; //R
- En este caso, el orden de ejecucin es irrelevante
- Tener la computacin distribuida en 3 mquinas sera ms rpido
- Nota: hay instrucciones que requieren ejecucin secuencial (x ej,
x=1; x=x+1;)
20/8/2013
32
Secuencialidad y concurrencia
Concurrencia lgica
Qu pasa si tenemos slo 1 o 2 procesadores?
- qu instrucciones ejecutamos primero
- importa?
RQP
Darn el mismo resultado
20/8/2013
33
Secuencialidad y concurrencia
Orden parcial
Las instrucciones pueden tener overlapping:
- si descomponemos P en p1, p2, ..., pn (tambin Q y R)
- podemos tener los ordenamientos
p1,p2,q1,r1,q2
q1,r1,q2,p1
La nica regla es que pi ejecuta antes que pj si i<j (orden
parcial)
No sabemos nada respecto del orden efectivo de ejecucin
(importa?)
20/8/2013
34
Secuencialidad y concurrencia
Orden
En el caso anterior no nos preocup el orden... cualquiera de las
ejecuciones (con distinto orden) dar el mismo resultado
Pero en general esto no es as: diferentes ejecuciones, con la
misma entrada, pueden dar distintos resultados
Ejemplo: Sup. que x es 5
x=0; //P
x=x+1; //Q
Escenario 1
P Q x=1
Escenario 2
Q P x=0
35
Concurrencia a nivel de HW
Lmite fsico en la velocidad de los procesadores
Mquinas monoprocesador?? Ya no pueden mejorar
Ms procesadores por chip para tener mayor potencia de
cmputo
CPUs Multicore clusters de multicore > consumo
Cmo usarlos eficientemente? Programacin concurrente
y paralela
20/8/2013
36
Concurrencia a nivel de HW
Niveles de memoria
Jerarqua de memoria. Consistencia?
Diferencias de tamao y tiempo de acceso
Localidad temporal y espacial de los datos
Cache Nivel 2
Cache Nivel 1
CPU
Tiempo de acceso
Tamao
Memoria Principal
20/8/2013
37
Concurrencia a nivel de HW
Multiprocesadores de memoria compartida.
La interaccin se da modificando datos almacenados en la MC
- Esquemas UMA con bus o crossbar switch (SMP,
multiprocesadores simtricos). Problema de sincronizacin y
consistencia
- Esquemas NUMA para mayor nmero de procesadores
distribuidos.
- Problema de consistencia
UMA
20/8/2013
NUMA
38
Concurrencia a nivel de HW
20/8/2013
L2
L3
Shared Memory
L2
L3
L2
L2
P1
P2
39
Concurrencia a nivel de HW
Multiprocesadores con memoria distribuida.
Procesadores conectados por una red. C/u tiene memoria local y la
interaccin es slo por pasaje de mensajes.
Grado de acoplamiento de los procesadores:
- Multicomputadores (tightly coupled machine). Procesadores y red
fsicamente cerca. Pocas aplicaciones a la vez, cada una usando un
conjunto de procesadores. Alto ancho de banda y velocidad.
- Redes (loosely coupled multiprocessor).
- NOWs / Clusters.
- Memoria compartida distribuida.
20/8/2013
40
Clases de aplicaciones
Programacin Concurrente
- organizar software que consta
independientes
- usar uno o mltiples procesadores
de
partes
(relativamente)
20/8/2013
41
Clases de aplicaciones
Ejecucin de N procesos independientes en M procesadores
(N>M).
Un sistema de software de multithreading maneja simultneamente
tareas independientes, asignando los procesadores de acuerdo a
alguna poltica (ej, por tiempos).
Organizacin ms natural como un programa concurrente.
Ejemplos:
- Sistemas de ventanas en PCs o WS
- Sistemas Operativos time-shared y multiprocesador
- Sistemas de tiempo real (x ej, en plantas industriales o medicina)
20/8/2013
42
Clases de aplicaciones
Cmputo distribuido
Una red de comunicaciones vincula procesadores diferentes sobre
los que se ejecutan procesos que se comunican esencialmente por
mensajes.
Cada componente del sistema distribuido puede hacer a su vez
multithreading.
Ejemplos:
- Servidores de archivos en una red
- Sistemas de BD en bancos y aerolneas (acceso a datos remotos)
- Servidores Web distribuidos (acceso a datos remotos)
- Sistemas corporativos que integran componentes de una empresa
- Sistemas fault-tolerant que incrementan la confiabilidad
20/8/2013
43
Clases de aplicaciones
Procesamiento paralelo
Resolver un problema en el menor tiempo (o un problema + grande
en aprox. el mismo tiempo) usando una arq. multiprocesador en la
que se pueda distribuir la tarea global en tareas (independientes?
interdependientes?) que puedan ejecutarse en procesadores.
Paralelismo de datos y paralelismo de procesos.
Ejemplos:
- Clculo cientfico. Modelos de sistemas (meteorologa, movimiento
planetario, ...)
- Grficos, procesamiento de imgenes, efectos especiales,
procesamiento de video, realidad virtual
- Problemas combinatorios y de optimizacin lineal o no lineal.
Modelos economtricos
20/8/2013
44
Un ejemplo simple
Suma de 32 nmeros
45
Speedup S = Ts / Tp
Qu significa??
Rango de valores (x qu est limitado?). Grfica.
Eficiencia E = S / p
Qu representa??
Rango de valores. Grfica.
En la ejecucin concurrente, el speedup es menor
20/8/2013
46
20/8/2013
47
Proceso 2
Memoria
Proceso 3
20/8/2013
Proceso 4
48
Proceso 1
Proceso 2
Memoria
Proceso 3
Proceso 4
49
20/8/2013
50
51
Sincronizacin
El problema de la reserva de pasajes
20/8/2013
52
Sincronizacin
20/8/2013
53
Sincronizacin
20/8/2013
54
Sincronizacin
20/8/2013
55
Sincronizacin
20/8/2013
56
Sincronizacin
20/8/2013
57
Sincronizacin
20/8/2013
58
Sincronizacin
20/8/2013
59
Sincronizacin
Ejemplos de sincronizacin
- Completar las escrituras antes de que comience una
lectura
- Cajero: dar el dinero slo luego de haber verificado
la tarjeta
- Compilar una clase antes de reanudar la ejecucin
- No esperar por algo indefinidamente, si la otra parte
est muerta
20/8/2013
60
Sincronizacin
En la mayora de los sistemas el tiempo absoluto no es importante
Con frecuencia los sistemas son actualizados con componentes ms
rpidas. La correccin no debe depender del tiempo absoluto
load
load
add
add
mult
mult
store
store
20/8/2013
l2
l1
61
Sincronizacin
Sincronizacin posesin de informacin acerca de otro
proceso para coordinar actividades.
Estado de un programa concurrente.
Cada proceso ejecuta un conjunto de sentencias, cada una
implementada por una o ms acciones atmicas (indivisibles, los
estados intermedios son invisibles para los otros procesos).
Historia (trace) de un programa concurrente: es una ejecucin dada
por un intercalado (interleaving) particular de acciones individuales
de los procesos. S0 S1 S2 SN
El nmero posible de historias de un programa concurrente es
generalmente enorme.
62
Sincronizacin
Algunas historias son vlidas y otras no.
Se debe asegurar un orden temporal entre las
acciones que ejecutan los procesos.
Las tareas se intercalan en el tiempo deben fijarse
restricciones
20/8/2013
63
Formas de sincronizacin
Sincronizacin por exclusin mutua
Asegurar que slo un proceso tenga acceso a un recurso compartido
en un instante de tiempo.
Si el programa tiene secciones crticas que pueden compartir ms de
un proceso, EM evita que dos o ms procesos puedan encontrarse
en la misma seccin crtica al mismo tiempo.
Sincronizacin por condicin
Permite bloquear la ejecucin de un proceso hasta que se cumpla
una condicin dada.
Ejemplo de los dos mecanismos de sincronizacin en un problema
de utilizacin de un rea de memoria compartida (buffer limitado con
productores y consumidores)
20/8/2013
64
20/8/2013
65
20/8/2013
66
67
20/8/2013
68
20/8/2013
69
-Adquisicin incremental
-
-No-preemption
-
-Espera cclica
-
20/8/2013
70
Algunos comentarios
Posible reduccin de performance por overhead de context switch,
comunicacin, sincronizacin, ...
71
procesos
que
pueden
ejecutarse
Mecanismos de sincronizacin
Mecanismos de comunicacin entre los procesos.
20/8/2013
72
Resumen de conceptos
La Concurrencia es un concepto de software.
La Programacin Paralela se asocia con la ejecucin concurrente en
mltiples procesadores que pueden tener memoria compartida, y
generalmente con un objetivo de incrementar performance.
La Programacin Distribuida es un caso de concurrencia con
mltiples procesadores y sin memoria compartida.
73
Tareas propuestas
Leer los captulos 1 y 2 del libro de Andrews
Leer los ejemplos de paralelismo recursivo, productores y
consumidores, clientes y servidores y el cdigo de la multiplicacin
de matrices distribuida del Captulo 1 (Andrews).
Investigar las primitivas de programacin concurrente de algn
lenguaje de programacin.
20/8/2013
74