ESPG MAESTRA EN INGENIERIA DE SISTEMAS E INFORMTICA

  • Slides: 91
Download presentation
ESPG MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN Tema

ESPG 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 Prof: Alberto E. Cohaila Barrios acohailab@unjbg. edu. pe, acohailab@hotmail. com, acohailab@speedy. com. pe 1

Introducción a la Concurrencia ¡ ¿Qué es la concurrencia? l l ¡ ¡ ¡

Introducción a la Concurrencia ¡ ¿Qué es la concurrencia? l l ¡ ¡ ¡ Programa Secuencial. 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 2

¿Qué es la concurrencia? El paradigma de la programación concurrente ¡ Paradigma ¡ l

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

¿Qué es la concurrencia? Paralelismo • Los sucesos se producen en un mismo i

¿Qué es la concurrencia? Paralelismo • Los sucesos se producen en un mismo i n te r v a l o d e ti e m p o (diferentes recursos) Solapamiento Tiempo Simultaneidad • Los sucesos se producen en intervalos d e ti e m p o s u p e r p u e s to s • Los sucesos se producen en el mismo i n s ta n te d e ti e m p o Tiempo 4

¿Qué es la concurrencia? ¡ El paradigma de la programación concurrente se ocupa de

¿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 l Java, Pascal. FC, Ada, PAD, Parallel C, OCCAM… 5

Introducción a la Concurrencia ¡ ¿Qué es la concurrencia? l l ¡ ¡ ¡

Introducción a la Concurrencia ¡ ¿Qué es la concurrencia? l l ¡ ¡ ¡ Programa Secuencial. 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 6

Programa Secuencial. Proceso ¡ Programa Secuencial l Conjunto de declaraciones de datos e instrucciones

Programa Secuencial. Proceso ¡ Programa Secuencial l 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 7

Programa Secuencial. Proceso ¡ Proceso l l Es la ejecución de un programa secuencial

Programa Secuencial. Proceso ¡ Proceso l l 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 8

Programa Secuencial. Proceso ¡ Se puede ver a dos niveles l Nivel del Sistema

Programa Secuencial. Proceso ¡ Se puede ver a dos niveles l Nivel del Sistema Operativo Programa Secuencial: Fichero ejecutable ¡ Proceso: Proceso que aparece en el sistema cuando se ejecuta un fichero ejecutable ¡ l 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 ¡ 9

Programa Secuencial. Proceso ¡ Nivel del Sistema Operativo Programa Secuencial Proceso (Proceso Pesado) 10

Programa Secuencial. Proceso ¡ Nivel del Sistema Operativo Programa Secuencial Proceso (Proceso Pesado) 10

Programa Secuencial. Proceso ¡ Nivel de un Programa Internamente l l Programa Secuencial ¡

Programa Secuencial. Proceso ¡ Nivel de un Programa Internamente l l 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 Pascal. FC, puede haber varios procesos internamente ¡ Proceso ligero, Hilo de Ejecución o Thread 11

Programa Secuencial. Proceso Sistema Operativo Programa Internamente Programa Secuencial Un fichero ejecutable Conjunto de

Programa Secuencial. Proceso Sistema Operativo Programa Internamente Programa Secuencial Un fichero ejecutable Conjunto de sentencias (. exe) (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 12

Introducción a la Concurrencia ¡ ¿Qué es la concurrencia? l l ¡ ¡ ¡

Introducción a la Concurrencia ¡ ¿Qué es la concurrencia? l l ¡ ¡ ¡ Programa Secuencial. 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 13

Procesos Concurrentes. Programa y Sistema Concurrente ¡ Procesos Concurrentes l P 1 y P

Procesos Concurrentes. Programa y Sistema Concurrente ¡ Procesos Concurrentes l P 1 y P 2 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 P 1 P 2 Tiempo 14

Procesos Concurrentes. Programa y Sistema Concurrente ¡ Programa Concurrente l Conjunto de varios programas

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

Procesos Concurrentes. Programa y Sistema Concurrente ¡ Programa Concurrente l Nivel de Sistema Operativo

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

Procesos Concurrentes. Programa y Sistema Concurrente ¡ Sistema Concurrente l Sistema Informático (HW+SW) en

Procesos Concurrentes. Programa y Sistema Concurrente ¡ Sistema Concurrente l Sistema Informático (HW+SW) en el que es posible ejecutar varios procesos concurrentemente 17

Introducción a la Concurrencia ¡ ¿Qué es la concurrencia? l l ¡ ¡ ¡

Introducción a la Concurrencia ¡ ¿Qué es la concurrencia? l l ¡ ¡ ¡ Programa Secuencial. 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 18

Relaciones entre procesos: Competencia y Cooperación ¡ Sin relación entre procesos (Independencia) l ¡

Relaciones entre procesos: Competencia y Cooperación ¡ Sin relación entre procesos (Independencia) l ¡ No existe ninguna relación entre los procesos (No es interesante) Con relación entre procesos (Interacción) l Competencia ¡ l 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 19

Relaciones entre procesos: Competencia y Cooperación ¡ Competencia l Webcam ¡ ¡ ¡ Por

Relaciones entre procesos: Competencia y Cooperación ¡ Competencia l 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 l Envío de fichero por mail ¡ ¡ Por ejemplo el Open. Office genera un fichero en disco que debe leerse posteriormente por el lector de correo para ser enviado Los procesos colaboran por medio de ficheros 20

Introducción a la Concurrencia ¡ ¿Qué es la concurrencia? l l ¡ ¡ ¡

Introducción a la Concurrencia ¡ ¿Qué es la concurrencia? l l ¡ ¡ ¡ Programa Secuencial. 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 21

Actividades entre procesos: Sincronización y Comunicación La competencia y la cooperación son relaciones de

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 ¡ l l Comunicación Sincronización condicional ¡ Exclusión mutua ¡ 22

Actividades entre procesos: Sincronización y Comunicación ¡ Comunicación l l l Es el intercambio

Actividades entre procesos: Sincronización y Comunicación ¡ Comunicación l l l 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 23

Actividades entre procesos: Sincronización y Comunicación ¡ Sincronización l La sincronización impone restricciones a

Actividades entre procesos: Sincronización y Comunicación ¡ Sincronización l La sincronización impone restricciones a la ejecución de las sentencias de los procesos l 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 Open. Office 24

Actividades entre procesos: Sincronización y Comunicación ¡ Sincronización l La sincronización impone restricciones a

Actividades entre procesos: Sincronización y Comunicación ¡ Sincronización l La sincronización impone restricciones a la ejecución de las sentencias de los procesos l 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 25

Interacción entre procesos: Sincronización y Comunicación Relaciones entre procesos Actividades entre procesos Hay diferentes

Interacción entre procesos: Sincronización y Comunicación Relaciones entre procesos Actividades entre procesos Hay diferentes tipos Se lleva a cabo mediante Competencia Sincronización A veces necesita Cooperación Sincronización Condicional Exclusión Mutua Comunicación 26

Introducción a la Concurrencia ¿Qué es la concurrencia? ¡ ¿Dónde se usa la concurrencia?

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

¿Dónde se usa la concurrencia? ¡ Arquitecturas de Sistemas Concurrentes l En este módulo

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

Introducción a la Concurrencia ¿Qué es la concurrencia? ¡ ¿Dónde se usa la concurrencia?

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

Arquitecturas Físicas ¡ Sistemas monoprocesador l Sistemas con un único procesador l Los PCs

Arquitecturas Físicas ¡ Sistemas monoprocesador l Sistemas con un único procesador l Los PCs de sobremesa habituales hace pocos años Procesador Bus Memoria Entrada/Salida 30

Arquitecturas Físicas ¡ Sistemas multiprocesador muy acoplados l Varios procesadores en la misma máquina

Arquitecturas Físicas ¡ Sistemas multiprocesador muy acoplados l Varios procesadores en la misma máquina l Usado en servidores Procesador Memoria Local Bus Memoria Común Entrada/Salida 31

Arquitecturas Físicas ¡ Sistemas multiprocesador muy acoplados l l Actualmente se están integrando varios

Arquitecturas Físicas ¡ Sistemas multiprocesador muy acoplados l l 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 Bus Memoria Entrada/Salida 32

Arquitecturas Físicas ¡ Sistemas multiprocesador poco acoplados l Redes de Ordenadores (Granjas de Ordenadores,

Arquitecturas Físicas ¡ Sistemas multiprocesador poco acoplados l Redes de Ordenadores (Granjas de Ordenadores, LAN, Internet…) l Sistemas Distribuidos Servidor Web Móvil Consola PC Red 33

Arquitecturas Físicas ¡ Modelos de Concurrencia l Memoria compartida Los procesos pueden acceder a

Arquitecturas Físicas ¡ Modelos de Concurrencia l Memoria compartida Los procesos pueden acceder a una memoria común ¡ Existen variables compartidas que varios procesos pueden leer y escribir ¡ l Paso de mensajes Los procesos se intercambian mensajes entre sí ¡ Un proceso envía mensaje y otro proceso lo recibe ¡ 34

Arquitecturas Físicas Modelos de Concurrencia Arquitecturas de Sistemas Concurrentes Paso de Mensajes Memoria Compartida

Arquitecturas Físicas Modelos de Concurrencia Arquitecturas de Sistemas Concurrentes Paso de Mensajes Memoria Compartida Monoprocesador √ √ Multiprocesador Muy Acoplado √ √ Multiprocesador Poco Acoplado (Red) √ X 35

Arquitecturas Físicas Vamos a centrarnos en el modelo de concurrencia de memoria compartida ¡

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) ¡ 36

Introducción a la Concurrencia ¿Qué es la concurrencia? ¡ ¿Dónde se usa la concurrencia?

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

Asignación de Procesos a Procesadores Un procesador sólo puede ejecutar un proceso a la

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? ¡ 38

Asignación de Procesos a Procesadores ¡ Multiproceso l Cada proceso se ejecuta en su

Asignación de Procesos a Procesadores ¡ Multiproceso l Cada proceso se ejecuta en su propio procesador en un sistema de memoria compartida Proc 1 Proc 2 Proc 3 Procesador 1 Procesador 2 Procesador 3 Bus Memoria Común Entrada/Salida 39

Asignación de Procesos a Procesadores ¡ Procesamiento Distribuido l Cada proceso se ejecuta en

Asignación de Procesos a Procesadores ¡ Procesamiento Distribuido l Cada proceso se ejecuta en su propio procesador dentro de cada máquina de una red (Programa distribuido) Proc 1 Proc 2 Proc 3 Máquina 1 Máquina 2 Máquina 3 Red Impresora Router 40

Asignación de Procesos a Procesadores ¡ Paralelismo Real l l Se obtiene cuando hay

Asignación de Procesos a Procesadores ¡ Paralelismo Real l l 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 Proc 1 Proc 2 t Ejecución Secuencial Proc 1 Proc 2 t Paralelismo Real 41

Asignación de Procesos a Procesadores ¡ Multiprogramación l l Varios procesos se ejecutan en

Asignación de Procesos a Procesadores ¡ Multiprogramación l l 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) Proc 1 Proc 2 Proc 3 Procesador Bus Memoria Entrada/Salida 42

Asignación de Procesos a Procesadores ¡ Paralelismo Simulado (Pseudoparalelismo) l Se obtiene cuando varios

Asignación de Procesos a Procesadores ¡ Paralelismo Simulado (Pseudoparalelismo) l Se obtiene cuando varios procesos comparten el mismo procesador l El usuario percibe una sensación de paralelismo real l No se consigue un aumento de la velocidad de ejecución del programa con respecto a la ejecución secuencial Proc 1 Proc 2 t Ejecución Secuencial Proc 1 Proc 2 t Paralelismo Simulado 43

Asignación de Procesos a Procesadores ¡ Asignación de Procesos a Procesadores Cada procesador ejecuta

Asignación de Procesos a Procesadores ¡ Asignación de Procesos a Procesadores Cada procesador ejecuta un proceso • Multiproceso • Procesamiento Distribuido Cada procesador ejecuta varios procesos • Multiprogramación Paralelismo Real Aumenta la velocidad de ejecución Paralelismo Simulado No 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 44

Asignación de Procesos a Procesadores ¡ Multiproceso l ¡ Aumenta la velocidad de ejecución

Asignación de Procesos a Procesadores ¡ Multiproceso l ¡ Aumenta la velocidad de ejecución Multiprogramación l l 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? 45

Asignación de Procesos a Procesadores ¡ Ventajas de la Multiprogramación l l Dar un

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

Asignación de Procesos a Procesadores ¡ Ventajas de la Multiprogramación l Ciertos tipos de

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

Asignación de Procesos a Procesadores ¡ Ventajas de la Multiprogramación l l l Proceso

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

Asignación de Procesos a Procesadores ¡ Ventajas de la Multiprogramación l l Los sistemas

Asignación de Procesos a Procesadores ¡ Ventajas de la Multiprogramación l l 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… 49

Asignación de Procesos a Procesadores ¡ Conclusión: La multiprogramación tiene ventajas l l Aplicaciones

Asignación de Procesos a Procesadores ¡ Conclusión: La multiprogramación tiene ventajas l l 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 50

Asignación de Procesos a Procesadores ¡ ¡ ¡ Hay muchas arquitecturas diferentes en las

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 51

Asignación de Procesos a Procesadores 1ª Abstracción de la Programación Concurrente Se considera que

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 52

Asignación de Procesos a Procesadores 2ª Abstracción de la Programación Concurrente Se ignoran las

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 53

Introducción a la Concurrencia ¡ ¡ ¡ ¿Qué es la concurrencia? ¿Dónde se usa

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

Pascal. FC ¡ ¡ Para estudiar el desarrollo de programas concurrentes vamos a usar

Pascal. FC ¡ ¡ Para estudiar el desarrollo de programas concurrentes vamos a usar Pascal. FC 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 Pascal. FC está incluido en Eclipse. Gavab http: //www. gavab. es/eclipse 55

Pascal. FC ¡ Para hacer un programa concurrente hay que hacer dos cosas l

Pascal. FC ¡ Para hacer un programa concurrente hay que hacer dos cosas l l 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) 56

Pascal. FC Programa Secuencial ¡ ¡ prog. pas program prog; process type pr 1(par:

Pascal. FC Programa Secuencial ¡ ¡ prog. pas program prog; process type pr 1(par: real); Se crea con las begin palabras reservadas. . . process type end; La sintaxis es igual a process type pr 2(par: real); la de un begin procedimiento en. . . Pascal end; Puede recibir var. . . parámetros, declarar begin variables locales…. . . end. En Pascal. FC lo llamaremos tipo de proceso 57

prog. pas Pascal. FC Creación de un proceso ¡ ¡ Hay que declarar una

prog. pas Pascal. FC 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 program prog; process type pr 1(par: real); begin. . . end; process type pr 2(par: real); begin. . . end; var v. Pr 1: pr 1; v. APr 2, v. BPr 2: pr 2; begin cobegin v. Pr 1(5. 0); v. APr 2(7. 8); v. BPr 2(7. 5); coend; end. 58

Pascal. FC ¡ cobegin coend l l Ejecuta de forma concurrente las llamadas a

Pascal. FC ¡ cobegin coend l l 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 59

Introducción a la Concurrencia ¡ ¡ ¡ ¿Qué es la concurrencia? ¿Dónde se usa

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

El orden de las instrucciones ¡ ¡ ¡ En un programa secuencial, todas las

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 61

El orden de las instrucciones program maxmin; procedure min(var min, n 1, n 2:

El orden de las instrucciones program maxmin; procedure min(var min, n 1, n 2: real); begin if n 1 < n 2 then min: =n 1 else min: =n 2; end; procedure max(var max, n 1, n 2: real); begin if n 1 > n 2 then max: =n 1 else max: =n 2; end; var n 1, n 2, nmax, nmin: real; begin n 1: =3; n 2: =5; (*I 0*) min(nmin, n 1, n 2); (*I 1*) max(nmax, n 1, n 2); (*I 2*) writeln(nmax, nmin) (*I 3*) end. Programación Secuencial Orden Total I 0 I 1 I 2 I 3 Diagrama de Precedencia La Relación de Precedencia (->) entre las instrucciones define una relación de orden I 0 -> I 1 -> I 2 -> I 3 62

El orden de las instrucciones Programación Secuencial Orden Total ¡ ¡ ¡ I 0

El orden de las instrucciones Programación Secuencial Orden Total ¡ ¡ ¡ I 0 I 1 I 2 I 3 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? 63

El orden de las instrucciones program maxmincon; process type min(var min, n 1, n

El orden de las instrucciones program maxmincon; process type min(var min, n 1, n 2: real); begin if n 1<n 2 then min: =n 1 else min: =n 2; end; process type max(var max, n 1, n 2: real); begin if n 1>n 2 then max: =n 1 else max: =n 2; end; var n 1, n 2, nmax, nmin: real; p. Max: max, p. Min: min; begin n 1: =3; n 2: =5; (*I 0*) cobegin p. Min(nmin, n 1, n 2); (*I 1*) p. Max(nmax, n 1, n 2); (*I 2*) coend; writeln(nmax, nmin) (*I 3*) end. Programación Concurrente Orden Parcial I 1 I 0 I 3 I 2 Diagrama de Precedencia I 0 ->I 1, I 0–>I 2, I 1 ->I 3, I 2 ->I 3 I 1 || I 2 64

El orden de las instrucciones Programación Concurrente I 1 I 0 I 3 I

El orden de las instrucciones Programación Concurrente I 1 I 0 I 3 I 2 Orden Parcial Diagrama de Precedencia ¡ No existe determinismo ¡ No se restringe el orden de ejecución de I 1 e I 2. Podrían ejecutarse en cualquier ordena o de forma concurrentemente I 1 || I 2 65

Introducción a la Concurrencia ¡ ¡ ¡ ¿Qué es la concurrencia? ¿Dónde se usa

Introducción a la Concurrencia ¡ ¡ ¡ ¿Qué es la concurrencia? ¿Dónde se usa la concurrencia? ¿Cómo se usa la concurrencia? ¡ ¡ ¡ Pascal. FC El orden de las instrucciones Instrucciones atómicas Intercalación Indeterminismo Conclusiones 66

Instrucciones atómicas Recordatorio 1ª Abstracción de la Programación Concurrente Se considera que cada proceso

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 67

Instrucciones atómicas La 1ª y 2ª abstracción nos permiten olvidarnos de detalles como el

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? ¡ 68

Instrucciones atómicas Una instrucción atómica es aquella cuya ejecución es indivisible ¡ O se

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 ¡ 69

Instrucciones atómicas ¡ ¡ Las instrucciones atómicas se usan mucho aplicaciones empresariales Ejemplo: Reserva

Instrucciones atómicas ¡ ¡ Las instrucciones atómicas se usan mucho aplicaciones empresariales Ejemplo: Reserva de vuelo con escala l l l 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 70

Instrucciones atómicas ¡ ¡ ¡ En programación concurrente, es muy importante conocer las instrucciones

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 Pascal. FC se ejecuta como varias sentencias atómicas, es posible que otros procesos interfieran con ella 71

Instrucciones atómicas Sentencia Pascal. FC Incrementar una variable en 1 x: =x+1 Corresponde a

Instrucciones atómicas Sentencia Pascal. FC Incrementar una variable en 1 x: =x+1 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 72

Introducción a la Concurrencia ¡ ¡ ¡ ¿Qué es la concurrencia? ¿Dónde se usa

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

Intercalación (Interleaving) ¡ ¡ ¡ La 1ª y 2ª abstracción nos permiten pensar en

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 74

Intercalación (Interleaving) 3ª Abstracción de la Programación Concurrente Se considera que las secuencias de

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 75

Intercalación (Interleaving) ¡ ¡ ¡ No hay que estudiar una única intercalación de instrucciones

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 76

Intercalación (Interleaving) ¡ Multiprogramación l ¡ Realmente las instrucciones se ejecutan de forma intercalada

Intercalación (Interleaving) ¡ Multiprogramación l ¡ Realmente las instrucciones se ejecutan de forma intercalada Multiproceso l l 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 77

Intercalación (Interleaving) ¡ ¡ Todas las abstracciones se pueden resumir en sólo una Esta

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) 78

Introducción a la Concurrencia ¡ ¡ ¡ ¿Qué es la concurrencia? ¿Dónde se usa

Introducción a la Concurrencia ¡ ¡ ¡ ¿Qué es la concurrencia? ¿Dónde se usa la concurrencia? ¿Cómo se usa la concurrencia? ¡ ¡ ¡ Pascal. FC El orden de las instrucciones Instrucciones atómicas Intercalación Indeterminismo Conclusiones 79

Indeterminismo ¡ ¡ ¡ Al ejecutar un programa concurrente, se ejecutarán las sentencias con

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 80

Indeterminismo program incdec; process type inc(var x: integer); begin x: =x+1; end; process type

Indeterminismo 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; p. Inc: inc; p. Dec: dec; begin x: =0; cobegin p. Inc(x); p. Dec(x); coend; writeln(x) end. BLP (06 -07) Instrucciones atómicas del tipo de proceso inc LOAD R, x ADD R, #1 STR R, x Instrucciones atómicas del tipo de proceso dec LOAD R 2, x SUB R 2, #1 STR R 2, x 81

Indeterminismo ¡ Una posible intercalación de instrucciones inc 1 2 LOAD R 2, x

Indeterminismo ¡ Una posible intercalación de instrucciones inc 1 2 LOAD R 2, x 0 SUB R 2, #1 ADD R, #1 5 6 x LOAD R, x 3 4 dec STR R 2, x STR R, x R R 2 0 0 0 -1 0 1 -1 -1 1 1 -1 LOAD R, x ADD R, #1 STR R, x dec LOAD R 2, x SUB R 2, #1 STR R 2, x Resultado Final: 1 82

Indeterminismo ¡ Otra posible intercalación de instrucciones inc 1 dec x LOAD R 2,

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

Indeterminismo ¡ Otra más… Como se deben considerar todas las posibles intercalaciones, también hay

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

Indeterminismo ¡ Se han encontrado tres intercalaciones posibles de las instrucciones atómicas de un

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 l l l En sólo 2 de ellas se obtiene un 0 En 9 intercalaciones se obtiene un 1 En 9 intercalaciones se obtiene un -1 85

Introducción a la Concurrencia ¡ ¿Qué es la concurrencia? ¡ ¿Dónde se usa la

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

Conclusiones ¡ Ventajas de la Concurrencia l Aumento de la eficiencia: Aprovechamiento de procesador

Conclusiones ¡ Ventajas de la Concurrencia l Aumento de la eficiencia: Aprovechamiento de procesador o procesadores l Hay tipos de programas que necesitan llevar a cabo varias tareas de forma concurrente y por tanto es obligatoria la concurrencia l 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, … 87

Conclusiones ¡ Apple Mac Pro. 8 cores Ventajas de la Concurrencia l La tendencia

Conclusiones ¡ Apple Mac Pro. 8 cores Ventajas de la Concurrencia l 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 l 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 l Esto implica que aplicaciones que actualmente están desarrolladas de forma secuencial, sin concurrencia, deberán actualizarse para aprovechar la potencia de calculo 88

Conclusiones ¡ Desventajas de la Concurrencia l Desarrollar programas concurrentes es más difícil que

Conclusiones ¡ Desventajas de la Concurrencia l 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 89

Conclusiones ¡ Indeterminismo l l Cuando se implementa un programa concurrente se necesita controlar

Conclusiones ¡ Indeterminismo l l 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 e. Mule, 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 90

Bibliografía Básica • Yela, A. ; Arroyo, F. ; Fernandez, L. Teoría y Práctica

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 91