Sistemas Concurrentes: la programacin concurrente - PowerPoint PPT Presentation

1 / 28
About This Presentation
Title:

Sistemas Concurrentes: la programacin concurrente

Description:

C mo generar concurrencia en el sistema. Programaci n concurrente. Lenguaje concurrente ... En ocasiones es necesario detener a un proceso hasta que se produzca un ... – PowerPoint PPT presentation

Number of Views:675
Avg rating:3.0/5.0
Slides: 29
Provided by: josmi2
Category:

less

Transcript and Presenter's Notes

Title: Sistemas Concurrentes: la programacin concurrente


1
Sistemas Concurrentesla programación concurrente
  • I.T. Informática de Sistemas

2
Contenidos
  • Cómo generar concurrencia en el sistema
  • Programación concurrente
  • Lenguaje concurrente
  • La sentencia concurrente
  • Beneficios de la programación concurrente
  • Grafos de precedencia
  • Sincronización y comunicación

3
Bibliografía
  • Programación Concurrente
  • J. Palma et al. Thomson, 2003
  • Capítulo 1
  • Principles of Concurrent and Distributed
    Programming
  • M. Ben-Ari. Prentice Hall, 1990
  • Capítulo 1

4
Cómo se puede generar concurrencia dentro del
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 automática
  • El sistema operativo se encarga automáticamente
    (ej. multiprogramación)
  • El compilador detecta la concurrencia implícita
    en nuestros programas secuenciales

5
Se puede detectar automáticamente la
concurrencia?
  • Sí, en algunos casos.
  • Ej. condiciones de Bernstein (1966).
  • Formalismo para deducir si dos instrucciones se
    pueden ejecutar concurrentemente.

6
Condiciones de Bernstein (1)
  • Sean
  • IS. Un conjunto de instrucciones i1,i2 ,... in
  • R(IS) a1,a2,...an Conjunto de lectura de IS.
    Son todas las variables que se leen al ejecutarse
    IS.
  • W(IS) b1,b2,...bn Conjunto de escritura de
    IS. Son todas las variables que se modifican al
    ejecutarse IS.

7
Condiciones de Bernstein (2)
  • Para que dos juegos de instrucciones A y B se
    puedan ejecutar concurrentemente, se tiene que
    cumplir necesariamente
  • R(A) n W(B) Ø
  • W(A) n R(B) Ø
  • W(A) n W(B) Ø
  • Intuición Si A utiliza una variable, B no puede
    escribir en esa variable (si queremos que A y B
    sean concurrentes).

8
Condiciones de Bernstein (y 3)
  • Realizando un análisis sobre el código
    secuencial, se pueden descubrir automáticamente
    porciones de código que se pueden ejecutar en
    paralelo.
  • El compilador podría traducir esas porciones a
    llamadas a hilos o procesos.
  • En código máquina, un procesador segmentado (ej.
    Pentium gt2) detectan instrucciones independientes
    y las ejecutan en paralelo.

9
pero sigue haciendo falta un programador
  • El análisis automático del código para detectar
    concurrencia tiene un ámbito muy limitado (sobre
    todo, en el nivel de código máquina).
  • Sigue siendo imprescindible que el programador
    detecte y especifique qué módulos de código desea
    ejecutar concurrentemente. ? programación
    concurrente

10
Programación concurrente definición
  • Conjunto de técnicas y notaciones para expresar
    el paralelismo potencial de una
    aplicación,tratando los problemas de
    sincronización y comunicación entre procesos.
  • La programación concurrente, en sentido amplio,
    NO trata de la implementación del paralelismo en
    el hardware.

11
Lenguajes de alto nivel
  • Los LAN permiten programar en un nivel más
    cercano al ámbito del problema (problem domain)
    por medio de la abstracción.
  • Además, los lenguajes y el S.O. proporcionan
    herramientas para usar con más comodidad los
    recursos del hardware.

12
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 informática
  • abstracción de expresiones (FORTRAN...)
  • abstracción del flujo de control programación
    estructurada secuencial (Algol...)
  • abstracción de la lógica y el álgebra (Lisp,
    Prolog...)
  • abstracción de datos (Algol, Pascal...)
  • modelado de objetos (Smalltalk, C...)
  • abstracción de la concurrencia?

13
Lenguajes concurrentes
  • Aquellos que incorporan características que
    permiten expresar la concurrencia directamente,
    sin recurrir a servicios del s.o., bibliotecas,
    etc.
  • Incluyen mecanismos de sincronización y
    comunicación entre procesos.
  • Ejemplos Ada, Java, SR, Occam, PARLOG...

14
Cómo expresar la concurrencia en un lenguaje de
programación?
  • Sentencia concurrente
  • cobegin
  • P Q R
  • coend
  • Sentencia concurrente múltiple
  • forall i1 to 1000 do
  • P(i)
  • Tuberías (unix)
  • unzip fichero.c.zip grep include a2ps lpr
  • Instrucciones vectoriales
  • type vector is
  • array(1..10) of int
  • var a,b,c vector
  • a bc 2a
  • Objetos que representan procesos
  • task A is begin P end
  • task B is begin Q end
  • task C is begin R end

15
Programación paralela
  • Cuando estamos especialmente interesados en
    escribir código para ser utilizado en un sistema
    multiprocesador, hablamos de programación
    paralela o algoritmos paralelos.
  • Es un caso particular de la programación
    concurrente en el que prima la ejecución paralela.

16
La sentencia concurrente
  • cobegin
  • A
  • B
  • C
  • coend
  • begin
  • X
  • cobegin
  • A
  • B
  • C
  • coend
  • Y
  • end
  • A, B y C se pueden ejecutar concurrentemente.
  • La sentencia concurrente finaliza cuando todas
    sus sentencias interiores finalizan
  • El ejemplo de arriba finaliza cuando A, B y C han
    terminado.
  • En el ejemplo de abajo
  • A, B y C no pueden empezar hasta que X ha
    terminado por completo.
  • Y sólo se empieza a ejecutar cuando A, B y C han
    terminado.

17
Sentencia concurrente múltiple
  • Para poder lanzar un número elevado o
    indeterminado de acciones de forma concurrente.
  • Sintaxis similar al bucle for pero no es un
    bucle, no es iterativa!!
  • forall i in 1..100
  • S (i)
  • end
  • Lanza concurrentemente S(1), S(2) S(100)

18
Ejercicio
  • Usando la sentencia concurrente, diseñar
    algoritmos concurrentes para
  • multiplicar dos matrices
  • sumar una lista de N números (2 métodos)
  • ordenar un vector
  • obtener los números primos entre 2 y N
  • tratando de obtener la máxima concurrencia

19
La gran pregunta es necesaria la programación
concurrente?
  • No basta con la programación 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?

20
Un ejemplo ejecutivo cíclico
  • Implementar un sistema que debe monitorizar
    periódicamente varios sensores (ej. presión
    arterial, respiración, pulso)
  • Los periodos de monitorización son distintos
  • Algoritmo para cada sensor
  • loop
  • delay Periodo_Del_Sensor(i)
  • Monitoriza_Sensor(i)
  • end loop
  • Comparar una implementación secuencial con una
    implementación con sentencia concurrentecuál
    resulta más sencilla?

21
Beneficios de la programación concurrente
  • Aprovechar el hardware multiprocesador
  • Aumentar la productividad de la CPU
  • Facilitar la implementación de sistemas donde la
    concurrencia sea un elemento importante
  • Sistemas de control en tiempo real
  • Interfaces gráficas de usuario
  • Sistemas operativos
  • Gestores de bases de datos

22
Grafos de precedencia
  • Muestra gráficamente la relación de precedencia
    entre un grupo de sentencias.
  • A precede a B significa que ninguna instrucción
    de B puede ejecutarse hasta que A haya terminado
    por completo.

A
A precede a B A precede a C B y C preceden a D E
no depende de nadie
B
C
E
D
23
Grafos de precedencia propiedades
  • Propiedades del grafo
  • Grafo dirigido
  • Nunca hay ciclos
  • Propiedades de la relación de precedencia
  • Transitiva si A precede a B y B precede a C ? A
    precede a C
  • Antisimétrica si A precede a B ? B no precede a
    A
  • Ojo un grafo de precedencia NO define una
    relación de orden total
  • puede haber parejas de sentencias que no tengan
    ninguna relación de precedencia ? sentencias que
    se pueden ejecutar concurrentemente entre sí.

24
Una sentencia concurrente define un grafo de
precedencia
  • begin
  • A
  • cobegin
  • B
  • begin
  • C
  • D
  • end
  • E
  • coend
  • F
  • end

A
C
B
E
D
F
25
Limitaciones de la sentencia concurrente
  • Hay grafos de precedencia que no se pueden
    expresar usando sólo la sentencia concurrente.

A
B
D
C
F
E
26
Sincronización y comunicación
  • En ocasiones es necesario detener a un proceso
    hasta que se produzca un determinado evento o se
    den ciertas condiciones ? sincronización
  • La sentencia concurrente ofrece ciertas
    capacidades de sincronización, pero muy limitadas
    (ej. grafo de precedencia anterior)
  • Los procesos concurrentes tendrán necesidad de
    comunicarse información.
  • Los lenguajes concurrentes deben proporcionar
    mecanismos de sincronización y comunicación.

27
Mecanismos clásicos de sincronización
  • Mecanismos de señalización
  • Semáforos
  • Cerrojos y variables condición
  • Señales, eventos
  • Retardos temporales
  • Recursos compartidos
  • Regiones críticas
  • Monitores
  • Objetos protegidos

28
Mecanismos clásicos de comunicación
  • Comunicación directa (memoria compartida)
  • Canales
  • Buzones
  • Llamada a procedimiento remoto (RPC)
  • etc.
Write a Comment
User Comments (0)
About PowerShow.com