algoritmos, datos y programas 2010

30
CONCURRENCIA

Upload: others

Post on 09-Jul-2022

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritmos, Datos y Programas 2010

CONCURRENCIA

Page 2: Algoritmos, Datos y Programas 2010

TEMAS

• Familias de computadoras y evolución

• Programación concurrente

• Evolución de la programación

• Comunicación

• Sincronización

Clase 18ALGORITMOS, DATOS Y PROGRAMAS 2011

Page 3: Algoritmos, Datos y Programas 2010

ORGANIZACIÓN DE UNA COMPUTADORA

• Ha posibilitado los últimos avances en rendimiento:

• Segmentación

• Paralelismo

• Computadoras RISC (Reduced Instruction Set Computer).

RISC: 1. Instrucciones de tamaño fijo y presentadas en un reducido número de formatos.

• 2. Sólo las instrucciones de carga y almacenamiento acceden a la memoria por datos.

• Además estos procesadores suelen disponer de muchos registros de propósito general.El objetivode diseñar máquinas con esta arquitectura es posibilitar la segmentación y el paralelismo en laejecución de instrucciones y reducir los accesos a memoria.

Page 4: Algoritmos, Datos y Programas 2010

FAMILIA DE COMPUTADORAS

• Un conjunto de computadoras forma una familia cuando tienen la misma arquitectura y diferentes estructuras

• Surge el concepto de compatibilidad:

• Programa escrito para un modelo, se ejecuta en otro modelo de la serie con diferencias en tiempo de ejecución

• Sentido ascendente

• Características:

• Repertorio de instrucciones similar o idéntico

• Velocidad en incremento

• Nº de puertos E/S en incremento

• Tamaño creciente de la memoria

• Coste creciente

Page 5: Algoritmos, Datos y Programas 2010

PROGRAMACIÓN CONCURRENTE

3

Page 6: Algoritmos, Datos y Programas 2010

4

Programación Concurrente ¿Qué es?

Programación Concurrente

Ejecutar multiples Actividades en paralelo o simultáneo

Permite la interacción de distintos procesos al mismo

tiempo

Concepto clave en la Cienciade la Computación

Influye en el diseño de hardware, sistemas operativos y

multiprocesadores

Page 7: Algoritmos, Datos y Programas 2010

5

CONCURRENCIA– ¿Dónde está?

En los accesos a diferentes páginas de unnavegador web.Varios usuarios accediendo a la misma página.

El Sistema Operativo dela computadora

Un smartphone

Reserva de pasajes, hotel, etc

Page 8: Algoritmos, Datos y Programas 2010

6

CONCURRENCIA– Escenarios

ProgramaSecuencial

Paralelismo

Heterogeneidad

Page 9: Algoritmos, Datos y Programas 2010

7

CONCURRENCIA– Escenarios

Se tiene:o Automóviles = procesos que se

ejecutan

o Carriles y rutas = múltiplesprocesadores

o Los automóviles deben sincronizarsepara no chocar.

Objetivo: examinar los tipos de autos (procesos), rutas a recorrer(aplicaciones), ysincronización)

Objetivo: examinar los tipos de autos (procesos), rutas a recorrer(aplicaciones), caminos (hardware), y reglas (comunicación ysincronización).

Page 10: Algoritmos, Datos y Programas 2010

8

CONCURRENCIA– Escenarios

Mundo Real Concurrencia

Concurrencia es la característica de los sistemas que indicaque múltiples procesos/tareas pueden ser ejecutados almismo tiempo y pueden cooperar y coordinarse paracumplir la función del sistema.

¿Los procesadores acompañaron?

Page 11: Algoritmos, Datos y Programas 2010

9

CONCURRENCIA– Evolución de los procesadores

1950

1

Transistor

2000s

592.000.000

Transistores

Page 12: Algoritmos, Datos y Programas 2010

10

CONCURRENTE DE VON NEUMANN A MULTICORES

¿Y ahora?

Page 13: Algoritmos, Datos y Programas 2010

Programación Concurrente - Evolución

Procesador

Memoria cacheNivel L3

Memoria cacheNivel L2

11

Memoria principal

8 cores

Page 14: Algoritmos, Datos y Programas 2010

Programación Concurrente - Evolución

PARA PODER EXPLOTAR ESTE HARDWARE ES NECESARIO PROGRAMAR PROCESOS

CONCURRENTES !

12

Preguntas

¿Cómo se maneja la

concurrencia?

¿Cómointeractúan los

procesos?

¿Cómo armamosun programa

correcto?

Page 15: Algoritmos, Datos y Programas 2010

Los procesos concurrentes tendrán necesidad decomunicarse información.

Además, será necesario en ocasiones detener a unproceso hasta que se produzca un determinadoevento o se den ciertas condiciones sincronización

Los lenguajes concurrentes deben proporcionarmecanismos de sincronización y comunicación.

Programación Concurrente

13

Page 16: Algoritmos, Datos y Programas 2010

Programa Concurrente

Comunicación Sincronización

Programación Concurrente

14

Page 17: Algoritmos, Datos y Programas 2010

Pasaje de Mensaje

MemoriaCompartida

Comunicación

Programación Concurrente - Comunicación

15

Programa Concurrente

Comunicación Sincronización

Page 18: Algoritmos, Datos y Programas 2010

Programación Concurrente - Comunicación

16

Programa Concurrente

Comunicación

Pasaje de Mensajes

Memoria Compartida

Sincronización

PASAJE DE MENSAJES

OrigenDestinoContenido

Page 19: Algoritmos, Datos y Programas 2010

Programación Concurrente - Comunicación

17

PASAJE DE MENSAJES

OrigenDestinoContenido

• Es necesario establecer un canal(lógico o físico) para transmitirinformación entre procesos.

• También el lenguaje debe proveerun protocolo adecuado.

•Para que la comunicación seaefectiva los procesos deben “saber”cuándo tienen mensajes para leer ycuando deben trasmitir mensajes.

ENVIAR y RECIBIR

Page 20: Algoritmos, Datos y Programas 2010

Programación Concurrente - Comunicación

18

MPI_Send (buff, 128, MPI_CHAR,1 , 0, MPI_COMM_WORLD);

NombreOperación

Mensaje TipoMensaje

Destino

Origen

EnviarMensaje(dato, robot);

EJEM

PLO

S

MensajeDestino

Page 21: Algoritmos, Datos y Programas 2010

Programación Concurrente - Comunicación

19

Pasaje de Mensajes

Sincrónico

Asincrónico

Sincrónico

Asincrónico

EnviarMensaje

RecibirMensaje

Page 22: Algoritmos, Datos y Programas 2010

Programación Concurrente - Comunicación

20

Programa Concurrente

Comunicación

Pasaje de Mensajes

MemoriaCompartida

Sincronización

MEMORIA COMPARTIDA

Memoria localCache L2

Cache L3

Memoria Ppal

Page 23: Algoritmos, Datos y Programas 2010

Programación Concurrente - Sincronización

21

PROTEGER y LIBERAR

Memoria Ppal

Los procesos intercambianinformación sobre la memoriacompartida o actúancoordinadamente sobre datosresidentes en ella.

Lógicamente no pueden operarsimultáneamente sobre lamemoria compartida, lo queobliga a bloquear y liberar elacceso a la memoria.

La solución más elemental es unavariable de control que habilite ono el acceso de un proceso a lamemoria compartida.

Page 24: Algoritmos, Datos y Programas 2010

Programación Concurrente - Sincronización

22

PROTEGER y LIBERARPROTEGER y LIBERAR

Memoria Ppal

Dado un recursocompartido

¿Libre?

BloqueoUsoLibero

Sí No

SEMAFOROSEMAFORO

Page 25: Algoritmos, Datos y Programas 2010

Programación Concurrente - Sincronización

23

P (variableSemaforo);

Protége un recurso

EJEM

PLO

S

V (variableSemaforo);

Libera un recurso

BloquearEsquina(av,calle);

LiberarEsquina(av,calle);

Page 26: Algoritmos, Datos y Programas 2010

Programación Concurrente - Ejercicios

24

Ejercicio 1: supongamos que en un programa existen 3 procesos quequieren incrementar (en uno) cada 15 segundos el valor de una variableque comparten. ¿El código a continuación es correcto?

Variable compartida cont

Proceso 1:{

delay (15);cont:= cont + 1;

}

Proceso 2:{

delay (15);cont:= cont + 1;

}

Proceso 3:{

delay (15);cont:= cont + 1;

}

Page 27: Algoritmos, Datos y Programas 2010

Programación Concurrente - Ejercicios

24

Ejercicio 1: supongamos que en un programa existen 3 procesos que quierenincrementar (en uno) cada 15 segundos el valor de una variable que comparten.El código a continuación es correcto?

Variable compartida cont

Proceso 1:{

P(variable);delay (15);cont:= cont + 1;V(variable);

}

Proceso 2:{

P(variable);delay (15);cont:= cont + 1;V(variable);

}

Proceso 3:{

P(variable);delay (15);cont:= cont + 1;V(variable);

}

Page 28: Algoritmos, Datos y Programas 2010

Programación Concurrente - Ejercicios

24

Ejercicio 2: en un programa existen 3 procesos, un arreglo de longitud M y un valorN y se quiere calcular cuantas veces aparece el valor N en el arreglo. ¿El código acontinuación es correcto?

Variable compartida cont y arreglo

Proceso 1:{inf:=…; sup:= …;

for i:= inf to sup doif v[i] = N then

cont:= cont + 1;}

Proceso 2:{inf:=…; sup:= …;

for i:= inf to sup doif v[i] = N then

cont:= cont + 1;}

Proceso 3:{inf:=…; sup:= …;

for i:= inf to sup doif v[i] = N then

cont:= cont + 1;}

Page 29: Algoritmos, Datos y Programas 2010

Programación Concurrente - Ejercicios

24

Ejercicio 2: en un programa existen 3 procesos, un arreglo de longitud M y unvalor N y se quiere calcular cuantas veces aparece el valor N en el arreglo. Elcódigo a continuación es correcto?

Variable compartida cont y arreglo

Proceso 1:{inf:=…; sup:= …;

for i:= inf to sup doP(variable); if v[i] = N then

cont:= cont + 1;V(variable);

}

Proceso 2:{inf:=…; sup:= …;

for i:= inf to sup doP(variable); if v[i] = N then

cont:= cont + 1;V(variable);

}

Proceso 3:{inf:=…; sup:= …;

for i:= inf to sup doP(variable); if v[i] = N then

cont:= cont + 1;V(variable);

}

Page 30: Algoritmos, Datos y Programas 2010

Programación Concurrente - Ejercicios

24

Ejercicio 2: en un programa existen 3 procesos, un arreglo de longitud M y un valor N yse quiere calcular cuantas veces aparece el valor N en el arreglo. ¿El código acontinuación es correcto?

Variable compartida cont y arreglo

Proceso 1:{inf:=…; sup:= …;

for i:= inf to sup doif v[i] = N thenP(variable); cont:= cont + 1;V(variable);

}

Proceso 2:{inf:=…; sup:= …;

for i:= inf to sup doif v[i] = N thenP(variable); cont:= cont + 1;V(variable);

}

Proceso 3:{inf:=…; sup:= …;

for i:= inf to sup doif v[i] = N thenP(variable); cont:= cont + 1;V(variable);

}