Upload
karin-supo
View
382
Download
0
Embed Size (px)
Citation preview
Sistemas Concurrentes: Conceptos fundamentales
I.T. Informtica de Sistemas Curso 2002-2003
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
o en el tiempo dos o ms personas o cosas.
En Informtica, se habla de concurrencia cuando hay una
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
Dnde se encuentra la concurrencia? En la Naturaleza (el problema que se modela) ejemplos?
En el hardware (la herramienta para solucionar el problema): ejecucin paralela de instrucciones funcionamiento paralelo de los perifricos procesadores mltiples sistemas distribuidos
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
Concurrencia inherente o potencial Sistemas inherentemente concurrentes: el entorno con el que interactan, o el entorno que modelan tiene forzosamente actividades simultneas p.ej. red de cajeros automticos
Sistemas potencialmente concurrentes: no es estrictamente necesario que haya concurrencia, pero se puede sacar partido de ella p.ej. para aumentar la velocidad de ejecucin
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
Tcnicas 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 automtica El sistema operativo se encarga automticamente (ej. multiprogramacin) El compilador detecta la concurrencia implcita en nuestros programas secuencialesSistemasConcurrentes
Contenidos Concurrencia y paralelismo Sistema concurrente Programacin concurrente Lenguaje concurrente Arquitectura paralela Sistema distribuido
SistemasConcurrentes
Programacin concurrente: definicin Conjunto de tcnicas y notaciones para expresar el paralelismo potencial de una aplicacin, tratando los problemas de sincronizacin y comunicacin entre procesos. La programacin concurrente, en sentido amplio, no trata de la implementacin del paralelismo en el hardware.
SistemasConcurrentes
Motivacin de la programacin concurrente Aprovechar el hardware multiprocesador Aumentar la productividad de la CPU Facilitar la escritura de aplicaciones donde la concurrencia sea un elemento importante
SistemasConcurrentes
Lenguajes de alto nivel Los LAN permiten programar en un nivel ms cercano al mbito del problema (problem domain) por medio de la abstraccin. Adems, los lenguajes y el S.O. proporcionan herramientas para usar con ms comodidad los recursos del hardware.
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 informtica: abstraccin de expresiones (FORTRAN...) abstraccin del flujo de control: programacin estructurada secuencial (Algol...) abstraccin de la lgica y el lgebra (Lisp, Prolog...) abstraccin de datos (Algol, Pascal...) modelado de objetos (Smalltalk, C++...) abstraccin de la concurrencia?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
Cmo expresar la concurrencia? Sentencia concurrente:cobegin P; Q; R coend;
Instrucciones vectoriales:type vector is array(1..10) of int; var a,b,c : vector; a := b*c + 2*a;
Sentencia concurrente mltiple:forall i:=1 to 1000 do P(i);
Objetos que representan procesos:task A is begin P; end; task B is begin Q; end; task C is begin R; end;
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
Mecanismos clsicos de sincronizacin Mecanismos de sealizacin Semforos Cerrojos y variables condicin Seales, eventos Retardos temporales
Recursos compartidos Regiones crticas Monitores Objetos protegidosSistemasConcurrentes
Mecanismos clsicos de comunicacin Comunicacin directa (memoria compartida) Canales Buzones Llamada a procedimiento remoto (RPC) etc.
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
tratando de obtener la mxima concurrencia
SistemasConcurrentes
La gran pregunta: es necesaria la programacin concurrente? No basta con la programacin 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?
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 distribuidosSistemasConcurrentes
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
Sistemas distribuidos: ventajas comparticin de recursos dispersos ayuda al trabajo cooperativo de equipos humanos aumento de velocidad de ejecucin escalabilidad ilimitada aumento de fiabilidad: tolerancia a fallos (fault tolerance) alta disponibilidad (availability)SistemasConcurrentes
Sistemas distribuidos: complicaciones los sistemas no comparten memoria ni reloj: la comunicacin es ms compleja no se puede tener un estado global instantneo. dificultades en la sincronizacin
red de comunicaciones no fiable: prdida de mensajes mensajes desordenados
heterogeneidad de los nodos mltiples plataformas hw y sw diferencias en rendimiento
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. crtico: para tareas que siempre deben cumplir los plazos de terminacin. Adecuados para la industria. Muy simples, incompatibles con tiempo compartido, memoria virtual, etc. s.t.r. no crtico: intentan cumplir los plazos, pero no los garantizan al 100%. Adecuados para multimedia, etc.
SistemasConcurrentes