Programación concurrente

Programación concurrente Master de Computación I Conceptos y recursos para la programación concurrente: I.1 Motivación de la programación concurrent

1 downloads 59 Views 715KB Size

Recommend Stories


PROGRAMACION CONCURRENTE. II.1 Comunicación síncrona
PROGRAMACION CONCURRENTE II.1 Comunicación síncrona J.M. Drake Notas: 1 Concurrencia por intercambio de mensajes. Modelos de interacción. Transm

Programación concurrente y distribuida Paso de mensajes
Message Passing ´ concurrente y distribuida Programacion Paso de mensajes Camilo Rueda 1 1 Universidad Javeriana-Cali PUJ 2008 Message Passing a

PROGRAMACION CONCURRENTE Y DISTRIBUIDA. III.1 Concurrencia con Java: Thread Java
PROGRAMACION CONCURRENTE Y DISTRIBUIDA III.1 Concurrencia con Java: Thread Java J.M. Drake L. Barros Notas: 1 Concurrencia en Java. Java posibil

PROYECTO DE DESARROLLO CONCURRENTE REGIONAL PDCR TERMINOS DE REFERENCIA CONSULTORIA POR PRODUCTO
PROYECTO DE DESARROLLO CONCURRENTE REGIONAL PDCR TERMINOS DE REFERENCIA CONSULTORIA POR PRODUCTO DESARROLLO E IMPLANTACION DE SOFTWARE DEL NUEVO SIST

Programación Concurrente y de Tiempo Real Guión de prácticas 8: Monitores en Java (API. Natalia Partera Jaime Alumna colaboradora de la asignatura
Programaci´on Concurrente y de Tiempo Real Gui´on de pr´acticas 8: Monitores en Java (API est´andar) Natalia Partera Jaime Alumna colaboradora de la a

Story Transcript

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.

ProCon’12: I.1- Motivación de la programación concurrente

J. M.Drake, M. Aldea

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.

ProCon’12: I.1- Motivación de la programación concurrente

J. M.Drake, M. Aldea

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.

ProCon’12: I.1- Motivación de la programación concurrente

J. M.Drake, M. Aldea

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

ProCon’12: I.1- Motivación de la programación concurrente

J. M.Drake, M. Aldea

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.

ProCon’12: I.1- Motivación de la programación concurrente

J. M.Drake, M. Aldea

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.

ProCon’12: I.1- Motivación de la programación concurrente

J. M.Drake, M. Aldea

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.

ProCon’12: I.1- Motivación de la programación concurrente

J. M.Drake, M. Aldea

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.

ProCon’12: I.1- Motivación de la programación concurrente

J. M.Drake, M. Aldea

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.

ProCon’12: I.1- Motivación de la programación concurrente

J. M.Drake, M. Aldea

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.

ProCon’12: I.1- Motivación de la programación concurrente

J. M.Drake, M. Aldea

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

ProCon’12: I.1- Motivación de la programación concurrente

J. M.Drake, M. Aldea

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. ProCon’12: I.1- Motivación de la programación concurrente

J. M.Drake, M. Aldea

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

0 100 200 300 400

160 ms 500 V_C (400 ms)

60 ms 120 ms

600 700 800 t (ms)

ProCon’12: I.1- Motivación de la programación concurrente

J. M.Drake, M. Aldea

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_c[1] M_V[4] V_C_d[1] Sleep(40ms)

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: Aperiódica Plazo de respuesta: 30 ms Uso de CPU: 20 ms Intervalo mínimo: 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.

ProCon’12: I.1- Motivación de la programación concurrente

J. M.Drake, M. Aldea

16

EJEMPLO SOLUCIÓN CONCURRENTE. 0

El programa se plantea como cuatro procesos concurrentes, que solo interaccionan entre sí por compartir el mismo recurso de procesamiento. Prioridad 30

200 ms

400

Tiempo ejec: 40 ms

Tiempo ejec: 100 ms 800 ms

500 Proceso C_S Tiempo ejec:20 ms Plazo ejec: 30 ms Prioridad: 100

10

V_C[1] M_V[2] V_C[1]

Acelerómetro

400 ms

20

200 300

Proceso M_V

Proceso P_C

100

M_V[1] P_C[1]

Proceso V_C Tiempo ejec: 400 ms

ProCon’12: I.1- Motivación de la programación concurrente

M_V[3] P_C[2]

700

V_C[1] M_V[4] V_C[1]

800

CPU Libre

600

J. M.Drake, M. Aldea

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. ProCon’12: I.1- Motivación de la programación concurrente

J. M.Drake, M. Aldea

18

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.