Descargar

Sistemas concurrentes: programación concurrente

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    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)

    edu.red

    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.

    edu.red

    “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

    edu.red

    La abstracción de la programación concurrente

    edu.red

    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.

    edu.red

    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.

    edu.red

    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

    edu.red

    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.

    Partes: 1, 2
    Página siguiente