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)
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.
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
La abstracción de la programación concurrente
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.
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.
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
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.
Página siguiente |