Vous êtes sur la page 1sur 18

Sistemas Concurrentes: programacin concurrente

I.T. Informtica de Sistemas Curso 2002-2003

Cmo implementar la concurrencia


El propio hardware
multiprocesadores (mqs. de memoria compartida) sistemas distribuidos

Multiprogramacin
No hay paralelismo. Los procesos se reparten el procesador: entrelazado (interleaving) Quin planifica los procesos?
el sistema operativo el propio ejecutable (gracias al compilador) -> runtime

scheduler (RTSS)

SistemasConcurrentes

Planificadores
Nuestro programa se ejecutar de manera diferente segn la poltica de planificacin empleada. Algunos programas funcionarn adecuadamente con un planificador, pero con otros pueden fracasar.

SistemasConcurrentes

Granularidad del paralelismo


cules son las acciones que se pueden ejecutar en paralelo?
instrucciones de mquina sentencias de un lenguaje de programacin objetos concurrentes dentro de un programa programas ejecutables completos

Grano fino --> grano grueso Cada grano propicia unas herramientas y tcnicas de programacin diferentes
SistemasConcurrentes

La abstraccin de la programacin concurrente

Abstraccin de la concurrencia
Nuestro programa expresa acciones concurrentes (procesos o hilos), pero stas no tienen por qu ejecutarse en paralelo. Cada proceso concurrente se ejecuta sobre un procesador virtual. El compilador y el s.o. sern responsables de ejecutar nuestros procesos como consideren ms oportuno.
SistemasConcurrentes

Procesadores virtuales
Supondremos que nuestro programa concurrente consiste en un conjunto de procesos secuenciales que se ejecutan en paralelo, cada uno de ellos corriendo sobre un procesador virtual. Nos deben dar igual las velocidades relativas de los procesadores virtuales.

SistemasConcurrentes

Orden parcial -> no determinismo


La programacin secuencial define un orden total de las instrucciones Un programa concurrente define un orden parcial de ejecucin El orden parcial implica el no determinismo de los programas concurrentes

SistemasConcurrentes

No determinismo
Un programa secuencial es determinista:
si se le presenta el mismo conjunto de datos de entrada, siempre producir la misma salida.

Un programa concurrente es no determinista:


un mismo conjunto de datos de entrada puede producir diferentes datos de salida, segn el orden de ejecucin de los procesos.

SistemasConcurrentes

No determinismo
El no determinismo es una propiedad inherente a la concurrencia. Por culpa del no determinismo, es ms difcil analizar y verificar un algoritmo concurrente. Ojo, que existan varias posibilidades de salida NO significa necesariamente que un programa concurrente sea incorrecto.

SistemasConcurrentes

Acciones atmicas
Por culpa del no determinismo, la ejecucin del programa puede ser incorrecta e inesperada.
cobegin x := 2; x := 65536; coend;

el resultado podra ser x=65538!!

Surge la conveniencia de imponer que ciertas piezas de cdigo se ejecuten de forma atmica.
SistemasConcurrentes

Acciones atmicas (2)


En el anlisis de algoritmos concurrentes, se permite declarar que una sentencia se ejecuta de forma atmica.
cobegin <x:=x+1> <x:=x+2> coend

As se facilita el anlisis y verificacin de estos algoritmos. No nos incumbe (por ahora) cmo se consigue la ejecucin atmica.
SistemasConcurrentes

Historias / secuencias de ejecucin


Una historia o la secuencia de ejecucin es una secuencia temporal de acciones que ocurren durante la ejecucin de un programa. Un programa concurrente puede tener mltiples secuencias de ejecucin (y todas ellas pueden ser correctas)
a -> b -> c c -> a -> b ...
SistemasConcurrentes

Verificacin de programas
Cundo un programa (secuencial) se considera correcto?
Parcialmente correcto. Dadas unas precondiciones correctas, si el programa termina se cumplen las postcondiciones previstas. Totalmente correcto. Dadas unas precondiciones correctas, el programa termina y se cumplen las postcondiciones.

SistemasConcurrentes

Peculiaridades de los programas concurrentes


Los programas concurrentes pueden no terminar nunca y al mismo tiempo ser correctos. Un pr.c. puede tener mltiples secuencias de ejecucin. Cuando se dice que un pr.c. es correcto, se entiende que se refiere a todas sus posibles secuencias de ejecucin.

SistemasConcurrentes

Seguridad y progreso (safety and liveness)


Dos tipos de propiedades tiles en los sistemas concurrentes Propiedades de seguridad (safety)
una propiedad que debe ser cierta siempre ejs. exclusin mutua, no interbloqueo

Propiedades de progreso (liveness)


una propiedad que se cumplir con toda seguridad en algn momento de la ejecucin ejs. propiedades de justicia (fairness), evitacin de inanicin
SistemasConcurrentes

Ejemplos de justicia (fairness)


Justicia dbil. Si un proceso realiza continuamente una peticin, terminar siendo atendido. Justicia fuerte. Si un proceso realiza una peticin con frecuencia infinita, terminar siendo atendido. Espera lineal. Si un proceso realiza una peticin, ningn otro proceso puede ser atendido dos veces antes que l. Espera FIFO. Si un proceso realiza una peticin, ser atendido antes que cualquier otra solicitud posterior.

SistemasConcurrentes

Anlisis de algoritmos concurrentes


Usar invariantes y lgica proposicional Usar mtodos inductivos Usar historias de ejecucin (a->b) Usar predicados posicionales: at(I), in(I), after(I) Usar lgica temporal ...

SistemasConcurrentes