Professional Documents
Culture Documents
Contenidos
Concurrencia y paralelismo Sistema concurrente Programacin concurrente Lenguaje concurrente Arquitectura paralela Sistema distribuido
SistemasConcurrentes
Qu es la concurrencia?
Definicin de diccionario: coincidir en el espacio
existencia simultnea de varios procesos en ejecucin. Ojo, concurrencia existencia simultnea no implica ejecucin simultnea.
SistemasConcurrentes
Paralelismo vs concurrencia
El paralelismo es un caso particular de la concurrencia. Se habla de paralelismo cuando ocurre la ejecucin simultnea de instrucciones:
arquitecturas paralelas procesamiento paralelo algoritmos paralelos programacin paralela
SistemasConcurrentes
Procesos y concurrencia
Una forma de ver la concurrencia es como un conjunto de actividades que se desarrollan de forma simultnea. En informtica, cada una de esas actividades se suele llamar proceso.
SistemasConcurrentes
SistemasConcurrentes
Qu es un sistema concurrente?
Es un sistema informtico en el que la concurrencia desempea un papel importante. Ejemplos:
sistemas sistemas sistemas sistemas operativos de gestin de bases de datos (DBMS) de tiempo real distribuidos
SistemasConcurrentes
SistemasConcurrentes
Ejercicio
Dar un ejemplo de sistema en la naturaleza que sea concurrente Dar dos ejemplos de sistemas inherentemente concurrentes Dar dos casos de sistemas potencialmente concurrentes en los que nos beneficiaramos de la utilizacin de la concurrencia
SistemasConcurrentes
Conclusiones
La concurrencia est presente en la Naturaleza y en los sistemas informticos. El hardware multiprocesador permite realizar ms trabajo en menos tiempo. De ah se derivan dos grandes objetivos:
aprovechar la concurrencia existente en el hardware facilitar al programador su misin de modelar sistemas concurrentes
SistemasConcurrentes
De forma automtica
El sistema operativo se encarga automticamente (ej. multiprogramacin) El compilador detecta la concurrencia implcita en nuestros programas secuenciales
SistemasConcurrentes
Contenidos
Concurrencia y paralelismo Sistema concurrente Programacin concurrente Lenguaje concurrente Arquitectura paralela Sistema distribuido
SistemasConcurrentes
SistemasConcurrentes
SistemasConcurrentes
SistemasConcurrentes
Lenguajes concurrentes
Aquellos que incorporan caractersticas que permiten expresar la concurrencia directamente, sin recurrir a servicios del s.o., bibliotecas, etc. Normalmente incluyen mecanismos de sincronizacin y comunicacin entre procesos Ejemplos: Ada, Java, SR, Occam, PARLOG...
SistemasConcurrentes
Instrucciones vectoriales:
type vector is array(1..10) of int; var a,b,c : vector; a := b*c + 2*a;
Tuberas (unix):
grep palabra | sort | lpr
SistemasConcurrentes
Sincronizacin y comunicacin
Los procesos concurrentes tendrn necesidad de comunicarse informacin. Adems, ser necesario en ocasiones detener a un proceso hasta que se produzca un determinado evento o se den ciertas condiciones sincronizacin Los lenguajes concurrentes deben proporcionar mecanismos de sincronizacin y comunicacin.
SistemasConcurrentes
Recursos compartidos
Regiones crticas Monitores Objetos protegidos
SistemasConcurrentes
SistemasConcurrentes
Programacin paralela
Cuando estamos especialmente interesados en escribir cdigo para ser utilizado en un sistema multiprocesador, hablamos de programacin paralela o algoritmos paralelos. Es un caso particular de la programacin concurrente en el que prima la ejecucin paralela.
SistemasConcurrentes
Ejercicio
Usando la sentencia concurrente, disear algoritmos concurrentes para:
multiplicar dos matrices sumar una lista de N nmeros (2 mtodos) ordenar un vector obtener los nmeros primos entre 2 y N
SistemasConcurrentes
SistemasConcurrentes
Contenidos
Concurrencia y paralelismo Sistema concurrente Programacin concurrente Lenguaje concurrente Arquitectura paralela Sistema distribuido
SistemasConcurrentes
Arquitecturas paralelas
Son sistemas informticos con ms de un procesador. Dos tipos: Estrechamente acoplados
los procesadores comparten memoria y reloj normalmente llamados multiprocesadores
Dbilmente acoplados
no comparten memoria ni reloj sistemas distribuidos
SistemasConcurrentes
Multiprocesadores
Sistemas con ms de un procesador. Pueden ejecutar varias instrucciones simultneamente (en paralelo). Sistemas estrechamente acoplados: los procesadores comparten la memoria (aunque puede ser ms o menos difcil acceder a la memoria de otro procesador). Ventaja:
aumento de velocidad de procesamiento con bajo coste
Inconveniente:
Escalable slo hasta decenas o centenares de procesadores
SistemasConcurrentes
Sistemas distribuidos
Mltiples procesadores conectados mediante una red. Sistemas dbilmente acoplados: los procesadores no comparten memoria ni reloj. Los sistemas conectados pueden ser de cualquier tipo. Escalable hasta millones de procesadores (ej. Internet)
SistemasConcurrentes
SistemasConcurrentes
SistemasConcurrentes