1 / 91

Tema 06: Introducción a la Programación Concurrente

Tema 06: Introducción a la Programación Concurrente. UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN. E S P G. MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN. Prof: Alberto E. Cohaila Barrios.

deo
Download Presentation

Tema 06: Introducción a la Programación Concurrente

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tema 06:Introducción a la Programación Concurrente UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN E S P G MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN Prof: Alberto E. Cohaila Barrios acohailab@unjbg.edu.pe, acohailab@hotmail.com, acohailab@speedy.com.pe

  2. 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

  3. ¿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

  4. ¿Qué es la concurrencia? Paralelismo Solapamiento • Los sucesos se producen en un mismointervalo de tiempo (diferentes recursos) • Los sucesos se producen enintervalos de tiempo superpuestos Tiempo Tiempo Simultaneidad • Los sucesos se producen en el mismoinstante de tiempo Tiempo

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

  6. 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

  7. 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

  8. 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

  9. 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

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

  11. 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

  12. Programa Secuencial. Proceso En este módulo nos centramos en los Programas Internamente

  13. 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

  14. Procesos Concurrentes. Programa y Sistema Concurrente P1 P2 Tiempo • 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

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

  16. 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

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

  18. 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

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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

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

  27. 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

  28. ¿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

  29. 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

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

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

  32. 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 Core Core Bus Memoria Entrada/Salida

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

  34. 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

  35. Arquitecturas Físicas

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

  37. 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

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

  39. Asignación de Procesos a Procesadores Proc1 Proc2 Proc3 Procesador3 Procesador1 Procesador2 Bus Memoria Común Entrada/Salida • Multiproceso • Cada proceso se ejecuta en su propio procesador en un sistema de memoria compartida

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

  41. Asignación de Procesos a Procesadores Proc1 Proc2 t Ejecución Secuencial Proc1 Proc2 t Paralelismo Real • 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

  42. Asignación de Procesos a Procesadores Proc1 Proc2 Proc3 Procesador Bus Memoria Entrada/Salida • 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)

  43. Asignación de Procesos a Procesadores Proc1 Proc2 t Ejecución Secuencial Proc1 Proc2 t Paralelismo Simulado • 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

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

  45. Asignación de Procesos a Procesadores ¿Para qué sirve entonces la multiprogramación? • 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

  46. 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

  47. 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

  48. Asignación de Procesos a Procesadores Proceso Bloqueado Proc1 Proc2 Ejecución Secuencial Proc1 Proc2 Paralelismo Simulado • 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

  49. 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…

  50. 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

More Related