You are on page 1of 31

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 secuenciales
SistemasConcurrentes

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 protegidos
SistemasConcurrentes

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 distribuidos
SistemasConcurrentes

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

You might also like