Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clase 4
Clase 4
12-4-2004 1 1
Programación Concurrente 2004 - Clase
Metodología del Curso 2004
Teoría.
Material para leer (bibliografía, InterNet, etc).
Posibilidad de promoción de la Teoría.
Preguntas teóricas en las clases.
Pruebas teóricas para la promoción.
Práctica.
Explicaciones y atención de consultas.
Un examen parcial.
Es necesario aprobarlo para que se corrijan los exámenes teóricos de la
promoción.
La historia de la concurrencia=
En los 60’s == Evolución de los sistemas operativos. Controladores de
dispositivos independientes(canales). Multiprogramación.
En los 70´s== Formalización de la concurrencia en los lenguajes.
En los 80’s== Redes, procesamiento distribuido.
En los 90’s == MPP , InterNet, CS, Web computing...
Hoy== Cluster computing, Grid computing, Procesamiento masivo de
datos distribuidos, Real Time Distributed systems...
Programación Concurrente 2004 - Clase 1
12-4-2004 5
Algunos conceptos del Hardware.
Ejemplos típicos:
Sistemas de ventanas en PCs o WS.
Time sharing en sistemas operativos multiprocesador.
Sistemas de tiempo real en plantas industriales.
Ejemplos típicos:
Servidores de archivos (recursos) en una red.
Sistemas de Bases de datos distribuidas (bancos, reservas de vuelos).
Servidores WEB distribuidos.
Arquitecturas cliente-servidor.
Sistemas tolerantes a fallas.
Ejemplos típicos:
Cálculo científico. Modelos de sistemas (meteorología, movimiento
planetario).
Gráficos, procesamiento de imágenes, realidad virtual, procesamiento
de video.
Problemas combinatorios y de optimización lineal y no lineal. Modelos
econométricos.
Programación Concurrente 2004 - Clase 1
12-4-2004 9
Paradigmas de resolución de
programas concurrentes
12-4-2004 11
Paradigmas de resolución de
programas concurrentes
SINCRONIZACIÓN:
Se debe asegurar el orden correcto (incluyendo el tiempo) de las
acciones que los procesos ejecutan. Este orden es dinámico e
interdependiente.El objetivo de la sincronización es restringir las
“historias”o “threads” de un programa concurrente sólo a las permitidas.
Pasaje de Mensajes:
Es necesario establecer un “canal” (lógico o físico) para trasmitir
información entre procesos. También el lenguaje debe proveer un
protocolo adecuado.
Para que la comunicación sea efectiva los procesos deben “saber”
cuando tienen mensajes para leer y cuando deben trasmitir mensajes.
Programación Concurrente 2004 - Clase 1
12-4-2004 24
Mecanismos de comunicación y
sincronización entre procesos.
La solución secuencial:
double a[n,n], b[n,n], c[n,n];
for [i = 0 to n-1] {
for [j = 0 to n-1] {
# compute inner product of a[i,*] and b[*,j]
c[i,j] = 0.0;
for [k = 0 to n-1]
c[i,j] = c[i,j] + a[i,k]*b[k,j];
}
}
asignación simple: x = e,
sentencia compuesta asignación: x = x + 1; y = y – 1; z= x+y;
swap: v1 :=: v2
skip Termina inmediatamente y no tiene efecto sobre ninguna
variable de programa.
Sentencias de alternativa: IF B S
B expresión booleana (condición),
S una instrucción simple o compuesta
B “guarda” a S pues S no se ejecuta si B no es verdadera.
Puede existir una condición ELSE para ¬B.
El cuerpo del for-all se ejecuta una vez por cada valor de la
variable de iteración.
Si hay cláusula such-that, la variable de iteración toma sólo los
valores para los que B es verdadera.
Si hay más de un cuantificador el cuerpo del fa se ejecuta para
cada combinación de valores.
Múltiples threads de control (en el mismo t ?), uno por cada proceso.
do (not B) skip od