91
Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S P G E S P G [email protected], [email protected], [email protected] Prof: Alberto E. Cohaila Barrios

Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Embed Size (px)

Citation preview

Page 1: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Tema 06:

Introducción a la Programación Concurrente

MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN

E S P GE S P G

[email protected], [email protected], [email protected]

Prof: Alberto E. Cohaila Barrios

Page 2: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 3: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

¿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

Page 4: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

¿Qué es la concurrencia?

Paralelismo Solapamiento

Simultaneidad

Tiempo

TiempoTiempo

• Los sucesos se producen en un mismo intervalo de tiempo intervalo de tiempo ((diferentes recursos)

• Los sucesos se producen en el mismo instante de tiempoinstante de tiempo

• Los sucesos se producen en intervalos intervalos de tiempo superpuestosde tiempo superpuestos

Page 5: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

¿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…

Page 6: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 7: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 8: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 9: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 10: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Programa Secuencial. Proceso

Nivel del Sistema Operativo

ProgramaSecuencial

Proceso(Proceso Pesado)

Page 11: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 12: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Programa Secuencial. Proceso

Sistema Operativo Programa Internamente

Programa Secuencial

Un fichero ejecutable (.exe)

Conjunto de sentencias (Procedimiento)

Proceso Ejecución de un .exeTiene 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

Page 13: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 14: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 15: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Procesos Concurrentes. Programa y Sistema Concurrente

Programa Concurrente Conjunto de varios programas

secuenciales, cuyos procesos pueden ejecutarse concurrentemente en un sistema informático

Page 16: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 17: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Procesos Concurrentes. Programa y Sistema Concurrente

Sistema Concurrente Sistema Informático (HW+SW) en el

que es posible ejecutar varios procesos concurrentemente

Page 18: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 19: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 20: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 21: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 22: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 23: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 24: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 25: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 26: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Interacción entre procesos: Sincronización y Comunicación

Relaciones entre procesos

Competencia

Cooperación

Actividades entre procesos

Sincronización

Comunicación

SincronizaciónCondicional

ExclusiónMutua

Se lleva a cabo

mediante

A veces necesita

Hay diferentes

tipos

Page 27: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 28: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

¿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

Page 29: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 30: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Arquitecturas Físicas

Sistemas monoprocesador Sistemas con un único procesador Los PCs de sobremesa habituales hace

pocos años

Procesador

Memoria Entrada/Salida

Bus

Page 31: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Arquitecturas Físicas

Sistemas multiprocesador muy acoplados Varios procesadores en la misma máquina Usado en servidores

Procesador

Entrada/Salida

Procesador

MemoriaComún

ProcesadorMemoria

Local

Bus

MemoriaComún

Page 32: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Memoria Entrada/Salida

Core Core

Bus

Page 33: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Arquitecturas Físicas

Sistemas multiprocesador poco acoplados Redes de Ordenadores (Granjas de

Ordenadores, LAN, Internet…) Sistemas Distribuidos

Servidor Web

Red

MóvilConsola

PC

Page 34: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 35: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Arquitecturas Físicas

Modelos de Concurrencia

Arquitecturasde Sistemas Concurrentes

Paso de Mensajes

Memoria Compartida

Monoprocesador √ √

Multiprocesador Muy Acoplado √ √

Multiprocesador Poco Acoplado (Red) √ X

Page 36: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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)

Page 37: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 38: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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?

Page 39: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Asignación de Procesos a Procesadores

Multiproceso Cada proceso se ejecuta en su propio

procesador en un sistema de memoria compartida

Procesador1

Entrada/Salida

Procesador3

MemoriaComún

Proc1 Proc2 Proc3

Procesador2

Bus

Page 40: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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)

Máquina 1

Router

Máquina 3

Proc1 Proc2 Proc3

Máquina 2

Impresora

Red

Page 41: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Paralelismo Real

Ejecución Secuencial

Proc1

Proc2

Proc1

Proc2

t

t

Page 42: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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)

Entrada/SalidaMemoria

Proc2 Proc3

Procesador

Bus

Proc1

Page 43: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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 Paralelismo Simulado

Proc1

Proc2

Proc1

Proc2

Ejecución Secuencial

t

t

Page 44: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Asignación de Procesos a Procesadores

Asignación de Procesos a Procesadores

Paralelismo RealAumenta la velocidad de ejecución

Paralelismo SimuladoNo aumenta la velocidad de ejecució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

Cada procesador ejecuta un proceso• Multiproceso• Procesamiento Distribuido

Cada procesador ejecuta varios procesos• Multiprogramación

Page 45: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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?

Page 46: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 47: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 48: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Asignación de Procesos a Procesadores

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

Paralelismo Simulado

Ejecución Secuencial

Proc1

Proc2

Proc1

Proc2

ProcesoBloqueado

Page 49: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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…

Page 50: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 51: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 52: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Asignación de Procesos a Procesadores

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

1ª Abstracción de la Programación ConcurrenteSe considera que cada proceso se ejecuta en su propio procesador

Page 53: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Asignación de Procesos a Procesadores

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

2ª Abstracción de la Programación ConcurrenteSe ignoran las velocidades relativas de cada proceso, lo que posibilita considerar sólo las secuencias de instrucciones que se ejecutan

Page 54: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 55: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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 EclipseGavabhttp://www.gavab.es/eclipse

Page 56: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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)

Page 57: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

PascalFC

program prog; process type pr1(par:real); begin ... end; process type pr2(par:real); begin ... end;var ...begin ...end.

prog.pas

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

Programa Secuencial

Page 58: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

PascalFC

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

program prog; process type pr1(par:real); begin ... end; process type pr2(par:real); begin ... end;var vPr1:pr1; vAPr2,vBPr2:pr2;begin cobegin vPr1(5.0); vAPr2(7.8); vBPr2(7.5); coend;end.

Creación de un proceso

prog.pas

Page 59: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 60: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 61: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 62: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

El orden de las instrucciones

program maxmin; procedure min(var min,n1,n2:real); begin if n1 < n2 then min:=n1 else min:=n2; end; procedure max(var max,n1,n2:real); begin if n1 > n2 then max:=n1 else max:=n2; end;var n1,n2,nmax,nmin:real;begin n1:=3; n2:=5; (*I0*) min(nmin,n1,n2); (*I1*) max(nmax,n1,n2); (*I2*) writeln(nmax,nmin) (*I3*)end.

I0 I1 I2 I3

La Relación de Precedencia (->) entre las instrucciones

define una relación de orden

I0 -> I1 -> I2 -> I3

Programación Secuencial

Orden Total

Diagrama de Precedencia

Page 63: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

El orden de las instrucciones

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?

Programación Secuencial

Orden Total

I0 I1 I2 I3

Diagrama de Precedencia

Page 64: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

El orden de las instruccionesprogram maxmincon; process type min(var min,n1,n2:real); begin if n1<n2 then min:=n1 else min:=n2; end; process type max(var max,n1,n2:real); begin if n1>n2 then max:=n1 else max:=n2; end;var n1,n2,nmax,nmin:real; pMax:max, pMin:min; begin n1:=3; n2:=5; (*I0*) cobegin pMin(nmin,n1,n2); (*I1*) pMax(nmax,n1,n2); (*I2*) coend; writeln(nmax,nmin) (*I3*)end.

I0

I1

I2

I3

I0->I1, I0–>I2, I1->I3,I2->I3

I1 || I2

Programación Concurrente

Orden Parcial

Diagrama de Precedencia

Page 65: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

El orden de las instrucciones

Programación Concurrente

Orden Parcial

I0

I1

I2

I3

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

Diagrama de Precedencia

Page 66: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 67: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Instrucciones atómicas

1ª Abstracción de la Programación ConcurrenteSe considera que cada proceso se ejecuta en su propio procesador

2ª Abstracción de la Programación ConcurrenteSe ignoran las velocidades relativas de cada proceso, lo que posibilita considerar sólo las secuencias de instrucciones que se ejecutan

Recordatorio

Page 68: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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?

Page 69: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 70: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 71: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 72: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Instrucciones atómicas

x:=x+1

LOAD R,xADD R,#1STR R,x

Sentencia PascalFC

Instrucciones Atómicas

Corresponde a las intrucciones atómicas

Incrementar una variable en 1

• 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

Page 73: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 74: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 75: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Intercalación (Interleaving)

No hay solapamientos La ejecución de dos instrucciones

atómicas en paralelo tiene los mismos resultados que una después de otra

3ª Abstracción de la Programación ConcurrenteSe considera que las secuencias de ejecución de las acciones atómicas de todos los procesos se intercalan en una única secuencia

Page 76: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 77: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 78: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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)

Page 79: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 80: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 81: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Indeterminismo

BLP (06-07)

program incdec; process type inc(var x:integer); begin x:=x+1; end; process type dec(var x:integer); begin x:=x-1; end;var x:integer; pInc:inc; pDec:dec;begin x:=0; cobegin pInc(x); pDec(x); coend; writeln(x)end.

LOAD R,xADD R,#1STR R,x

Instrucciones atómicas del tipo de proceso inc

LOAD R2,xSUB R2,#1STR R2,x

Instrucciones atómicas del tipo de proceso dec

Page 82: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

LOAD R,xADD R,#1STR R,x

inc

LOAD R2,xSUB R2,#1STR R2,x

dec

Page 83: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

LOAD R,xADD R,#1STR R,x

inc

LOAD R2,xSUB R2,#1STR R2,x

dec

Page 84: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Indeterminismo

Otra más…

LOAD R,xADD R,#1STR R,x

inc

LOAD R2,xSUB R2,#1STR R2,x

dec

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

Como se deben considerar todas las posibles intercalaciones, también hay que considerar que un proceso se ejecute completamente antes que el otro

Page 85: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 86: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

Introducción a la Concurrencia

¿Qué es la concurrencia? ¿Dónde se usa la concurrencia? ¿Cómo se usa la concurrencia? Conclusiones

Page 87: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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,

Page 88: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 89: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 90: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

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

Page 91: Tema 06: Introducción a la Programación Concurrente MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN E S

• 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

Bibliografía Básica