Title: Sistemas Concurrentes: Conceptos fundamentales
1Sistemas ConcurrentesConceptos fundamentales
- I.T. Informática de Sistemas
- Curso 2002-2003
2Contenidos
- Concurrencia y paralelismo
- Sistema concurrente
- Programación concurrente
- Lenguaje concurrente
- Arquitectura paralela
- Sistema distribuido
3Qué 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.
4Paralelismo 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
5Procesos 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.
6Dó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
7Qué 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
8Concurrencia 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
9Ejercicio
- 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
10Conclusiones
- 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
11Té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
12Contenidos
- Concurrencia y paralelismo
- Sistema concurrente
- Programación concurrente
- Lenguaje concurrente
- Arquitectura paralela
- Sistema distribuido
13Programació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.
14Motivació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
15Lenguajes 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.
16Lenguajes 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?
17Lenguajes 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...
18Cómo expresar la concurrencia?
- Sentencia concurrente
- cobegin
- P Q R
- coend
- Sentencia concurrente múltiple
- forall i1 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 bc 2a
- Objetos que representan procesos
- task A is begin P end
- task B is begin Q end
- task C is begin R end
19Sincronizació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.
20Mecanismos 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
21Mecanismos clásicos de comunicación
- Comunicación directa (memoria compartida)
- Canales
- Buzones
- Llamada a procedimiento remoto (RPC)
- etc.
22Programació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.
23Ejercicio
- 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
24La 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?
25Contenidos
- Concurrencia y paralelismo
- Sistema concurrente
- Programación concurrente
- Lenguaje concurrente
- Arquitectura paralela
- Sistema distribuido
26Arquitecturas 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
27Multiprocesadores
- 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
28Sistemas 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)
29Sistemas 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)
30Sistemas 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
31Sistemas 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.