La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Sistemas Concurrentes: programación concurrente

Presentaciones similares


Presentación del tema: "Sistemas Concurrentes: programación concurrente"— Transcripción de la presentación:

1 Sistemas Concurrentes: programación concurrente
I.T. Informática de Sistemas Curso

2 Cómo implementar la concurrencia
El propio hardware multiprocesadores (máqs. de memoria compartida) sistemas distribuidos Multiprogramación No hay paralelismo. Los procesos se reparten el procesador: entrelazado (interleaving) ¿Quién planifica los procesos? el sistema operativo el propio ejecutable (gracias al compilador) -> runtime scheduler (RTSS)

3 Planificadores Nuestro programa se ejecutará de manera diferente según la política de planificación empleada. Algunos programas funcionarán adecuadamente con un planificador, pero con otros pueden fracasar.

4 “Granularidad” del paralelismo
¿cuáles son las acciones que se pueden ejecutar en paralelo? instrucciones de máquina sentencias de un lenguaje de programación objetos concurrentes dentro de un programa programas ejecutables completos Grano fino --> grano grueso Cada ‘grano’ propicia unas herramientas y técnicas de programación diferentes

5 La abstracción de la programación concurrente

6 Abstracción 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. serán responsables de ejecutar nuestros procesos como consideren más oportuno.

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

8 Orden parcial -> no determinismo
La programación secuencial define un orden total de las instrucciones Un programa concurrente define un orden parcial de ejecución El orden parcial implica el no determinismo de los programas concurrentes

9 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, según el orden de ejecución de los procesos.

10 No determinismo El no determinismo es una propiedad inherente a la concurrencia. Por culpa del no determinismo, es más difícil analizar y verificar un algoritmo concurrente. Ojo, que existan varias posibilidades de salida NO significa necesariamente que un programa concurrente sea incorrecto.

11 Acciones atómicas Por culpa del no determinismo, la ejecución del programa puede ser incorrecta e inesperada. Surge la conveniencia de imponer que ciertas piezas de código se ejecuten de forma atómica. ¡¡el resultado podría ser x=65538!! cobegin x := 2; x := 65536; coend;

12 cobegin <x:=x+1> <x:=x+2> coend
Acciones atómicas (2) En el análisis de algoritmos concurrentes, se permite declarar que una sentencia se ejecuta de forma atómica. cobegin <x:=x+1> <x:=x+2> coend Así se facilita el análisis y verificación de estos algoritmos. No nos incumbe (por ahora) cómo se consigue la ejecución atómica.

13 Historias / secuencias de ejecución
Una historia o la secuencia de ejecución es una secuencia temporal de acciones que ocurren durante la ejecución de un programa. Un programa concurrente puede tener múltiples secuencias de ejecución (y todas ellas pueden ser correctas) a -> b -> c c -> a -> b ...

14 Verificación de programas
¿Cuándo 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.

15 Peculiaridades de los programas concurrentes
Los programas concurrentes pueden no terminar nunca y al mismo tiempo ser correctos. Un pr.c. puede tener múltiples secuencias de ejecución. Cuando se dice que un pr.c. es correcto, se entiende que se refiere a todas sus posibles secuencias de ejecución.

16 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. exclusión mutua, no interbloqueo Propiedades de progreso (liveness) una propiedad que se cumplirá con toda seguridad en algún momento de la ejecución ejs. propiedades de justicia (fairness), evitación de inanición

17 Ejemplos de justicia (fairness)
Justicia débil. Si un proceso realiza continuamente una petición, terminará siendo atendido. Justicia fuerte. Si un proceso realiza una petición con frecuencia infinita, terminará siendo atendido. Espera lineal. Si un proceso realiza una petición, ningún otro proceso puede ser atendido dos veces antes que él. Espera FIFO. Si un proceso realiza una petición, será atendido antes que cualquier otra solicitud posterior.

18 Análisis de algoritmos concurrentes
Usar invariantes y lógica proposicional Usar métodos inductivos Usar historias de ejecución (a->b) Usar predicados posicionales: at(I), in(I), after(I) Usar lógica temporal ...


Descargar ppt "Sistemas Concurrentes: programación concurrente"

Presentaciones similares


Anuncios Google