Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

31
Sistemas Concurrentes: Sistemas Concurrentes: Conceptos fundamentales Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003

Transcript of Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

Page 1: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

Sistemas Concurrentes:Sistemas Concurrentes:Conceptos fundamentalesConceptos fundamentales

I.T. Informática de SistemasCurso 2002-2003

Page 2: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Contenidos

• Concurrencia y paralelismo• Sistema concurrente• Programación concurrente• Lenguaje concurrente• Arquitectura paralela• Sistema distribuido

Page 3: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

¿Qué es la concurrencia?

• Definición de diccionario: coincidir en el espacio o en el tiempo dos o más personas o cosas.

• En Informática, se habla de concurrencia cuando hay unaexistencia simultánea de varios procesos en ejecución.

• Ojo, concurrencia existencia simultánea no implica ejecución simultánea.

Page 4: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Paralelismo vs concurrencia

• El paralelismo es un caso particular de la concurrencia.

• Se habla de paralelismo cuando ocurre la ejecución simultánea de instrucciones: arquitecturas paralelas procesamiento paralelo algoritmos paralelos programación paralela

Page 5: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Procesos y concurrencia

• Una forma de ver la concurrencia es como un conjunto de actividades que se desarrollan de forma simultánea.

• En informática, cada una de esas actividades se suele llamar proceso.

Page 6: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

¿Dónde se encuentra la concurrencia?

• En la Naturaleza (el problema que se modela) ¿ejemplos?

• En el hardware (la herramienta para solucionar el problema): ejecución paralela de instrucciones funcionamiento paralelo de los periféricos procesadores múltiples sistemas distribuidos

Page 7: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

¿Qué es un sistema concurrente?

• Es un sistema informático en el que la concurrencia desempeña un papel importante.

• Ejemplos: sistemas operativos sistemas de gestión de bases de datos (DBMS) sistemas de tiempo real sistemas distribuidos

Page 8: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Concurrencia inherente o potencial

• Sistemas inherentemente concurrentes: el entorno con el que interactúan, o el entorno

que modelan tiene forzosamente actividades simultáneas

p.ej. red de cajeros automáticos

• Sistemas potencialmente concurrentes: no es estrictamente necesario que haya

concurrencia, pero se puede sacar partido de ella

p.ej. para aumentar la velocidad de ejecución

Page 9: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

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 beneficiaríamos de la utilización de la concurrencia

Page 10: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Conclusiones

• La concurrencia está presente en la Naturaleza y en los sistemas informáticos.

• El hardware multiprocesador permite realizar más trabajo en menos tiempo.

• De ahí se derivan dos grandes objetivos: aprovechar la concurrencia existente en el

hardware facilitar al programador su misión de modelar

sistemas concurrentes

Page 11: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Técnicas para producir actividades concurrentes en el computador

• De forma manual Trabajar directamente sobre el hardware Usar llamadas al sistema o bibliotecas de

software (ejs. PVM, pthreads) Expresarla en un lenguaje de alto nivel

• De forma automática El sistema operativo se encarga

automáticamente (ej. multiprogramación) El compilador detecta la concurrencia implícita

en nuestros programas secuenciales

Page 12: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Contenidos

• Concurrencia y paralelismo• Sistema concurrente• Programación concurrente• Lenguaje concurrente• Arquitectura paralela• Sistema distribuido

Page 13: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Programación concurrente: definición

• Conjunto de técnicas y notaciones para expresar el paralelismo potencial de una aplicación,tratando los problemas de sincronización y comunicación entre procesos.

• La programación concurrente, en sentido amplio, no trata de la implementación del paralelismo en el hardware.

Page 14: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Motivación de la programación concurrente

• Aprovechar el hardware multiprocesador• Aumentar la productividad de la CPU• Facilitar la escritura de aplicaciones donde

la concurrencia sea un elemento importante

Page 15: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Lenguajes de alto nivel

• Los LAN permiten programar en un nivel más cercano al ámbito del problema (problem domain) por medio de la abstracción.

• Además, los lenguajes y el S.O. proporcionan herramientas para usar con más comodidad los recursos del hardware.

Page 16: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Lenguajes de alto nivel

• A lo largo de la historia, se han inventado abstracciones en los LAN que han resultado muy útiles para la comunidad informática: abstracción de expresiones (FORTRAN...) abstracción del flujo de control: programación

estructurada secuencial (Algol...) abstracción de la lógica y el álgebra (Lisp, Prolog...) abstracción de datos (Algol, Pascal...) modelado de objetos (Smalltalk, C++...)

¿abstracción de la concurrencia?

Page 17: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Lenguajes concurrentes

• Aquellos que incorporan características que permiten expresar la concurrencia directamente, sin recurrir a servicios del s.o., bibliotecas, etc.

• Normalmente incluyen mecanismos de sincronización y comunicación entre procesos

• Ejemplos: Ada, Java, SR, Occam, PARLOG...

Page 18: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

¿Cómo expresar la concurrencia?

• Sentencia concurrente:cobegin P; Q; Rcoend;

• Sentencia concurrente múltiple:forall i:=1 to 1000 do

P(i);

• Tuberías (unix):grep palabra | sort | lpr

• Instrucciones vectoriales:type vector is array(1..10) of int;var a,b,c : vector;a := b*c + 2*a;

• Objetos que representan procesos:task A is begin P; end;task B is begin Q; end;task C is begin R; end;

Page 19: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Sincronización y comunicación

• Los procesos concurrentes tendrán necesidad de comunicarse información.

• Además, será necesario en ocasiones detener a un proceso hasta que se produzca un determinado evento o se den ciertas condiciones sincronización

• Los lenguajes concurrentes deben proporcionar mecanismos de sincronización y comunicación.

Page 20: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Mecanismos clásicos de sincronización

• Mecanismos de señalización Semáforos Cerrojos y variables condición Señales, eventos Retardos temporales

• Recursos compartidos Regiones críticas Monitores Objetos protegidos

Page 21: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Mecanismos clásicos de comunicación

• Comunicación directa (memoria compartida)

• Canales• Buzones • Llamada a procedimiento remoto (RPC)• etc.

Page 22: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Programación paralela

• Cuando estamos especialmente interesados en escribir código para ser utilizado en un sistema multiprocesador, hablamos de programación paralela o algoritmos paralelos.

• Es un caso particular de la programación concurrente en el que prima la ejecución paralela.

Page 23: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Ejercicio

• Usando la sentencia concurrente, diseñar algoritmos concurrentes para: multiplicar dos matrices sumar una lista de N números (2 métodos) ordenar un vector obtener los números primos entre 2 y N

• tratando de obtener la máxima concurrencia

Page 24: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

La gran pregunta: ¿es necesaria la programación concurrente?

• ¿No basta con la programación secuencial de toda la vida?

• ¿Puede la prog. sec. modelar bien un sistema concurrente?

• ¿Puede la prog. sec. aprovechar la concurrencia existente en el hardware?

Page 25: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Contenidos

• Concurrencia y paralelismo• Sistema concurrente• Programación concurrente• Lenguaje concurrente• Arquitectura paralela• Sistema distribuido

Page 26: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Arquitecturas paralelas

• Son sistemas informáticos con más de un procesador. Dos tipos:

• Estrechamente acoplados los procesadores comparten memoria y reloj normalmente llamados multiprocesadores

• Débilmente acoplados no comparten memoria ni reloj sistemas distribuidos

Page 27: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Multiprocesadores

• Sistemas con más de un procesador. Pueden ejecutar varias instrucciones simultáneamente (en paralelo).

• Sistemas estrechamente acoplados: los procesadores comparten la memoria (aunque puede ser más o menos difícil acceder a la memoria de otro procesador).

• Ventaja: aumento de velocidad de procesamiento con bajo coste

• Inconveniente: Escalable sólo hasta decenas o centenares de procesadores

Page 28: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Sistemas distribuidos

• Múltiples procesadores conectados mediante una red.

• Sistemas débilmente acoplados: los procesadores no comparten memoria ni reloj.

• Los sistemas conectados pueden ser de cualquier tipo.

• Escalable hasta millones de procesadores (ej. Internet)

Page 29: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Sistemas distribuidos: ventajas

• compartición de recursos dispersos• ayuda al trabajo cooperativo de equipos

humanos• aumento de velocidad de ejecución• escalabilidad ilimitada• aumento de fiabilidad:

tolerancia a fallos (fault tolerance) alta disponibilidad (availability)

Page 30: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Sistemas distribuidos: complicaciones

• los sistemas no comparten memoria ni reloj: la comunicación es más compleja no se puede tener un estado global instantáneo. dificultades en la sincronización

• red de comunicaciones no fiable: pérdida de mensajes mensajes desordenados

• heterogeneidad de los nodos múltiples plataformas hw y sw diferencias en rendimiento

Page 31: Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.

SistemasConcurrentes

Sistemas de tiempo real

• Para poder ejecutar satisfactoriamente tareas que han de completarse en un plazo prefijado (ej. sistemas de control industrial, sistemas multimedia)

• Dos tipos: s.t.r. crítico: para tareas que siempre deben cumplir

los plazos de terminación. Adecuados para la industria. Muy simples, incompatibles con tiempo compartido, memoria virtual, etc.

s.t.r. no crítico: intentan cumplir los plazos, pero no los garantizan al 100%. Adecuados para multimedia, etc.