Tema 06: Introducci - PowerPoint PPT Presentation

About This Presentation
Title:

Tema 06: Introducci

Description:

E S P G MAESTR A EN INGENIERIA DE SISTEMAS E INFORM TICA ADMINISTRACI N DE TECNOLOG AS DE INFORMACI N Tema 06: Introducci n a la Programaci n Concurrente – PowerPoint PPT presentation

Number of Views:109
Avg rating:3.0/5.0
Slides: 92
Provided by: jjpan
Category:

less

Transcript and Presenter's Notes

Title: Tema 06: Introducci


1
Tema 06Introducción a la Programación
Concurrente
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN
E S P G
MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA
ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN
Prof Alberto E. Cohaila Barrios
acohailab_at_unjbg.edu.pe, acohailab_at_hotmail.com,
acohailab_at_speedy.com.pe
2
Introducción a la Concurrencia
  • Qué es la concurrencia?
  • Programa Secuencial. Proceso
  • Procesos Concurrentes. Programa y sistema
    concurrente
  • Relaciones entre procesos Competencia y
    Cooperación
  • Actividades entre procesos Sincronización y
    Comunicación
  • Dónde se usa la concurrencia?
  • Cómo se usa la concurrencia?
  • Conclusiones

3
Qué es la concurrencia?
  • El paradigma de la programación concurrente
  • Paradigma
  • Conjunto de teorías, estándares y métodos que
    juntos representan una forma de ver el mundo
  • Concurrencia
  • Acaecimiento de varios sucesos al mismo tiempo

4
Qué es la concurrencia?
Paralelismo
Solapamiento
  • Los sucesos se producen en un mismo intervalo
    de tiempo (diferentes recursos)
  • Los sucesos se producen en intervalos de tiempo
    superpuestos

Tiempo
Tiempo
Simultaneidad
  • Los sucesos se producen en el mismo instante de
    tiempo

Tiempo
5
Qué es la concurrencia?
  • El paradigma de la programación concurrente se
    ocupa de desarrollar métodos de representación de
    procesos concurrentes y herramientas para
    especificar y verificar programas concurrentes
  • Lenguajes que soportan concurrencia
  • Java, PascalFC, Ada, PAD, Parallel C, OCCAM

6
Introducción a la Concurrencia
  • Qué es la concurrencia?
  • Programa Secuencial. Proceso
  • Procesos Concurrentes. Programa y sistema
    concurrente
  • Relaciones entre procesos Competencia y
    Cooperación
  • Actividades entre procesos Sincronización y
    Comunicación
  • Dónde se usa la concurrencia?
  • Cómo se usa la concurrencia?
  • Conclusiones

7
Programa Secuencial. Proceso
  • Programa Secuencial
  • Conjunto de declaraciones de datos e
    instrucciones (o acciones) ejecutables, escrito
    en un lenguaje de programación
  • Estas instrucciones deben ejecutarse una a
    continuación de otra, siguiendo una secuencia
    determinada por un algoritmo, para resolver un
    cierto problema
  • Un programa en Pascal es un programa secuencial

8
Programa Secuencial. Proceso
  • Proceso
  • Es la ejecución de un programa secuencial en un
    sistema informático
  • Pueden existir varios procesos de un mismo
    programa secuencial porque se puede ejecutar el
    mismo programa secuencial varias veces y de forma
    simultánea

9
Programa Secuencial. Proceso
  • Se puede ver a dos niveles
  • Nivel del Sistema Operativo
  • Programa Secuencial Fichero ejecutable
  • Proceso Proceso que aparece en el sistema cuando
    se ejecuta un fichero ejecutable
  • Nivel de un Programa Internamente
  • Programa Secuencial Fragmento de código de un
    programa
  • Proceso Ejecución de las sentencias de un
    fragmento de código

10
Programa Secuencial. Proceso
  • Nivel del Sistema Operativo

Programa Secuencial
Proceso (Proceso Pesado)
11
Programa Secuencial. Proceso
  • Nivel de un Programa Internamente
  • Programa Secuencial
  • Un conjunto de sentencias y declaración de
    variables
  • Normalmente es un procedimiento o función
  • Proceso
  • La ejecución del procedimiento o función
  • En un programa Pascal internamente hay solamente
    un único proceso
  • En PascalFC, puede haber varios procesos
    internamente
  • Proceso ligero, Hilo de Ejecución o Thread

12
Programa Secuencial. Proceso
Sistema Operativo Programa Internamente
Programa Secuencial Un fichero ejecutable (.exe) Conjunto de sentencias (Procedimiento)
Proceso Ejecución de un .exe Tiene memoria y usa el procesador Proceso Pesado Ejecución de un procedimiento Proceso Ligero Hilo de Ejecución Thread
En este módulo nos centramos en los Programas
Internamente
13
Introducción a la Concurrencia
  • Qué es la concurrencia?
  • Programa Secuencial. Proceso
  • Procesos Concurrentes. Programa y sistema
    concurrente
  • Relaciones entre procesos Competencia y
    Cooperación
  • Actividades entre procesos Sincronización y
    Comunicación
  • Dónde se usa la concurrencia?
  • Cómo se usa la concurrencia?
  • Conclusiones

14
Procesos Concurrentes. Programa y Sistema
Concurrente
  • Procesos Concurrentes
  • P1 y P2 se dice que son dos procesos concurrentes
    si la primera instrucción de uno de ellos se
    ejecuta entre la primera y la última instrucción
    del otro

P1 P2
Tiempo
15
Procesos Concurrentes. Programa y Sistema
Concurrente
  • Programa Concurrente
  • Conjunto de varios programas secuenciales, cuyos
    procesos pueden ejecutarse concurrentemente en un
    sistema informático

16
Procesos Concurrentes. Programa y Sistema
Concurrente
  • Programa Concurrente
  • Nivel de Sistema Operativo
  • Windows es un programa concurrente
  • Linux es un programa concurrente
  • MS-DOS no es un programa concurrente
  • Nivel de Programa Internamente
  • Un programa en Pascal no es un programa
    concurrente
  • Un programa en PascalFC es un programa concurrente

17
Procesos Concurrentes. Programa y Sistema
Concurrente
  • Sistema Concurrente
  • Sistema Informático (HWSW) en el que es posible
    ejecutar varios procesos concurrentemente

18
Introducción a la Concurrencia
  • Qué es la concurrencia?
  • Programa Secuencial. Proceso
  • Procesos Concurrentes. Programa y sistema
    concurrente
  • Relaciones entre procesos Competencia y
    Cooperación
  • Actividades entre procesos Sincronización y
    Comunicación
  • Dónde se usa la concurrencia?
  • Cómo se usa la concurrencia?
  • Conclusiones

19
Relaciones entre procesos Competencia y
Cooperación
  • Sin relación entre procesos (Independencia)
  • No existe ninguna relación entre los procesos (No
    es interesante)
  • Con relación entre procesos (Interacción)
  • Competencia
  • Varios procesos deben compartir recursos comunes
    del sistema (procesador, memoria, disco,
    impresoras,) por lo que compiten entre ellos
    para conseguirlo
  • Cooperación
  • Varios procesos deben trabajar sobre distintas
    partes de un problema para resolverlo
    conjuntamente

20
Relaciones entre procesos Competencia y
Cooperación
  • Competencia
  • Webcam
  • Por ejemplo el acceso a una web-cam es un recurso
    de uso exclusivo por un único programa
  • El primer programa que use la cámara la controla
    hasta que decida dejar de usarla
  • Cooperación
  • Envío de fichero por mail
  • Por ejemplo el OpenOffice genera un fichero en
    disco que debe leerse posteriormente por el
    lector de correo para ser enviado
  • Los procesos colaboran por medio de ficheros

21
Introducción a la Concurrencia
  • Qué es la concurrencia?
  • Programa Secuencial. Proceso
  • Procesos Concurrentes. Programa y sistema
    concurrente
  • Relaciones entre procesos Competencia y
    Cooperación
  • Actividades entre procesos Sincronización y
    Comunicación
  • Dónde se usa la concurrencia?
  • Cómo se usa la concurrencia?
  • Conclusiones

22
Actividades entre procesos Sincronización y
Comunicación
  • La competencia y la cooperación son relaciones de
    interacción entre procesos
  • Se llevan a cabo a través de las siguientes
    actividades
  • Comunicación
  • Sincronización
  • Sincronización condicional
  • Exclusión mutua

23
Actividades entre procesos Sincronización y
Comunicación
  • Comunicación
  • Es el intercambio de información entre procesos
  • Habitualmente cuando dos procesos cooperan entre
    sí se intercambian información
  • Por ejemplo cuando un proceso quiere imprimir,
    envía la información al proceso encargado de la
    impresora

24
Actividades entre procesos Sincronización y
Comunicación
  • Sincronización
  • La sincronización impone restricciones a la
    ejecución de las sentencias de los procesos
  • Sincronización Condicional
  • Uno o más procesos deben esperar a que se cumpla
    cierta condición antes de continuar con su
    ejecución
  • Otro proceso es el que establece esa condición
  • Por ejemplo para enviar un fichero por mail, el
    proceso que tiene que enviar el fichero se tiene
    que esperar hasta que éste haya sido generado por
    el OpenOffice

25
Actividades entre procesos Sincronización y
Comunicación
  • Sincronización
  • La sincronización impone restricciones a la
    ejecución de las sentencias de los procesos
  • Exclusión Mutua
  • Varios procesos compiten por un recurso común de
    acceso exclusivo
  • Sólo uno de los procesos puede estar accediendo
    al recurso a la vez y los demás tienen que
    esperar
  • Por ejemplo en el caso de la webcam, sólo un
    proceso puede acceder a la cámara a la vez

26
Interacción entre procesos Sincronización y
Comunicación
Relaciones entre procesos
Actividades entre procesos
Hay diferentes tipos
Sincronización Condicional
Se lleva a cabo mediante
Competencia
Sincronización
Exclusión Mutua
A veces necesita
Cooperación
Comunicación
27
Introducción a la Concurrencia
  • Qué es la concurrencia?
  • Dónde se usa la concurrencia?
  • Arquitecturas físicas
  • Asignación de Procesos a Procesadores
  • Cómo se usa la concurrencia?
  • Conclusiones

28
Dónde se usa la concurrencia?
  • Arquitecturas de Sistemas Concurrentes
  • En este módulo no vamos a entrar en detalles de
    implementación
  • Pero vamos a dar una visión general de las
    diferentes arquitecturas de sistemas concurrentes

29
Introducción a la Concurrencia
  • Qué es la concurrencia?
  • Dónde se usa la concurrencia?
  • Arquitecturas físicas
  • Asignación de Procesos a Procesadores
  • Cómo se usa la concurrencia?
  • Conclusiones

30
Arquitecturas Físicas
  • Sistemas monoprocesador
  • Sistemas con un único procesador
  • Los PCs de sobremesa habituales hace pocos años

31
Arquitecturas Físicas
  • Sistemas multiprocesador muy acoplados
  • Varios procesadores en la misma máquina
  • Usado en servidores

Memoria Local
Procesador
Procesador
Procesador
Bus
Memoria Común
Memoria Común
Entrada/Salida
32
Arquitecturas Físicas
  • Sistemas multiprocesador muy acoplados
  • Actualmente se están integrando varios
    procesadores en un único chip
  • A los procesadores internos se les denomina cores
    o núcleos de ejecución
  • Al chip se le denomina procesador
  • Todos los PCs actuales tienen esta arquitectura

Procesador
Core
Core
Bus
Memoria
Entrada/Salida
33
Arquitecturas Físicas
  • Sistemas multiprocesador poco acoplados
  • Redes de Ordenadores (Granjas de Ordenadores,
    LAN, Internet)
  • Sistemas Distribuidos

Servidor Web
PC
Móvil
Consola
Red
34
Arquitecturas Físicas
  • Modelos de Concurrencia
  • Memoria compartida
  • Los procesos pueden acceder a una memoria común
  • Existen variables compartidas que varios procesos
    pueden leer y escribir
  • Paso de mensajes
  • Los procesos se intercambian mensajes entre sí
  • Un proceso envía mensaje y otro proceso lo recibe

35
Arquitecturas Físicas
Modelos de Concurrencia Modelos de Concurrencia
Arquitecturas de Sistemas Concurrentes Paso de Mensajes Memoria Compartida
Monoprocesador v v
Multiprocesador Muy Acoplado v v
Multiprocesador Poco Acoplado (Red) v X
36
Arquitecturas Físicas
  • Vamos a centrarnos en el modelo de concurrencia
    de memoria compartida
  • El modelo de concurrencia de paso de mensajes se
    estudia en asignaturas de sistemas distribuidos
    (aplicaciones en red)

37
Introducción a la Concurrencia
  • Qué es la concurrencia?
  • Dónde se usa la concurrencia?
  • Arquitecturas físicas
  • Asignación de Procesos a Procesadores
  • Cómo se usa la concurrencia?
  • Conclusiones

38
Asignación de Procesos a Procesadores
  • Un procesador sólo puede ejecutar un proceso a la
    vez
  • Qué ocurre si hay que ejecutar más procesos que
    los procesadores disponibles?

39
Asignación de Procesos a Procesadores
  • Multiproceso
  • Cada proceso se ejecuta en su propio procesador
    en un sistema de memoria compartida

Proc1
Proc2
Proc3
Procesador3
Procesador1
Procesador2
Bus
Memoria Común
Entrada/Salida
40
Asignación de Procesos a Procesadores
  • Procesamiento Distribuido
  • Cada proceso se ejecuta en su propio procesador
    dentro de cada máquina de una red (Programa
    distribuido)

Proc1
Proc2
Proc3
Máquina 3
Máquina 1
Máquina 2
Red
Router
Impresora
41
Asignación de Procesos a Procesadores
  • Paralelismo Real
  • Se obtiene cuando hay un procesador por cada
    proceso
  • Se consigue un aumento de la velocidad de
    ejecución del programa con respecto a la
    ejecución secuencial

Proc1
Proc2
t
Ejecución Secuencial
Proc1
Proc2
t
Paralelismo Real
42
Asignación de Procesos a Procesadores
  • Multiprogramación
  • Varios procesos se ejecutan en el mismo
    procesador
  • Cada proceso se ejecuta durante un tiempo y luego
    pasa a ejecutarse el siguiente proceso
    (Compartición de tiempo)

Proc2
Proc3
Proc1
Procesador
Bus
Entrada/Salida
Memoria
43
Asignación de Procesos a Procesadores
  • Paralelismo Simulado (Pseudoparalelismo)
  • Se obtiene cuando varios procesos comparten el
    mismo procesador
  • El usuario percibe una sensación de paralelismo
    real
  • No se consigue un aumento de la velocidad de
    ejecución del programa con respecto a la
    ejecución secuencial

Proc1
Proc2
t
Ejecución Secuencial
Proc1
Proc2
t
Paralelismo Simulado
44
Asignación de Procesos a Procesadores
  • Asignación de Procesos a Procesadores
  • Cada procesador ejecuta un proceso
  • Multiproceso
  • Procesamiento Distribuido

Paralelismo Real Aumenta la velocidad de
ejecución
Paralelismo Simulado No aumenta la velocidad de
ejecución
  • Cada procesador ejecuta varios procesos
  • Multiprogramación

En un sistema informático lo más habitual es que
se use la Multiprogramación aunque disponga de
varios procesadores, porque en la mayoría de las
ocasiones hay más procesos que procesadores
45
Asignación de Procesos a Procesadores
  • Multiproceso
  • Aumenta la velocidad de ejecución
  • Multiprogramación
  • No aumenta la velocidad de ejecución
  • Incluso puede disminuir debido a que el reparto
    del procesador implica un coste adicional

Para qué sirve entonces la multiprogramación?
46
Asignación de Procesos a Procesadores
  • Ventajas de la Multiprogramación
  • Dar un servicio interactivo a varios usuarios
    simultáneamente
  • Servidor Web
  • Atiende a varios cientos de usuarios a la vez
  • Messenger o Pidgin
  • Permite conversaciones simultáneas
  • Pestañas Firefox o Internet Explorer
  • Permite descargar simultáneamente varias páginas
    (cada una en una pestaña) mientras navegamos

47
Asignación de Procesos a Procesadores
  • Ventajas de la Multiprogramación
  • Ciertos tipos de aplicaciones se implementan de
    manera natural con programación concurrente
  • Aplicaciones gráficas
  • El programa realiza un proceso en segundo plano y
    también permite seguir trabajando
  • Eclipse compila en segundo plano
  • Intercambio entre pares P2P (Emule)
  • Se realizan descargas simultáneas de múltiples
    usuarios para completar el mismo fichero

48
Asignación de Procesos a Procesadores
Proceso Bloqueado
  • Ventajas de la Multiprogramación
  • Aprovecha mejor el procesador en procesos que se
    quedan esperando
  • Un proceso se puede bloquear a la espera de un
    dato del disco duro (entrada/salida)
  • Con Multiprogramación se puede aprovechar el
    procesador mientras los procesos esperan

Proc1
Proc2
Ejecución Secuencial
Proc1
Proc2
Paralelismo Simulado
49
Asignación de Procesos a Procesadores
  • Ventajas de la Multiprogramación
  • Los sistemas operativos actuales usan la
    multiprogramación para ejecutar varios procesos
    simultáneamente
  • Permite
  • Tener varios programas abiertos
  • Imprimir o copiar ficheros mientras se navega,
    etc

50
Asignación de Procesos a Procesadores
  • Conclusión La multiprogramación tiene ventajas
  • Aplicaciones para varios usuarios
  • Aplicaciones que realizan varias tareas a la vez
  • Sistemas operativos con muchas aplicaciones
  • Aprovechamiento del procesador cuando los
    procesos necesitan esperar

51
Asignación de Procesos a Procesadores
  • Hay muchas arquitecturas diferentes en las que se
    puede ejecutar un programa concurrente
  • Para hacer programas concurrentes no vamos a
    pensar en si existe multiproceso o existe
    multiprogramación
  • Usamos simplificaciones o abstracciones que nos
    ayudan a centrarnos en los procesos y sus
    relaciones, y nos evitan pensar en la
    arquitectura del sistema

52
Asignación de Procesos a Procesadores
1ª Abstracción de la Programación Concurrente Se
considera que cada proceso se ejecuta en su
propio procesador
  • Esta abstracción permite tener en cuenta
    únicamente las interacciones entre los procesos
    derivadas de sus relaciones de competencia y
    cooperación
  • No nos tenemos que preocupar de si hay
    paralelismo real o paralelismo simulado

53
Asignación de Procesos a Procesadores
2ª Abstracción de la Programación Concurrente Se
ignoran las velocidades relativas de cada
proceso, lo que posibilita considerar sólo las
secuencias de instrucciones que se ejecutan
  • Tenemos que pensar lo que ocurriría con nuestro
    programa si el procesador de cada proceso tuviese
    una velocidad igual
  • También tenemos que pensar que pasaría si un
    procesador fuese muy lento y otro procesados
    fuese muy rápido
  • Pensar en todas las posibles situaciones permite
    que nuestros programas concurrentes funcionen
    correctamente en cualquier tipo de arquitectura y
    sistema

54
Introducción a la Concurrencia
  • Qué es la concurrencia?
  • Dónde se usa la concurrencia?
  • Cómo se usa la concurrencia?
  • PascalFC
  • El orden de las instrucciones
  • Instrucciones atómicas
  • Intercalación
  • Indeterminismo
  • Conclusiones

55
PascalFC
  • Para estudiar el desarrollo de programas
    concurrentes vamos a usar PascalFC
  • Es un lenguaje de programación basado en una
    simplificación de Pascal
  • Está orientado a la enseñanza de la concurrencia
  • Desarrollado por Alan Burns and Geoff Davies en
    la Universidad de York

http//www-users.cs.york.ac.uk/burns/pf.html
PascalFC está incluido en EclipseGavab http//www.
gavab.es/eclipse
56
PascalFC
  • Para hacer un programa concurrente hay que hacer
    dos cosas
  • A) Crear un código que podrá ser ejecutado
    concurrentemente con otros códigos (crear el
    programa secuencial)
  • B) Iniciar la ejecución de ese código (crear el
    proceso)

57
PascalFC
prog.pas
Programa Secuencial
program prog process type pr1(parreal)
begin ... end process type
pr2(parreal) begin ... end var
... begin ... end.
  • Se crea con las palabras reservadas process type
  • La sintaxis es igual a la de un procedimiento en
    Pascal
  • Puede recibir parámetros, declarar variables
    locales
  • En PascalFC lo llamaremos tipo de proceso

58
PascalFC
prog.pas
program prog process type pr1(parreal)
begin ... end process type
pr2(parreal) begin ... end var
vPr1pr1 vAPr2,vBPr2pr2 begin cobegin
vPr1(5.0) vAPr2(7.8) vBPr2(7.5)
coend end.
Creación de un proceso
  • Hay que declarar una variable con el tipo del
    proceso
  • Se hace la llamada con el nombre de la variable
    entre cobegin coend
  • Se ejecutan concurrentemente todos los procesos
  • Es posible crear varios procesos del mismo tipo
    de proceso

59
PascalFC
  • cobegin coend
  • Ejecuta de forma concurrente las llamadas a los
    procesos entre ellas
  • No importan el orden en el fichero
  • Se crea un proceso por llamada
  • Termina cuando han terminado todos los procesos

60
Introducción a la Concurrencia
  • Qué es la concurrencia?
  • Dónde se usa la concurrencia?
  • Cómo se usa la concurrencia?
  • PascalFC
  • El orden de las instrucciones
  • Instrucciones atómicas
  • Intercalación
  • Indeterminismo
  • Conclusiones

61
El orden de las instrucciones
  • En un programa secuencial, todas las
    instrucciones están ordenadas
  • Está claro el orden en el que se van ejecutando
    las instrucciones y la forma en la que van
    cambiando los valores de las variables
  • En la programación concurrente, diferentes
    ejecuciones del mismo programa pueden ejecutar
    las sentencias en orden diferente

62
El orden de las instrucciones
program maxmin procedure min(var
min,n1,n2real) begin if n1 lt n2 then
minn1 else minn2 end procedure
max(var max,n1,n2real) begin if n1 gt n2
then maxn1 else maxn2 end var
n1,n2,nmax,nminreal begin n13 n25
(I0) min(nmin,n1,n2) (I1)
max(nmax,n1,n2) (I2) writeln(nmax,nmin)
(I3) end.
Programación Secuencial Orden Total
I0
I1
I2
I3
Diagrama de Precedencia
La Relación de Precedencia (-gt) entre las
instrucciones define una relación de orden
I0 -gt I1 -gt I2 -gt I3
63
El orden de las instrucciones
Programación Secuencial Orden Total
I0
I1
I2
I3
Diagrama de Precedencia
  • Existe determinismo
  • Al ejecutar el programa con los mismos datos de
    entrada se obtienen los mismos resultados
  • Hay veces que no es necesario que una sentencia
    sea ejecutada antes que otra, se podrían ejecutar
    en cualquier orden Cómo lo podríamos especificar
    en el código?

64
El orden de las instrucciones
program maxmincon process type min(var
min,n1,n2real) begin if n1ltn2 then minn1
else minn2 end process type max(var
max,n1,n2real) begin if n1gtn2 then maxn1
else maxn2 end var n1,n2,nmax,nminreal
pMaxmax, pMinmin begin n13 n25
(I0) cobegin pMin(nmin,n1,n2) (I1)
pMax(nmax,n1,n2) (I2) coend
writeln(nmax,nmin) (I3) end.
Programación Concurrente Orden Parcial
I0
I3
Diagrama de Precedencia
I0-gtI1, I0gtI2, I1-gtI3,I2-gtI3 I1 I2
65
El orden de las instrucciones
Diagrama de Precedencia
  • No existe determinismo
  • No se restringe el orden de ejecución de I1 e I2.
    Podrían ejecutarse en cualquier ordena o de forma
    concurrentemente

I1 I2
66
Introducción a la Concurrencia
  • Qué es la concurrencia?
  • Dónde se usa la concurrencia?
  • Cómo se usa la concurrencia?
  • PascalFC
  • El orden de las instrucciones
  • Instrucciones atómicas
  • Intercalación
  • Indeterminismo
  • Conclusiones

67
Instrucciones atómicas
Recordatorio
1ª Abstracción de la Programación Concurrente Se
considera que cada proceso se ejecuta en su
propio procesador
2ª Abstracción de la Programación Concurrente Se
ignoran las velocidades relativas de cada
proceso, lo que posibilita considerar sólo las
secuencias de instrucciones que se ejecutan
68
Instrucciones atómicas
  • La 1ª y 2ª abstracción nos permiten olvidarnos de
    detalles como el número de procesadores y su
    velocidad
  • Nos permiten pensar en la secuencia de
    instrucciones que ejecuta cada proceso
  • Exactamente qué instrucciones ejecuta un proceso?

69
Instrucciones atómicas
  • Una instrucción atómica es aquella cuya ejecución
    es indivisible
  • O se ejecuta completamente o no se ejecuta, nunca
    se queda a medias
  • Durante la ejecución de una sentencia atómica,
    otros procesos no pueden interferir en su
    ejecución

70
Instrucciones atómicas
  • Las instrucciones atómicas se usan mucho
    aplicaciones empresariales
  • Ejemplo Reserva de vuelo con escala
  • Un viajero quiere ir de Madrid a Los Ángeles
  • Tiene que hacer escala en New York
  • Se debe reservar el billete Madrid-New York y
    también de New York-Los Ángeles
  • La reserva no se puede quedar a medias,
    reservando sólo un trayecto
  • O se reservan ambos trayectos o no se reserva
    ninguno

71
Instrucciones atómicas
  • En programación concurrente, es muy importante
    conocer las instrucciones atómicas que ejecuta el
    procesador
  • Esas instrucciones atómicas serán las que se
    ejecuten completamente sin interferencias de
    otros procesos
  • Pero hay que tener en cuenta que si una sentencia
    en PascalFC se ejecuta como varias sentencias
    atómicas, es posible que otros procesos
    interfieran con ella

72
Instrucciones atómicas
Sentencia PascalFC
Incrementar una variable en 1
xx1
Corresponde a las intrucciones atómicas
Instrucciones Atómicas
LOAD R,x ADD R,1 STR R,x
  • Carga la variable x en el registro R del
    procesador
  • Suma 1 al registro R del procesador
  • Guarda el valor del registro R en la variable x

73
Introducción a la Concurrencia
  • Qué es la concurrencia?
  • Dónde se usa la concurrencia?
  • Cómo se usa la concurrencia?
  • PascalFC
  • El orden de las instrucciones
  • Instrucciones atómicas
  • Intercalación
  • Indeterminismo
  • Conclusiones

74
Intercalación (Interleaving)
  • La 1ª y 2ª abstracción nos permiten pensar en la
    secuencia de instrucciones que ejecuta cada
    proceso en su procesador
  • Pero es bastante complicado pensar en la
    ejecución en paralelo de múltiples secuencias de
    instrucciones (una por cada proceso)
  • Lo que se hace para estudiar el comportamiento de
    un programa concurrente es considerar que todas
    las sentencias de todos los procesos se
    intercalan en una única secuencia

75
Intercalación (Interleaving)
3ª Abstracción de la Programación Concurrente Se
considera que las secuencias de ejecución de las
acciones atómicas de todos los procesos se
intercalan en una única secuencia
  • No hay solapamientos
  • La ejecución de dos instrucciones atómicas en
    paralelo tiene los mismos resultados que una
    después de otra

76
Intercalación (Interleaving)
  • No hay que estudiar una única intercalación de
    instrucciones
  • Todas las intercalaciones son posibles
  • Hay que estudiar lo que ocurre en todas las
    posibles intercalaciones de instrucciones
    atómicas para comprender el comportamiento del
    programa en cualquier ejecución

77
Intercalación (Interleaving)
  • Multiprogramación
  • Realmente las instrucciones se ejecutan de forma
    intercalada
  • Multiproceso
  • Si dos instrucciones compiten por un mismo
    recurso, el hardware las secuencializa
  • Si dos instrucciones no compiten, son
    independientes, el resultado es el mismo en
    paralelo que secuencializado

78
Intercalación (Interleaving)
  • Todas las abstracciones se pueden resumir en sólo
    una
  • Esta abstracción nos permite estudiar el
    comportamiento de los programas concurrentes

Abstracción de la Programación Concurrente Es el
estudio de las secuencias de ejecución
intercalada de las instrucciones atómicas de los
procesos secuenciales (Ben-Ari, 1990)
79
Introducción a la Concurrencia
  • Qué es la concurrencia?
  • Dónde se usa la concurrencia?
  • Cómo se usa la concurrencia?
  • PascalFC
  • El orden de las instrucciones
  • Instrucciones atómicas
  • Intercalación
  • Indeterminismo
  • Conclusiones

80
Indeterminismo
  • Al ejecutar un programa concurrente, se
    ejecutarán las sentencias con una intercalación
    determinada y se obtendrá un resultado
  • Puesto que todas las intercalaciones de
    instrucciones atómicas son posibles, un mismo
    programa puede obtener resultados diferentes en
    diferentes ejecuciones
  • Cuando un mismo programa obtiene resultados
    diferentes dependiendo de la ejecución concreta,
    se dice que es indeterminista

81
Indeterminismo
Instrucciones atómicas del tipo de proceso inc
program incdec process type inc(var
xinteger) begin xx1 end process
type dec(var xinteger) begin xx-1 end var
xinteger pIncinc pDecdec begin x0
cobegin pInc(x)
pDec(x) coend writeln(x) end.
LOAD R,x ADD R,1 STR R,x
Instrucciones atómicas del tipo de proceso dec
LOAD R2,x SUB R2,1 STR R2,x
82
Indeterminismo
  • Una posible intercalación de instrucciones

inc dec x R R2
1 LOAD R2,x 0 0
2 LOAD R,x 0 0 0
3 SUB R2,1 0 0 -1
4 ADD R,1 0 1 -1
5 STR R2,x -1 1 -1
6 STR R,x 1 1 -1
Resultado Final 1
83
Indeterminismo
  • Otra posible intercalación de instrucciones

inc dec x R R2
1 LOAD R2,x 0 0
2 LOAD R,x 0 0 0
3 ADD R,1 0 1 0
4 SUB R2,1 0 1 -1
5 STR R,x 1 1 -1
6 STR R2,x -1 1 -1
Resultado Final -1
84
Indeterminismo
Como se deben considerar todas las posibles
intercalaciones, también hay que considerar que
un proceso se ejecute completamente antes que el
otro
  • Otra más

inc dec x R R2
1 LOAD R2,x 0 0
2 SUB R2,1 0 -1
3 STR R2,x -1 -1
4 LOAD R,x -1 -1 -1
5 ADD R,1 -1 0 -1
6 STR R,x 0 0 -1
Resultado Final 0
85
Indeterminismo
  • Se han encontrado tres intercalaciones posibles
    de las instrucciones atómicas de un programa
    concurrente en las que se obtiene un resultado
    diferente
  • Hay 20 posibles intercalaciones
  • En sólo 2 de ellas se obtiene un 0
  • En 9 intercalaciones se obtiene un 1
  • En 9 intercalaciones se obtiene un -1

86
Introducción a la Concurrencia
  • Qué es la concurrencia?
  • Dónde se usa la concurrencia?
  • Cómo se usa la concurrencia?
  • Conclusiones

87
Conclusiones
  • Ventajas de la Concurrencia
  • Aumento de la eficiencia Aprovechamiento de
    procesador o procesadores
  • Hay tipos de programas que necesitan llevar a
    cabo varias tareas de forma concurrente y por
    tanto es obligatoria la concurrencia
  • La posibilidad te tener tareas en primer plano
    y tareas en segundo plano
  • Tareas en primer plano Interfaz de usuario
  • Tareas en segundo plano Antivirus, impresión,

88
Conclusiones
  • Ventajas de la Concurrencia
  • La tendencia actual para aumentar la potencia de
    cómputo de los sistemas informáticos consiste en
    la creación de procesadores con varios cores o
    núcleos
  • Sólo las aplicaciones concurrentes, que dividan
    las tareas que se deben realizar en varios
    procesos podrán aprovechar la potencia de calculo
    de los nuevos sistemas
  • Esto implica que aplicaciones que actualmente
    están desarrolladas de forma secuencial, sin
    concurrencia, deberán actualizarse para
    aprovechar la potencia de calculo

Apple Mac Pro. 8 cores
89
Conclusiones
  • Desventajas de la Concurrencia
  • Desarrollar programas concurrentes es más difícil
    que desarrollar programas secuenciales
  • Son más difíciles de programar
  • Es más difícil comprobar que su funcionamiento es
    el correcto, porque hay que considerar todas las
    posibles intercalaciones
  • Que una ejecución sea correcta con unos datos de
    entrada no implica que todas las ejecuciones sean
    correctas con esos mismos datos (como ocurre con
    los programas secuenciales).
  • Hay intercalaciones problemáticas que pueden
    aparecer sólo en raras ocasiones

90
Conclusiones
  • Indeterminismo
  • Cuando se implementa un programa concurrente se
    necesita controlar el indeterminismo
  • No obstante, hay veces que permitiendo cierto
    indeterminismo se consiguen programas más
    eficientes
  • Ejemplo En la descarga de ficheros del eMule,
    cada usuario puede descargarse cualquier
    fragmento de otro usuario, sin importar cual de
    ellos. Restringir e imponer un orden podría
    reducir el rendimiento de la aplicación

91
Bibliografía Básica
  • Yela, A. Arroyo, F. Fernandez, L. Teoría y
    Práctica del Módulo de Programación Concurrente
    de la Asignatura de Programación II. Departamento
    de Publicaciones de la E.U.I. de la Universidad
    Politécnica de Madrid, 1997
  • Palma, J.T. y otros. Programación Concurrente.
    Editorial Thomson, 2006
Write a Comment
User Comments (0)
About PowerShow.com