Lenguajes de Programación

Documentos relacionados
Programación Concurrente Recopilación de teoría referente a la materia

PROGRAMACIÓN CONCURRENTE

06/06/2017. Hay varios niveles para expresar concurrencia: Nivel de Instrucción Nivel de Sentencia Nivel de Unidad Nivel de Programa

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

Concurrencia. Primitivas IPC con bloqueo

Lenguajes de Programación

Programación concurrente

Concurrencia. Programación Concurrente. Espera ocupada. Primitivas IPC con bloqueo

Granularidad y latencia

Lenguajes de Programación

Hilos. Módulo 4. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur

Programación Concurrente y distribuida

Capítulo 3. Procesos concurrentes 3.1. Conceptos de programación concurrente La computación concurrente es la simultaneidad en la ejecución de

Lenguajes de Programación

Procesos. Procesos. Sistemas Operativos Procesos KMC 2017

Procesos y Threads Procesos y Threads. Rendimiento Rendimiento (paralelismo) (paralelismo) Productividad Productividad

Concurrencia de Procesos

Paralelismo _Arquitectura de Computadoras IS603

Hilos. Módulo 4. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco. Hilos

Acceso coordinado a recursos compartidos

Procesos y Threads Procesos y Threads. Concurrencia Concurrencia Ventajas Ventajas. Rendimiento Rendimiento (paralelismo) (paralelismo)

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas

de Gran Canaria Centro de Tecnología Médica Programación Concurrente

Guillermo Román Díez

Arquitecturas cliente/servidor

Taller de Programación Paralela

SISTEMAS OPERATIVOS Manejo de procesos

Concurrencia y Paralelismo

Comunicación y sincronización

PARADIGMA y LENGUAJES DE PROGRAMACIÓN

Introducción a la programación: Contenido. Introducción

DE SISTEMAS CONCURRENTES

1- UNIVERSIDAD DE CIENCIAS EMPRESARIALES Y SOCIALES FACULTAD DE CIENCIAS EMPRESARIALES. Tecnicatura Universitaria en Programación de Sistemas

COLEGIO DE ESTUDIOS DE POSGRADO DE LA CIUDAD DE MÉXICO

TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA

Concurrencia. Programación Concurrente Procesos Comunicación entre Procesos (IPC) con espera ocupada.

UML Unifield Modeling Languaje

Sistemas Operativos. Curso 2014 Estructura de los sistemas operativos

Estructura de los sistemas de cómputo

Sistemas Operativos. Procesos

Introducción al Computo Distribuido

Programación Orientada a Objetos

Hilos. Hilos. Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos de Sistemas Operativos Hilos en Linux

Concurrencia Condiciones de Carrera. Guillermo Román Díez

Concurrencia Monitores. Guillermo Román Díez

INDICE 1. Introducción 2. Entrada / Salida: Principios y Programación 3. Procesos

TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA. Ingeniería en Informática Curso

Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica

Sistemas Paralelos y Distribuidos

Contenidos. Contenidos. Bibliografía. Paralelismo vs concurrencia. Qué es la concurrencia? Ingeniería en Informática Curso

Tema 6: Clases. Índice

El kernel forma parte del sistema operativo, para ser más claros es el núcleo, la parte más importante.

Computación 1. Roles en la interconexión

DURACIÓN Y UBICACIÓN TEMPORAL DENTRO DEL PLAN DE ESTUDIOS

La secuencia de referencias a páginas para el proceso B es:

ISO Tema 8,

Diseño de Algoritmos Paralelos Prof. Gilberto Díaz

Sistemas multiprogramados

SIMULACIÓN GRÁFICA DE EVENTOS PARALELOS EN TIEMPO REAL SINCRONIZADOS CON MENSAJES. Dr. Maximino Peña Guerrero Ing. José de Jesús Negrete Redondo

Hilos Secciones Stallings:

Tecnología de software para sistemas de tiempo real

Universisdad de Los Andes Facultad de Ingeniería Escuela de Sistemas

Sobre la programación concurrente

Simultaneidad + Sincronización

Convivencia Introducción

Informática III. Concurrencia

Lecturas: Ben-Ari, secciones 4.1, 4.2, 4.3, 4.6 Andrews, intro. cap. 4 y sección 4.1. Exclusión mutua con semáforos

Programación Concurrente

Concurrencia y paralelismo

Examen de Programación Concurrente - Clave: a Junio 2008 Departamento de Lenguajes, Sistemas Informáticos e Ingeniería del Software.

Ejecución serial: las tareas/instrucciones de un programa son ejecutadas de manera secuencial, una a la vez.

Universidad de Costa Rica

Multiprocesadores de Memoria Compartida

Tema 03: Programación estructurada

Compiladores: Ambientes para Ejecución. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón

Evolución del software y su situación actual

Programación de Multitareas utilizando Hilos

Semáforos. Lecturas: Ben-Ari, secciones 4.1, 4.2, 4.3, 4.6 Andrews, intro. cap. 4 y sección 4.1. Exclusión mutua con semáforos

Técnicas de Programac. Concurrente I PLANIFICACIONES Actualización: 2ºC/2018. Planificaciones Técnicas de Programac.

PROCEDIMIENTOS ALMACENADOS

7. Programación Concurrente

Cuestionario Unidad 4: Procesamiento paralelo 2012

Sistemas Operativos. Estructura de los sistemas operativos

INICIACIÓN A LA PROGRAMACIÓN 1ª parte

Introducción a los Sistemas de Tiempo Real Í d n i dice

Escalabilidad: El desempeño del software y hardware debe ser eficiente desde un grupo pequeño de procesadores a un grupo muy grande de procesadores.

Lecturas: Ben-Ari, secciones 4.1, 4.2, 4.3, 4.6 Andrews, intro. cap. 4 y sección 4.1

Lógica: Algoritmo: Archivo: Base de datos: Bit:

Resumen Tema 5: Proceso de transacciones

Diferentes Perspectivas de un Ordenador

Tema 3. Paso de mensajes. mensajes. Bibliografía. Sistemas de paso de mensajes (2) Sistemas de paso de mensajes. Ventajas del paso de.

Definición de clase: Una clase es un prototipo que define las variables y los métodos de todos los objetos con características comunes.

Definición de clase: Una clase es un prototipo que define las variables y los métodos de todos los objetos con características comunes.

Elementos Diagramas de Clases Clase:

Usando el Sistema Operativo

UNIVERSIDAD DE GUADALAJARA

Transcripción:

Lenguajes de Programación Concurrencia Ma. Laura Cobo Departamento de Ciencias e Ingeniería de la Computación 2018 Prof. Ma. Laura Cobo Página 1

Motivación Un programa se dice concurrente si puede tener mas de un contexto de ejecución activo. Motivaciones generales: Capturar la estructura lógica del problema Aprovechar los procesadores (para maximizar velocidad de computo) para hacer frente a dispositivos físicos separados En general la concurrencia caracteriza sistemas en los cuales dos o mas tareas están en ejecución al mismo tiempo (se intercalan en puntos de ejecución no predecibles) 2 Prof. Ma. Laura Cobo Página 2

Niveles de paralelismo Es inherente a cada nivel de los sistemas computacionales. Cuanto mas alto es el nivel de abstracción mas difícil se vuelve explotar esta característica. Están los procesadores y las capas de software que corren sobre ellos, la granularidad del paralelismo (tamaño y complejidad de las tareas) aumenta en cada nivel y se vuelva mas difícil determinar como un trabajo debe ser realizado (responsabilidad de cada tarea y coordinación) En general la concurrencia caracteriza sistemas en los cuales dos o mas tareas están en ejecución al mismo tiempo (se intercalan en puntos de ejecución no predecibles) 3 Prof. Ma. Laura Cobo Página 3

Niveles de abstracción El programador necesita entender concurrencia con diferentes niveles de detalles y utilizarla de maneras diferentes. Modo caja negra : es el mas abstracto, la concurrencia se incorpora al lenguaje a través de librerías. Modo intermedio: requiere el conocimiento de que ciertas tareas son mutuamente independientes. Se incorpora en el lenguaje a través de constructores dedicados y habilidades de sincronización. Modo experto: el programador puede necesitar una comprensión detallada de hardware y sistemas de run-time para implementar los mecanismos de sincronización 4 Prof. Ma. Laura Cobo Página 4

Procesos e hilos El uso de estos dos términos no es consistente. Los diferentes lenguajes y autores utilizan los términos con semánticas diferentes. Una tarea o proceso es una unidad que puede ser ejecutada en forma concurrente con otras unidades Características que diferencian una tarea de una unidad ordinaria: Una tarea puede ser comenzada en forma implícita Cuando una unidad comienza la ejecución de una tarea, no necesita suspenderse necesariamente Cuandosecompletalaejecucióndeunatareaelcontrolpuedeono retornar a la unidad que comenzó su ejecución 5 Prof. Ma. Laura Cobo Página 5

Concurrencia a nivel unidad: categorías Categorías de tareas: Heavyweight task: se ejecutan en su propio espacio de direcciones y tienen sus propias pilas de ejecución Lightweight task: corren todas en el mismo espacio de direcciones y utilizan la misma pila de ejecución Si una tarea no se comunica, ni afecta la ejecución de otras tareas (de ninguna manera) se dice disjunta. 6 Prof. Ma. Laura Cobo Página 6

Aspectos fundamentales de la programación concurrente Comunicaciones y sincronización Comunicación: Mecanismo que permite a una tarea o hilo conseguir información producida por otra/o. en los lenguajes imperativos esta generalmente basada en pasaje de mensajes o memoria compartida. Sincronización: Mecanismo que permite al programados controlar el orden relativo en el las operaciones tienen en lugar en diferentes tareas o hilos. 7 Prof. Ma. Laura Cobo Página 7

Comunicación y sincronización Son conceptos cruciales para la programación concurrente La comunicación se refiere a cualquier mecanismo que permite a un hilo-tarea obtener información producida por otroa). Los mecanismos de comunicación para programas imperativos están basados en: Memoria compartida: algunas de las variables son accesibles para varios hilos-tareas. Pasaje de mensajes: los hilos-tareas no tienen estado común. Para comunicarse uno debe realizar un pedido en forma explicita(send) para transmitir datos a otro 8 Prof. Ma. Laura Cobo Página 8

Comunicación y sincronización La sincronización se refiere a los mecanismos que permiten al programador controlar el orden relativo en el cual las tareashilos se ejecutan(implica alguna forma de pasaje de mensajes) Tipos de sincronización: Sincronización cooperativa: La tarea A debe esperar que la tarea B complete una actividad específica antes que la tarea A puede continuar si ejecución. Ejemplo el problema productor-consumidor Sincronización competitiva: Dosomas tareasdebenusarunrecursoquenopuedeserutilizadoen forma simultánea. Ejemplo: contador compartido La competición es usualmente provista por acceso mutuamente excluyente 9 Prof. Ma. Laura Cobo Página 9

Sincronización La sincronización en general no puede darse en forma implícita en un contexto de memoria compartida 10 Prof. Ma. Laura Cobo Página 10

Semáforos Un semáforoes una estructura de datos, que consiste de un contador y una cola para almacenar los descriptores de las tareas Observación Los semáforos fueron desarrollados por Dijkstra en 1965 Pueden utilizarse para implementar guardas sobre el código que accede a estructuras de datos compartidas. Solo utilizan dos operaciones wait and release. Se pueden utilizar tanto para sincronización cooperativa, como para sincronización competitiva 11 Prof. Ma. Laura Cobo Página 11

Evaluación de los semáforos El mal uso de los semáforos puede causar fallas en la sincronización cooperativa. Puede producirse un overflow en el buffer si se omite accidentalmente el wait del semáforo fullspots. De la misma manera pueden producirse fallas en la sincronización competitiva, conduciendo a deadlocks en caso de omitirse el release del semáforo. Los semáforos son una herramienta de sincronización elegante ideal para los programadores que no cometen errores (Brinch Hansen, 1973) 12 Prof. Ma. Laura Cobo Página 12

Monitores La idea es encapsular los datos compartidos y sus operaciones para restringir el acceso. Un monitor es un tipo de dato abstracto para datos compartidos Muchos lenguajes proveen la facilidad de definir monitores, algunos de ellos son: Concurrent Pascal, Modula, Mesa, Ada, Java, C# 13 Prof. Ma. Laura Cobo Página 13

Monitores: sincronización competitiva Los datos están ahora dentro del monitor en lugar de en las unidades clientes Todos los accesos a los datos dentro del monitor se realizan a través de sus operaciones La implementación del monitor asegura el acceso sincronizado, permitiendo solo una acceso a la vez. Las llamadas a las unidades del monitor son implícitamente encoladas si el monitor está ocupado en el momento de realizar la llamada. 14 Prof. Ma. Laura Cobo Página 14

Monitores: sincronización cooperativa La cooperación entre procesos sigue siendo un trabajo de programación. El programador debe seguir garantizando, en la implementación, que no se produzca overflow o underflow del buffer(en el ejemplo anterior) Los lenguajes proveen diferentes maneras de realizar sincronización cooperativa, todos terminan estando relacionadas con los semáforos. 15 Prof. Ma. Laura Cobo Página 15

Monitores: evaluación Brindan un mejor soporte para sincronización competitiva que los semáforos Los semáforos pueden utilizarse para implementar monitores Los monitores se pueden utilizar para implementar semáforos El soporte para sincronización cooperativa es muy similar al que se provee con semáforos, por lo que tiene los mismo inconvenientes. 16 Prof. Ma. Laura Cobo Página 16

Pasaje de mensajes El pasaje de mensajes es un modelo general para concurrencia Puede modelar tanto semáforos como monitores. No es solo para sincronización competitiva. Idea central: la comunicación entre tareas es como una persona esperando por una llamada importante. A veces no queda otra que sentarse y esperar. En el caso de las tareas, si la tarea A quiere enviarle un mensaje a la tarea B, y B está esperando el mensaje, el mensaje es enviado. Esta transmisión se conoce como rendezvous. Para que el rendezvous se produzca el emisor y el receptor del mensaje deben querer que la comunicación se produzca. 17 Prof. Ma. Laura Cobo Página 17

Pasaje de mensajes: rendezvous Un mecanismo que permite a la tarea indicar cuando esta disponible para aceptar mensajes. Las tareas necesitan algún modo de recordar quién está esperando por sus mensajes y una manera justa de elegir el próximo mensaje. El rendezvous se produce en la transmisión del mensaje; cuando elmensajedelatareaemisoraesaceptadoporlatareareceptora Ejemplificaremos el pasaje de mensajes con el lenguaje Ada. Ada 83 soporta pasaje de mensajes sincrónicos, Ada 95 agrega soporte para pasaje de mensaje asincrónico. 18 Prof. Ma. Laura Cobo Página 18

Aspectos fundamentales de la programación concurrente Lenguajes y librerías La concurrencia a nivel hilo puede proveerse en forma de: Lenguajes concurrente explicito Extensiones soportadas a nivel compilador Paquete librería ajenos a la definición del lenguaje 19 Prof. Ma. Laura Cobo Página 19

Lenguajes y Librerías La concurrencia puede brindarse al programador en forma de: Lenguaje concurrente: La concurrencia está considerada en el diseño del lenguaje. Extensiones a los lenguajes secuencias tradicionales soportados por el compilador: El lenguaje no se diseño con esa característica pero se agregó a un nivel que resulta tranparente para el programador. Librerías o paquetes fuera del lenguaje propiamente dicho: el lenguaje no considera esta característica en su diseño, ni en su implementación 20 Prof. Ma. Laura Cobo Página 20

Creación de hilos-tareas Es fácil imaginar a un programa concurrente como una collección de hilos-tareas creada por la implementación del lenguaje. Sin embargo esta aproximación es estática y como forma de concurrencia muy restrictiva Un lenguaje de programación concurrente permite al programador crear hilos-tareas en tiempo de ejecución. La sintaxis y semántica varia considerablemente de lenguaje en lenguaje. 21 Prof. Ma. Laura Cobo Página 21

Creación de hilos-tareas Las opciones más comunes son: Co-begin: tiene el comportamiento del begin-end pero para indicar que lo ubicado en ese bloque puede ejecutarse concurrente mente (ejparbegin parend) Ciclos paralelos: las iteraciones de estos ciclos pueden darse en forma concurrentes Launch-at-elaboration: el código del hilo puede ser declarado con una sintaxis que semeja la declaración de una unidad sin parámetros. Cuando se elabora la declaración se crea el hilo para ejecutar el código 22 Prof. Ma. Laura Cobo Página 22

Creación de hilos-tareas Las opciones más comunes son: fork: Esta aproximación es mas general: hace la creación en forma explicita a través de una sentencia ejecutable. Recepción implícita Respuesta temprana 23 Prof. Ma. Laura Cobo Página 23

Concurrencia a nivel unidad: diseño Aspectos de diseño Sincronización competitiva y cooperativa Cómo controlar la planificación de tareas Comoycuandocomenzarlastareasyterminarsuejecución Comoycuandosoncreadaslastareas Tres de las soluciones alternativas a los problemas de diseño para concurrencia: Semáforos Monitoresy Pasaje de mensajes 24 Prof. Ma. Laura Cobo Página 24

Concurrencia a nivel unidad: propiedades Liveness o vivacidad significa que si un evento (terminación del programa en forma completa) se supone que suceda, eventualmente ocurrirá En programación secuencial significa que eventualmente la unidad se completa. En programación concurrente, las tareas fácilmente pierden la propiedad de vivacidad. Si todas las tareas en un ambiente concurrente pierden su vivacidad, el sistema se encuentra en deadlock 25 Prof. Ma. Laura Cobo Página 25