Algoritmos, Datos y Programas 2010
Transcript of Algoritmos, Datos y Programas 2010
![Page 1: Algoritmos, Datos y Programas 2010](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/1.jpg)
CONCURRENCIA
![Page 2: Algoritmos, Datos y Programas 2010](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/2.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/3.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/4.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/5.jpg)
PROGRAMACIÓN CONCURRENTE
3
![Page 6: Algoritmos, Datos y Programas 2010](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/6.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/7.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/8.jpg)
6
CONCURRENCIA– Escenarios
ProgramaSecuencial
Paralelismo
Heterogeneidad
![Page 9: Algoritmos, Datos y Programas 2010](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/9.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/10.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/11.jpg)
9
CONCURRENCIA– Evolución de los procesadores
1950
1
Transistor
2000s
592.000.000
Transistores
![Page 12: Algoritmos, Datos y Programas 2010](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/12.jpg)
10
CONCURRENTE DE VON NEUMANN A MULTICORES
¿Y ahora?
![Page 13: Algoritmos, Datos y Programas 2010](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/13.jpg)
Programación Concurrente - Evolución
Procesador
Memoria cacheNivel L3
Memoria cacheNivel L2
11
Memoria principal
8 cores
![Page 14: Algoritmos, Datos y Programas 2010](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/14.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/15.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/16.jpg)
Programa Concurrente
Comunicación Sincronización
Programación Concurrente
14
![Page 17: Algoritmos, Datos y Programas 2010](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/17.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/18.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/19.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/20.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/21.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/22.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/23.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/24.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/25.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/26.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/27.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/28.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/29.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022071012/62c92e65f96c7e0eab0a405a/html5/thumbnails/30.jpg)
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);
}