Programación concurrente

Documentos relacionados
I.1 Motivación de la programación concurrente

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

M. C. Felipe Santiago Espinosa

Introducción a los sistemas de tiempo real

Tema 12: El sistema operativo y los procesos

Concurrencia. Concurrencia

PARADIGMA y LENGUAJES DE PROGRAMACIÓN

Concurrencia de Procesos

Introducción a los Sistemas Operativos

INFORMATICA III. Cap. I: Plataformas

Tema 6: Gestión de la Entrada/Salida

Paralelismo _Arquitectura de Computadoras IS603

Tema 2 Introducción a la Programación en C.

Objetivo: Conocer el esquema básico de un Microprocesador. Arquitectura secuencial

Perfil Profesional en formato de la SETEC

TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA

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

Biblioteca de recursos. Descargado desde

Fundamentos de programación. Organización de una computadora

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

INTRODUCCION PASCAL-FC

Sistemas Operativos. Curso 2016 Introducción

UNIDAD 2 ESPECIFICACIÓN FORMAL DE SISTEMAS CONCURRENTES

Introducción n a los Sistemas de Tiempo Real (RTS)

Acceso coordinado a recursos compartidos

Unidad 2: Taller de Cómputo. Estructura y Componentes de la Computadora UNIDAD DOS: INTRODUCCIÓN

LAS 14 AREAS TEMATICAS DE LA COMPUTACIÓN

Con estas consideraciones, Flynn clasifica los sistemas en cuatro categorías:

Taxonomía de las arquitecturas

SISTEMAS OPERATIVOS. Ing. Raúl Alberto Rojas Reátegui

FACULTAD DE INGENIERÍA

TEMA II: ALMACENAMIENTO DE LA INFORMACIÓN

Sistemas Operativos. Trabajo Práctico N ō 3

Hoja de respuestas. Examen tipo A

IFCD0111 Programación en Lenguajes Estructurados de Aplicaciones de Gestión

Introducción a los Sistemas Operativos

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

Diagrama de despliegue

Biblioteca de recursos. Descargado desde

Tema: Microprocesadores

Ingeniería Informática

EVOLUCIÓN DE LOS PROCESADORES

UNIVERSIDAD NACIONAL HERMILIO VALDIZAN DIRECCION DE EDUCACION A DISTANCIA Y VIRTUAL CENTRO DE ESTUDIOS INFORMATICOS HUANUCO PERU

Sincronización de procesos

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Evolución del software y su situación actual

Tema 1: Introducción a los Sistemas Operativos

Eventos e interrupciones

Un importante problema para sistemas de la nueva generación

SISTEMAS OPERATIVOS Introducción. Amilcar Meneses Viveros

Concurrencia y paralelismo

Granularidad y latencia

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Procesos concurrentes y problemas en la comunicación y la sincronización

Programación en Lenguajes Estructurados de Aplicaciones de Gestión. Certificados de profesionalidad

Metodologías de Desarrollo de Software

Arquitectura del PLC. Dpto. Electrónica, Automática e Informática Industrial)

INDICE Parte I. Administración, Información y Sistemas 1. Introducción al Sistema de Información Administrativa

Tema 7. Mejora del rendimiento: introducción a la segmentación y a las arquitecturas paralelas

Arquitectura de computadores I

Computación de Altas Prestaciones Sistemas computacionales

Guillermo Román Díez

Introducción a los sistemas operativos. Ing Esp Pedro Alberto Arias Quintero

Estructura de los sistemas de cómputo

Sistemas Operativos. Un sistema operativo es un conjunto de programas de computadora diseñados especialmente para cubrir los siguientes objetivos:

INGENIERÍA EN MECATRÓNICA

DES: Programa(s) Educativo(s): Tipo de materia: Clave de la materia: Semestre: Área en plan de estudios:

Análisis y Diseño de Sistemas Clase 1 Sistemas e Ingeniería de Software

Computación 1. Roles en la interconexión

6. Enumere tres ventajas de los ULT frente a los KLT.

Transcripción:

Programación concurrente Master de Computación I Conceptos y recursos para la programación concurrente: I.1 Motivación de la programación concurrente. J.M. Drake M. Aldea

Motivación de la programación concurrente La crisis del software. Programas secuenciales, concurrentes y de tiempo real. Programación concurrente. Programación de tiempo real. Entornos hardware para programación concurrente. Ejemplo de un problema concurrente. 2

LA CRISIS DEL SOFTWARE. Conjunto de tópicos relacionados con la problemática asociada al desarrollo de software: "Construir una aplicación software es una tarea mucho más compleja de lo que parece al iniciarla" Aspectos de esta problemática son: Resposiveness: No satisfacen las espectativas del usuario. Reliability: Presentan fallos y su depuración es muy difícil. Cost: El costo es difícil de evaluar y mas alto de lo esperado. Modificability: Son productos muy rígidos y difíciles de mantener. Timeless: Requieren para su ejecución mas tiempo del previsto. Transportability: Hay problemas para migrar entre plataforma. Efficiency: Sólo utilizan una parte de la capacidad de hardware. 3

CAUSAS DE LA CRISIS DELSOFTWARE. Causas profundas de la crisis del software son: La metodología en cascada que linealiza el proceso de desarrollo. La metodología de modularización estructurada hace que el software sea inflexible y difícil de mantener. Los programadores no tienen formación en ingeniería software. La inercia de las empresas e instituciones dificulta la introducción de innovaciones. La estructura secuencial de Von Newman no se adapta a los problemas que se abordan. 4

PROGRAMAS Y LÍNEAS DE FLUJO DE CONTROL. Un programa se compone de: Sentencias: Establecen las actividades (operaciones y verificaciones) que ejecuta el sistema. Línea de flujo de control (Thread): Establece el orden en que se ejecutan las sentencias. Según las características de la línea de flujo de control los programas se clasifican en: Secuenciales. Concurrentes (tipo especial de sistemas concurrentes: Tiempo real). 5

PROGRAMAS SECUENCIALES. Es el estilo de programación que corresponde al modelo conceptual de Von Newmann. Un programa secuencial tiene una línea simple de control de flujo. Las operaciones de un programa secuencial están ordenadas de acuerdo con un orden estricto. El comportamiento de un programa es solo función de las sentencias que lo componen y del orden en que se ejecutan. El tiempo que tarda en ejecutarse cada operación no influye en el resultado de un programa secuencial. La verificación de un programa secuencial es sencilla: Cada sentencia da la respuesta correcta. Las sentencias se ejecutan en el orden adecuado. 6

PROGRAMAS CONCURRENTES. Son programas que tienen múltiples líneas de flujo de control. Las sentencias de un programa concurrente se ejecutan de acuerdo con un orden no estricto. La secuencialización de un programa concurrente es entre hitos o puntos de sincronización. Un programa concurrente se suele concebir como un conjunto de procesos que colaboran y compiten entre sí. Para validar un programa concurrente: Las operaciones se pueden validar individualmente si las variables no son actualizadas concurrentemente. El resultado debe ser independiente de los tiempos de ejecución de las sentencias. El resultado debe ser independiente de la plataforma en que se ejecuta. 7

APLICACIONES DE LOS PROGRAMAS CONCURRENTES Aplicaciones clásicas: Programación de sistemas multicomputadores. Sistemas operativos. Control y monitorización de sistemas físicos. Aplicaciones actuales: Servicios WEB. Sistemas multimedia. Cálculo numérico. Procesamientos entrada/salida. Simulación de sistemas dinámicos. Interacción operador/máquina (GUIs) Tecnologías de componentes. Sistemas embebidos. 8

VENTAJAS DE LA PROGRAMACION CONCURRENTE. Proporciona el modelo más simple y natural de concebir muchas aplicaciones. Facilita el diseño orientado a objetos de las aplicaciones, ya que los objetos reales son concurrentes. Hace posible compartir recursos y subsistemas complejos. En sistemas monoprocesadores optimiza el uso de los recursos. Reduce tiempos de ejecución en plataformas multiprocesadoras. Facilita la realización de programas fiables replicando componentes y/o procesos. 9

CONCEPTO DE SISTEMA DE TIEMPO REAL. Un sistema de tiempo real es una combinación de uno o varios computadores, dispositivos de hardware de I/O y software de propósito especial, en la que: Hay una fuerte interacción con el entorno El entorno cambia con el tiempo El sistema controla o reacciona de forma simultánea a diferentes aspectos del entorno En las aplicaciones de tiempo real, el funcionamiento correcto no sólo depende de los resultados del cálculo, sino también del instante en el que se generan esos resultados Como resultado: Se imponen requisitos temporales sobre el software. El software es de naturaleza concurrente. 10

CONCEPTO DE SISTEMA DE TIEMPO REAL. Características esenciales de un sistema de tiempo real: El orden de ejecución de las operaciones depende de: Los eventos externos que recibe del entorno. Del tiempo que transcurre. El cumplimiento de plazos temporales en las respuestas es parte de la especificación funcional. De acuerdo con la severidad de los requerimientos temporales: Sistemas de tiempo real estricto (Hard real-time): El incumplimiento de un plazo es un fallo irrecuperable. Sistemas de tiempo real laxos: (Soft real-time): Los requerimientos temporales se cumplen en promedio. 12

SISTEMAS EMPOTRADOS. Un computador (y su software) se considera empotrado si: es un componente integral de un sistema mayor, se usa para controlar, monitorizar o procesar la información de ese sistema y usa dispositivos hardware especiales La mayoría de los sistemas de tiempo real son empotrados 13

EJEMPLO DE PROGRAMA DE TIEMPO REAL. Software embarcado de control de un coche. Tarea Periodo Duración % uso Medida de velocidad 200 ms 40 ms 20% Control presión carburante 400 ms 100 ms 25% Control Válvula Carburador 800 ms 400 ms 50% El conjunto de tareas hacen uso del 95% de la capacidad del procesador. No es posible combinar secuencialmente la tres tareas. 14

EJEMPLO: SOLUCIÓN SECUENCIAL. La solución requiere segmentar las tareas mas largas en secciones mas breves. La solución es difícil de mantener. 60 ms 160 ms 0 100 200 300 400 500 M_V[1] P_C[1] V_C_a[1] M_V[2] V_C_b[1] M_V[3] P_C[2] V_C (400 ms) 60 ms 120 ms 600 700 V_C_c[1] M_V[4] V_C_d[1] 800 Sleep(40ms) t (ms) 15

EJEMPLO: TAREA APERIÓDICA. La tarea C_S tiene la función de bloquear el cinturón de seguridad si el sensor de aceleración supera un umbral: Naturaleza: Plazo de respuesta: Aperiódica Uso de CPU: 20 ms Intervalo mínimo: 30 ms 800 ms Incorporar esta tarea a la estructura secuencial es muy difícil. La solución atender el evento en una rutina de interrupción. 16

EJEMPLO SOLUCIÓN CONCURRENTE. El programa se plantea como cuatro procesos concurrentes, que solo interaccionan entre sí por compartir el mismo recurso de procesamiento. Prioridad 200 ms 0 100 200 300 M_V[1] P_C[1] V_C[1] M_V[2] V_C[1] 30 Proceso M_V Tiempo ejec: 40 ms Acelerómetro 400 M_V[3] 20 Proceso P_C 400 ms Tiempo ejec: 100 ms 800 ms Proceso C_S Tiempo ejec:20 ms Plazo ejec: 30 ms Prioridad: 100 500 600 700 P_C[2] V_C[1] M_V[4] V_C[1] 10 Proceso V_C Tiempo ejec: 400 ms 800 CPU Libre 17

Ejemplo de programa concurrente program Control_coche; process P_MedidaVelocidad; (* Proceso de medida de la velocidad *) begin repeat M_V; sleep(160 ms); forever; end; process P_PresiónCarburante; (* Proceso de control de la presión de carburante *) begin repeat P_C; sleep(300 ms); forever; end; process P_ControlValvulaCarburador; (* Proc. de control de válvula del carburador *) begin repeat V_C; sleep(400 ms); forever; end; process P_ControlCinturan; (* Proceso de atención del control del cinturón *) begin repeat wait evento; C_S; forever; end; begin (* Programa principal *) cobegin P_MedidaVelocidad; P_PresionCarburante; P_ControlValvulaCarburador; P_ControlCinturón; coend; end. 18