![Page 1: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/1.jpg)
TEMA 1. FUNDAMENTOS TEMA 1. FUNDAMENTOS DE LA CONCURRENCIADE LA CONCURRENCIA
Ingeniería en Informática
![Page 2: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/2.jpg)
2ProgramaciónConcurrente© Alexis Quesada Arencibia
ContenidosIntroducción
Beneficios de la programación concurrente
Concurrencia y arquitecturas hardware
Especificación de ejecución concurrente
Características de los sistemas concurrentes
Problemas inherentes a la programación concurrente
Verificación de programas concurrentes
![Page 3: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/3.jpg)
3ProgramaciónConcurrente© Alexis Quesada Arencibia
BibliografíaProgramción Concurrente
J. Tomás, M. Garrido, F. Sánchez, A. Quesada, 2003Capítulo 1 y 2
Principles of Concurrent and Distributed ProgrammingM. Ben-Ari. Prentice Hall, 1990Capítulo 1 y 2
Concurrent ProgrammingA. Burns, G Davis. Addison-Wesley, 1993Capítulo 1
![Page 4: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/4.jpg)
4ProgramaciónConcurrente© Alexis Quesada Arencibia
ContenidosIntroducciónBeneficios de la programación concurrente
Concurrencia y arquitecturas hardware
Especificación de ejecución concurrente
Características de los sistemas concurrentes
Problemas inherentes a la programación concurrente
Verificación de programas concurrentes
![Page 5: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/5.jpg)
5ProgramaciónConcurrente© Alexis Quesada Arencibia
¿Qué es la concurrencia?Definición Real Academia Española:
<<Acaecimiento o concurso de varios sucesos en un mismo tiempo>>
Una forma de ver la concurrencia es como un conjunto de actividades que se desarrollan de forma simultánea
En informática, cada una de esas actividades se suele llamar proceso
![Page 6: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/6.jpg)
6ProgramaciónConcurrente© Alexis Quesada Arencibia
ConcurrenciaEn Informática, se habla de concurrencia cuando hay unaexistencia simultánea de varios procesos en ejecución
Dos procesos serán concurrentes cuando la primera instrucción de uno de ellos se ejecuta después de la primera instrucción del otro y antes de la última
![Page 7: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/7.jpg)
7ProgramaciónConcurrente© Alexis Quesada Arencibia
ConcurrenciaOjo, existencia simultánea no implica ejecución simultánea
Dependerá del hardware subyacente
El paralelismo es un caso particular de la concurrencia
Se habla de paralelismo cuando ocurre la ejecución simultánea de instrucciones:
arquitecturas paralelasprocesamiento paraleloalgoritmos paralelos programación paralela
![Page 8: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/8.jpg)
8ProgramaciónConcurrente© Alexis Quesada Arencibia
¿Dónde se encuentra la concurrencia?
En la Naturaleza (el problema que se modela)¿ejemplos?
En el hardware (la herramienta para solucionar el problema):
ejecución paralela de instruccionesfuncionamiento paralelo de los periféricosprocesadores múltiplessistemas distribuidos
![Page 9: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/9.jpg)
9ProgramaciónConcurrente© Alexis Quesada Arencibia
Concurrencia inherente o potencial
Sistemas inherentemente concurrentes:el entorno con el que interactúan, o el entorno que modelan tiene forzosamente actividades simultáneasp.ej. red de cajeros automáticos
Sistemas potencialmente concurrentes:no es estrictamente necesario que haya concurrencia, pero se puede sacar partido de ellap.ej. para aumentar la velocidad de ejecución
![Page 10: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/10.jpg)
10ProgramaciónConcurrente© Alexis Quesada Arencibia
Programa y ProcesoDefinición extendida: un proceso es un programa en ejecución
o mejor “una actividad asíncrona susceptible de ser asignada a un procesador”
![Page 11: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/11.jpg)
11ProgramaciónConcurrente© Alexis Quesada Arencibia
ProcesosIndependientes
P.ej. dos procesos de dos usuarios diferentes
CooperantesP. ej. el navegador del esquema anterior
Estas tareas de colaboración y competencia exigen mecanismos de comunicación y sincronización entre procesos
![Page 12: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/12.jpg)
12ProgramaciónConcurrente© Alexis Quesada Arencibia
Programación Concurrente
Disciplina que se encarga del estudio de las notaciones que permiten especificar la ejecución concurrente de las acciones de un programa, asícomo las técnicas para resolver los problemas inherentes a la ejecución concurrente (comunicación y sincronización)
![Page 13: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/13.jpg)
13ProgramaciónConcurrente© Alexis Quesada Arencibia
Programación ConcurrenteTradicionalmente estuvo asociada al mundo de los Sistemas Operativos
Primeros programas concurrentes: SOEvolución plataformas hardwareDiferentes partes del SO en ejecución sin un orden predecible y compartiendo variables => nuevos problemasSoluciones específicas
Tres hitos importantes marcan su evolución:HiloAparición de lenguajes de alto nivel que da soporte a la P.C.La aparición de Internet
![Page 14: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/14.jpg)
14ProgramaciónConcurrente© Alexis Quesada Arencibia
Programación concurrente
EL trabajar con procesos concurrentes añade complejidad a la tarea de programar
¿cuáles son entonces los beneficios que aporta la programación concurrente?
![Page 15: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/15.jpg)
15ProgramaciónConcurrente© Alexis Quesada Arencibia
ContenidosIntroducción
Beneficios de la programación concurrente
Concurrencia y arquitecturas hardware
Especificación de ejecución concurrente
Características de los sistemas concurrentes
Problemas inherentes a la programación concurrente
Verificación de programas concurrentes
![Page 16: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/16.jpg)
16ProgramaciónConcurrente© Alexis Quesada Arencibia
Beneficios de la programación concurrente
Mejor aprovechamiento de la CPU
Velocidad de ejecución
Solución de problemas de naturaleza concurrente
Sistemas de controlTecnologías webAplicaciones basadas en interfaces de usuariosSimulaciónSGDB
![Page 17: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/17.jpg)
17ProgramaciónConcurrente© Alexis Quesada Arencibia
ContenidosIntroducción
Beneficios de la programación concurrente
Concurrencia y arquitecturas hardwareEspecificación de ejecución concurrente
Características de los sistemas concurrentes
Problemas inherentes a la programación concurrente
Verificación de programas concurrentes
![Page 18: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/18.jpg)
18ProgramaciónConcurrente© Alexis Quesada Arencibia
Concurrencia y arquitecturas hardware
Arquitecturas que soportan la programación concurrente
Sistemas con un solo procesador (sistemas monoprocesador)Sistemas con más de un procesador (sistemas multiprocesador)
![Page 19: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/19.jpg)
19ProgramaciónConcurrente© Alexis Quesada Arencibia
Sistemas monoprocesadorNo hay paralelismo. Los procesos se reparten el procesador: entrelazado (interleaving)
¿Quién planifica los procesos?el sistema operativoel propio ejecutable (gracias al compilador) -> runtimescheduler (RTSS)
Todos los procesos comparten la misma memoria
Forma “natural” de sincronizar y comunicar procesos
Variables compartidas
![Page 20: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/20.jpg)
20ProgramaciónConcurrente© Alexis Quesada Arencibia
Sistemas multiprocesador o sistemas paralelos
Más de un procesador => permite que exista un paralelismo real entre los procesos
Clasificación sistemas multiprocesador estrechamente acoplados (multiprocesadores)débilmente acoplados (sistemas distribuidos)
![Page 21: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/21.jpg)
21ProgramaciónConcurrente© Alexis Quesada Arencibia
Sistemas estrechamente acoplados
Normalmente llamados multiprocesadoresLos procesadores comparten memoria y reloj
Puede ser más o menos difícil acceder a la memoria de otro procesador
Ventaja:aumento de velocidad de procesamiento con bajo coste
Inconveniente:Escalable sólo hasta decenas o centenares de procesadores
![Page 22: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/22.jpg)
22ProgramaciónConcurrente© Alexis Quesada Arencibia
Sistemas estrechamente acoplados
La sincronización y comunicación entre procesos se suele hacer mediante variables compartidas
![Page 23: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/23.jpg)
23ProgramaciónConcurrente© Alexis Quesada Arencibia
Sistemas débilmente acoplados o sistemas distribuidos
Múltiples procesadores conectados mediante una red
Los procesadores no comparten memoria ni reloj
Los sistemas conectados pueden ser de cualquier tipo
Escalable hasta millones de procesadores (ej. Internet)
![Page 24: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/24.jpg)
24ProgramaciónConcurrente© Alexis Quesada Arencibia
Sistemas distribuidos: ventajascompartición de recursos dispersos
ayuda al trabajo cooperativo de equipos humanos
aumento de velocidad de ejecución
escalabilidad ilimitada
aumento de fiabilidad:tolerancia a fallos (fault tolerance)alta disponibilidad (availability)
![Page 25: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/25.jpg)
25ProgramaciónConcurrente© Alexis Quesada Arencibia
Sistemas distribuidosLa forma natural de comunicar y sincronizar procesos es mediante el uso de paso de mensajes
![Page 26: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/26.jpg)
26ProgramaciónConcurrente© Alexis Quesada Arencibia
ContenidosIntroducción
Beneficios de la programación concurrente
Concurrencia y arquitecturas hardware
Especificación de ejecución concurrenteCaracterísticas de los sistemas concurrentes
Problemas inherentes a la programación concurrente
Verificación de programas concurrentes
![Page 27: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/27.jpg)
27ProgramaciónConcurrente© Alexis Quesada Arencibia
Especificación de ejecución concurrente
¿Qué se puede ejecutar concurrentemente?Condiciones de Bernstein (1966)
¿Cómo especificarlo?Lenguaje concurrente
![Page 28: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/28.jpg)
28ProgramaciónConcurrente© Alexis Quesada Arencibia
Condiciones de Bernstein
SeaL(Sk)={a1,a2,...,an} el conjunto de lectura del conjunto de instrucciones Sk formado por todas las variables cuyos valores son referenciados (se leen) durante la ejecución de las instrucciones en Sk
E(Sk)={b1,b2,...,bn} el conjunto de escritura del conjunto de instrucciones Sk formado por todas las variables cuyos valores son actualizados (se escriben) durante la ejecución de las instrucciones en Sk
![Page 29: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/29.jpg)
29ProgramaciónConcurrente© Alexis Quesada Arencibia
Condiciones de Bernstein
Para que dos conjuntos de instrucciones Si y Sjse puedan ejecutar concurrentemente, se tiene que cumplir que:
1.- L(Si) ∩ L(Sj)= Ø2.- E(Si) ∩ L(Sj)= Ø3.- E(Si) ∩ E(Sj)= Ø
![Page 30: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/30.jpg)
30ProgramaciónConcurrente© Alexis Quesada Arencibia
¿Cómo especificar la concurrencia?
Técnicas para producir actividades concurrentes en el computador
De forma manualTrabajar directamente sobre el hardwareUsar llamadas al sistema o bibliotecas de software (ejs. PVM, pthreads)Expresarla en un lenguaje de alto nivel
De forma automáticaEl sistema operativo se encarga automáticamente (ej. multiprogramación)El compilador detecta la concurrencia implícita en nuestros programas secuenciales
![Page 31: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/31.jpg)
31ProgramaciónConcurrente© Alexis Quesada Arencibia
Lenguajes de alto nivelLos 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.
![Page 32: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/32.jpg)
32ProgramaciónConcurrente© Alexis Quesada Arencibia
Lenguajes de alto nivelA 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?
![Page 33: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/33.jpg)
33ProgramaciónConcurrente© Alexis Quesada Arencibia
Abstracción de la concurrenciaNuestro 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
Nos deben dar igual las velocidades relativas de los procesadores virtuales
![Page 34: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/34.jpg)
34ProgramaciónConcurrente© Alexis Quesada Arencibia
Lenguajes concurrentesAquellos que incorporan características que permiten expresar la concurrenciadirectamente, sin recurrir a servicios del s.o., bibliotecas, etc.
Normalmente incluyen mecanismos de sincronización y comunicación entre procesos
Ejemplos: Ada, Java, SR, Occam, PARLOG...
![Page 35: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/35.jpg)
35ProgramaciónConcurrente© Alexis Quesada Arencibia
¿Cómo expresar la concurrencia? Ejemplos
Sentencia concurrente:cobegin
P; Q; R
coend;
Sentencia concurrente múltiple:forall i:=1 to 1000 do
P(i);
Tuberías (unix):grep palabra | sort | lpr
Instrucciones vectoriales:type vector is
array(1..10) of int;
var a,b,c : vector;
a := b*c + 2*a;
Objetos que representan procesos:task A is begin P; end;
task B is begin Q; end;
task C is begin R; end;
Notación gráfica: Grafos de precedencia
![Page 36: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/36.jpg)
36ProgramaciónConcurrente© Alexis Quesada Arencibia
ContenidosIntroducción
Beneficios de la programación concurrente
Concurrencia y arquitecturas hardware
Especificación de ejecución concurrente
Características de los sistemas concurrentes
Problemas inherentes a la programación concurrente
Verificación de programas concurrentes
![Page 37: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/37.jpg)
37ProgramaciónConcurrente© Alexis Quesada Arencibia
Características de los sistemas concurrentes
Orden de ejecución de las instrucciones
Indeterminismo
![Page 38: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/38.jpg)
38ProgramaciónConcurrente© Alexis Quesada Arencibia
Orden de ejecución de las instrucciones
La programación secuencial define un orden total de las instrucciones
Ante un conjunto de datos de entrada el flujo de ejecución es siempre el mismo
![Page 39: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/39.jpg)
39ProgramaciónConcurrente© Alexis Quesada Arencibia
Orden de ejecución de las instrucciones
Un programa concurrente define un orden parcial de ejecución
Ante un conjunto de datos de entrada no se puede saber cual va a ser el flujo de ejecución
![Page 40: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/40.jpg)
40ProgramaciónConcurrente© Alexis Quesada Arencibia
Indeterminismo
El orden parcial implica el no determinismo de los programas concurrentes
Es decir, puede producir diferentes resultados cuando se ejecuta repetidamente sobre el mismo conjunto de datos de entrada
![Page 41: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/41.jpg)
41ProgramaciónConcurrente© Alexis Quesada Arencibia
Indeterminismo: ejemplo¿Qué valor tendrá la x al terminar el programa?
![Page 42: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/42.jpg)
42ProgramaciónConcurrente© Alexis Quesada Arencibia
No determinismoEl 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
![Page 43: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/43.jpg)
43ProgramaciónConcurrente© Alexis Quesada Arencibia
ContenidosIntroducción
Beneficios de la programación concurrente
Concurrencia y arquitecturas hardware
Especificación de ejecución concurrente
Características de los sistemas concurrentes
Problemas inherentes a la programación concurrenteVerificación de programas concurrentes
![Page 44: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/44.jpg)
44ProgramaciónConcurrente© Alexis Quesada Arencibia
Problemas inherentes a la programación concurrente
Verificación
Exclusión mutua
Condición de sincronización
![Page 45: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/45.jpg)
45ProgramaciónConcurrente© Alexis Quesada Arencibia
Exclusión mutuaProblema derivado de la abstracción en los lenguajes de alto nivel
Una instrucción de alto nivel se convierte en un conjunto de instrucciones máquinaSon las que realmente se ejecutan concurrentementeEn el paradigma secuencial este hecho carece de importancia pero en ejecuciones concurrentes de instrucciones el resultado puede ser incorrecto
![Page 46: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/46.jpg)
46ProgramaciónConcurrente© Alexis Quesada Arencibia
Exclusión mutuaSección crítica: porción de código con variables compartidas y que debe ejecutarse en exclusión mutua
Los lenguajes concurrentes deben proporcionar herramientas para resolver este tipo de problemas
![Page 47: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/47.jpg)
47ProgramaciónConcurrente© Alexis Quesada Arencibia
Condición de sincronización
Muchas posibilidades diferentes en cuanto al orden de ejecución
Sin embargo, pueden ser necesarias ciertas restricciones en el orden de ejecución
![Page 48: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/48.jpg)
48ProgramaciónConcurrente© Alexis Quesada Arencibia
Condición de sincronización
![Page 49: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/49.jpg)
49ProgramaciónConcurrente© Alexis Quesada Arencibia
ContenidosIntroducción
Beneficios de la programación concurrente
Concurrencia y arquitecturas hardware
Especificación de ejecución concurrente
Características de los sistemas concurrentes
Problemas inherentes a la programación concurrente
Verificación de programas concurrentes
![Page 50: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/50.jpg)
50ProgramaciónConcurrente© Alexis Quesada Arencibia
Verificación de programas concurrentes
¿Cuándo un programa (secuencial) se considera correcto?
Parcialmente correcto. Dadas unas precondiciones correctas, si el programa termina se cumplen las postcondicionesprevistasTotalmente correcto. Dadas unas precondiciones correctas, el programa termina y se cumplen las postcondiciones
![Page 51: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/51.jpg)
51ProgramaciónConcurrente© Alexis Quesada Arencibia
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
![Page 52: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/52.jpg)
52ProgramaciónConcurrente© Alexis Quesada Arencibia
Verificación de programas concurrentes
La corrección de programas concurrentes se puede determinar en base al cumplimiento de una serie de propiedades
Dos tipos de propiedades útiles en los sistemas concurrentes
Propiedades de seguridad (safety)Son aquellas que aseguran que nada malo va a pasar durante la ejecución del programa
Propiedades de viveza (liveness)Son aquellas que aseguran que algo bueno pasaráeventualmente durante la ejecución del programa
![Page 53: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/53.jpg)
53ProgramaciónConcurrente© Alexis Quesada Arencibia
Verificación de programas concurrentes
Propiedades de seguridad (safety)Exclusión mutuaCondición de sincronizaciónInterbloqueo (pasivo) - deadlock
Propiedades de viveza (liveness)Interbloqueo (activo) – livelockInanición - starvation
![Page 54: Tema 1 Fundamentos de la concurrenciasopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema1...notaciones que permiten especificar la ejecución concurrente de las acciones de un programa,](https://reader035.vdocuments.co/reader035/viewer/2022071404/60f7e7f2ac90c5617b0b2d87/html5/thumbnails/54.jpg)
54ProgramaciónConcurrente© Alexis Quesada Arencibia
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
...