Programación Concurrente y Paralela Unidad 1...

18
Programación Concurrente y Paralela Unidad 1 Introducción

Transcript of Programación Concurrente y Paralela Unidad 1...

Page 1: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Programación Concurrente y Paralela Unidad 1 Introducción

Page 2: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Contenido

1.1 Concepto de Concurrencia

1.2 Exclusión Mutua y Sincronización

1.3 Corrección en Sistemas Concurrentes

1.4 Consideraciones sobre el Hardware

1.5 Sistemas Distribuidos

1.6 Sistemas de Tiempo Real

1.7 Procesamiento Paralelo

Page 3: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Concepto de concurrencia

La concurrencia surge ante la necesidad de plantear soluciones con el máximo rendimiento.

Existen varias aplicaciones computacionales que requieren una gran velocidad de cálculo:

visualización

bases de datos distribuidas

simulaciones

predicciones científicas.

Dentro de las áreas afines de la concurrencia tenemos:

sistemas distribuidos

sistemas en tiempo real

Page 4: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Concepto de concurrencia

Programación concurrente tiene sus raíces en los sistemas operativos y en la programación de sistemas (años 60’s).

Sistemas operativos fueron organizados con una colección de procesos ejecutándose concurrentemente (“al mismo tiempo” ), algunos se ejecutaban en el procesador principal y otros en los controladores llamados canales.

La administración de estos sistemas se hacía a bajo nivel, en 1972 apareció el lenguaje Pascal concurrente, era el primer lenguaje de alto nivel para este objetivo.

Page 5: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Concepto de concurrencia

Acontecimientos que impulsaron la programación concurrente:

El concepto de hilo hizo que los programas puedan ejecutarse con mayor velocidad comparados con los procesos utilizados anteriormente.

Los lenguajes orientados objetos como Java que daban mejor soporte a la programación con la inclusión de primitivas.

La aparición de Internet dadas las aplicaciones como el navegador, el chat están programados mediante técnicas de concurrencia

Page 6: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Concepto de concurrencia

Programa secuencial

Se considera un programa imperativo, dado que las instrucciones son ejecutadas una tras otra.

En este caso las instrucciones pertenecen a un solo proceso.

Se considera como un simple hilo de ejecución

Programa concurrente

Existen varios programas que se ejecutan secuencialmente, es decir se encuentran trabajando en paralelo.

Los procesos comparten el tiempo de ejecución de un único procesador disponible dada una técnica de planificación.

Page 7: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Concepto de concurrencia Se define como el conjunto de anotaciones y técnicas

utilizadas para describir mediante programas el paralelismo potencial de los problemas, así como para resolver los problemas de comunicación y sincronización que se presentan cuando varios procesos que se reportan concurrentemente comparten recursos.

Una propiedad básica de este tipo de programación es el no determinismo, se desconoce ante un instante de tiempo que va ocurrir en el siguiente instante:

En el caso de un único procesador se desconoce si después la ejecución de una instrucción específica habrá alguna interrupción para brindar el procesador a otro proceso.

En el caso del sistema multiprocesador las velocidades de los procesadores no están sincronizadas, por lo que se desconoce a priori cuál procesador va ser el primero en ejecutar su siguiente instrucción.

Page 8: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Corrección en sistemas concurrentes

Por tanto es necesario disponer de un modelo abstracto que permita verificar y corregir los sistemas concurrentes.

Cada problema concurrente presenta un tipo distinto de paralelismo, la implementación depende de la arquitectura.

Si se requiere trabajar en un ambiente independiente de la arquitectura se debe plantear un modelo para verificar que sea correcto independientemente del hardware en el que se ejecute.

Page 9: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Exclusión mutua La exclusión mutua es el mecanismo por medio del cual

se asegura que los procesos concurrentes no accedan a un mismo recurso al mismo tiempo, dado que eso puede causar inconsistencia en la información que se procesa.

Para evitar errores se puede identificar regiones en donde los procesos tienen que acceder a variables compartidas por lo que se requiere el concepto de región crítica.

Región crítica es la zona de código de un proceso concurrente donde se utiliza un recurso compartido.

De tal forma que deben determinarse los mecanismos de bloqueo para garantizar que cuando salga uno de sus procesos en ese momento participe otro en el acceso a la región critica.

Page 10: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Sincronización

Existen tres tipos de procesos:

Procesos independientes son aquellos que no se comunican entre sí y por tanto no requieren ponerse de acuerdo ( sincronización).

Procesos cooperativos son aquellos que colaboran en la realización de un trabajo, y por tanto es requisito que se comuniquen entre sí y sincronicen sus actividades.

Procesos en competencia son aquellos que comparten un número finito R de recursos del sistema por ejemplo periféricos, memoria, capacidades de procesado por tanto deben competir para tener el uso de los recursos del sistema implica que deben comunicarse para sincronizase aunque incluso sus labores sean independientes.

La sincronización es la transmisión y recepción de señales que tiene por objeto llevar a cabo el trabajo de un grupo de procesos cooperativos o en competencia.

Page 11: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Ejemplo

Supongamos que en un entorno LINUX se ejecuta la instrucción

cat tema1 tema2 tema3 | wc -l

Esta instrucción va a provocar que el intérprete de comandos cree dos procesos concurrentes, el primero ejecutará el programa cat, que concatenará el contenido de los archivos de texto tema1, tema2 y tema3. El segundo ejecutará el programa wc, que contará el número de líneas de la salida producida por cat. Estos dos procesos cooperan, y será preciso algún tipo de sincronización entre ellos, concretamente hasta que cat no produzca alguna salida wc debería bloquearse.

Page 12: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Consideraciones sobre el hardware

Se tienen dos esquemas de programación:

Programación asíncrona que utiliza los multiprocesadores o sistemas distribuidos.

Programación síncrona donde se utilizan vectores de procesadores.

Page 13: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Clasificación de Flynn (flujo de instrucciones vs número de datos que utilizan)

SISD: ejecutan una instrucción a la vez y utilizan un dato a la vez

SIMD: ejecuta una instrucción a la vez pero se encuentra procesando más de un dato (se utilizan con paralelismo de grano fino).

MISD: ejecuta varias instrucciones a la vez con los mismos datos.

MIMD: tienen más de un procesador y cada uno ejecuta un programa diferente con múltiples flujos de datos. Cada procesador tiene acceso a una memoria global que reduce el tiempo de comunicación (se utilizan para grano medio y grano largo), se clasifican:

Memoria compartida son multiprocesadores

Memoria distribuida son multicomputadoras, clusters o grids.

Page 14: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Sistemas Distribuidos

Sistemas cuyos componentes hardware y software, que están en computadoras conectados en red, se comunican y coordinan sus acciones mediante el paso de mensajes, para el logro de un objetivo.

Se establece la comunicación mediante un protocolo prefijado por un esquema cliente-servidor.

Page 15: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Sistemas Distribuidos

Características:

Concurrencia.- Esta característica de los sistemas distribuidos permite que los recursos disponibles en la red puedan ser utilizados simultáneamente por los usuarios y/o agentes que interactúan en la red.

Carencia de reloj global.- Las coordinaciones para la transferencia de mensajes entre los diferentes componentes para la realización de una tarea, no tienen una temporización general, esta más bien distribuida a los componentes.

Fallos independientes de los componentes.- Cada componente del sistema puede fallar independientemente, con lo cual los demás pueden continuar ejecutando sus acciones. Esto permite el logro de las tareas con mayor efectividad, pues el sistema en su conjunto continua trabajando.

Page 16: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Sistemas de Tiempo Real

Es un sistema que interacciona con su entorno físico y responde a los estímulos del entorno dentro de un plazo de tiempo determinado.

No basta con que las acciones del sistema sean correctas, sino que, además, tienen que ejecutarse dentro de un intervalo de tiempo determinado

Page 17: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Procesamiento Paralelo

El objetivo del paralelismo es conseguir un programa inicialmente secuencial en menos tiempo utilizando para ello varios procesadores.

Esto se alcanza cuando a partir de un problema grande se realiza una división en subproblemas más pequeños (técnica divide y vencerás) donde cada uno de estos son repartidos entre los procesadores disponibles.

Page 18: Programación Concurrente y Paralela Unidad 1 Introducciónmtovar.cs.buap.mx/doc/PCP/Unidad1PCP.pdf · 2016. 1. 8. · Concurrente y Paralela Unidad 1 Introducción . Contenido 1.1

Procesamiento Paralelo Para paralelizar resulta

necesario plantear una estrategia adecuada de diseño con el objetivo de aumentar la eficiencia del programa, cabe mencionar que en ocasiones:

No es posible paralelizar todo el programa

El reparto de elementos del programa entre los procesadores no se hace de forma equitativa.