Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003.
-
Upload
elodia-caudillo -
Category
Documents
-
view
219 -
download
0
Transcript of 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
SistemasConcurrentes
Contenidos
• Concurrencia y paralelismo• Sistema concurrente• Programación concurrente• Lenguaje concurrente• Arquitectura paralela• Sistema distribuido
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.
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
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.
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
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
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
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
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
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
SistemasConcurrentes
Contenidos
• Concurrencia y paralelismo• Sistema concurrente• Programación concurrente• Lenguaje concurrente• Arquitectura paralela• Sistema distribuido
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.
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
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.
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?
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...
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;
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.
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
SistemasConcurrentes
Mecanismos clásicos de comunicación
• Comunicación directa (memoria compartida)
• Canales• Buzones • Llamada a procedimiento remoto (RPC)• etc.
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.
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
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?
SistemasConcurrentes
Contenidos
• Concurrencia y paralelismo• Sistema concurrente• Programación concurrente• Lenguaje concurrente• Arquitectura paralela• Sistema distribuido
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
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
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)
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)
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
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.