La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Sistemas Concurrentes: Conceptos fundamentales

Presentaciones similares


Presentación del tema: "Sistemas Concurrentes: Conceptos fundamentales"— Transcripción de la presentación:

1 Sistemas Concurrentes: Conceptos fundamentales
I.T. Informática de Sistemas Curso

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

3 ¿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 una existencia simultánea de varios procesos en ejecución. Ojo, concurrencia existencia simultánea no implica ejecución simultánea.

4 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

5 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.

6 ¿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

7 ¿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

8 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

9 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

10 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

11 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

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

13 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.

14 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

15 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.

16 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?

17 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...

18 ¿Cómo expresar la concurrencia?
Sentencia concurrente: cobegin P; Q; R coend; 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;

19 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.

20 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

21 Mecanismos clásicos de comunicación
Comunicación directa (memoria compartida) Canales Buzones Llamada a procedimiento remoto (RPC) etc.

22 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.

23 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

24 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?

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

26 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

27 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

28 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)

29 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)

30 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

31 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.


Descargar ppt "Sistemas Concurrentes: Conceptos fundamentales"

Presentaciones similares


Anuncios Google