1 / 31

Sistemas Concurrentes: Conceptos fundamentales

Sistemas Concurrentes: Conceptos fundamentales. I.T. Informática de Sistemas Curso 2002-2003. Contenidos. Concurrencia y paralelismo Sistema concurrente Programación concurrente Lenguaje concurrente Arquitectura paralela Sistema distribuido. ¿Qué es la concurrencia?.

qiana
Download Presentation

Sistemas Concurrentes: Conceptos fundamentales

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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 unaexistencia 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. 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; ¿Cómo expresar la concurrencia?

  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.

More Related