Introducción a la Programación de Sistemas en Tiempo Real

download Introducción a la Programación de Sistemas en Tiempo Real

of 10

description

TEMA VIII - Diseño y Programación

Transcript of Introducción a la Programación de Sistemas en Tiempo Real

  • TEMA VIII - Diseo y Programacin

    8.1. Introduccin a la Programacin de Sistemas en Tiempo Real

    Lenguajes de Programacin para Sistemas en Tiempo Real. Ejemplos de lenguajes.Concurrencia. Control de Excepciones.

    8.2. Introduccin a las Metodologas de Diseo

    Definicin. Necesidad de Metodologas. Ejemplos de Metodologas.

    1Sistemas en Tiempo Real. Diseo y Programacin

    Juan Antonio Fernndez Madrigal, 2004Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

  • 8.1. INTRODUCCIN A LA PROGRAMACIN DE SISTEMAS EN TIEMPO REAL

    -Lenguajes de Programacin para Sistemas en Tiempo Real

    -Los lenguajes de propsito general no suelen tener las caractersticas necesarias para la programacin de tiempo real:

    -Estructuras que sean deterministas en el tiempo-Concurrencia-Control de Tiempo-Planificacin de Tareas para Tiempo Real-Comunicacin con Dispositivos Hardware-Tolerancia a Fallos y Control de Situaciones Excepcionales en general

    -Existen numerosos lenguajes dedicados especficamente a la programacin de Tiempo Real (ADA, Esterel, RT-Euclid, etc.).

    -Se pueden conseguir caractersticas de tiempo real a travs de libreras de (o aadidas a) el sistema operativo, como el caso del lenguaje C y POSIX.4.

    2Sistemas en Tiempo Real. Diseo y Programacin

    Juan Antonio Fernndez Madrigal, 2004Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

  • -Ejemplos de Lenguajes de Programacin para Tiempo Real

    A) Un lenguaje predecible en el tiempo: Real-Time Euclid.

    -Evita construcciones no predecibles en el tiempo: bucles sin cota superior, bloqueos sin cota superior de tiempo (timeouts, esperas, etc.), recursividad, estructuras de datos dinmicas, memoria heap, garbage collection, excepciones.-La multitarea tambin puede dar problemas: sincronizacin/comunicacin no determinista (semforos sin timeouts, ...).

    B) Un lenguaje adaptable para Tiempo Real: ADA.

    -El lenguaje es de propsito general, pero pueden activarse profiles que restringen las caractersticas que pueden usarse, dejndolo predecible y adecuado para tiempo real.

    C) Un lenguaje reactivo: Esterel.

    -Los lenguajes reactivos programan sus acciones en respuesta a eventos externos, y no como secuencia de operaciones. Son apropiados para su compilacin a mquinas de estados.

    D) Lenguajes clsicos: C, C++ (+POSIX), Ensambladores, ...

    3Sistemas en Tiempo Real. Diseo y Programacin

    Juan Antonio Fernndez Madrigal, 2004Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

  • -Implementacin de Concurrencia

    -Tres mecanismos bsicos para implementar la concurrencia en la programacin de tiempo real:

    A) Ejecutivo Cclico (Cyclic Executive)

    -El programa consta de un slo bucle que se repite con una frecuencia dada (quizs guiado por un temporizador). En cada pasada, se realiza el proceso correspondiente a las tareas que vayan con esa frecuencia. Cada dos pasadas, las tareas de frecuencia doble. As, sucesivamente.

    -Requiere que todas las tareas sean peridicas de frecuencias armnicas (mltiplos).

    -Difcilmente escalable y modificable.

    -Vlido en sistemas pequeos y simples con restricciones temporales adecuadas.

    B) Guiado por Interrupciones

    -El programa consiste en una serie de manejadores de interrupcin lanzados por eventos externos.

    -Se simula slo pseudoconcurrencia, debido a la falta de mecanismos de comunicacin y sincronizacin entre tareas (los manejadores de interrupcin estn obligados a consumir poco tiempo de proceso)

    -Vlido para aplicaciones pequeas principalmente guiadas por eventos asncronos.

    4Sistemas en Tiempo Real. Diseo y Programacin

    Juan Antonio Fernndez Madrigal, 2004Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

  • C) Concurrencia Soportada por el lenguaje de programacin, el S.O., y/o la CPU

    -El sistema soporta la gestin de mltiples tareas concurrentes.

    -El mejor sistema para la mayor parte de proyectos grandes y complejos.

    -Requiere utilizacin de mecanismos de sincronizacin y comunicacin entre tareas.

    -Paralelismo real si se dispone de hardware multiprocesador.

    5Sistemas en Tiempo Real. Diseo y Programacin

    Juan Antonio Fernndez Madrigal, 2004Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

  • -Control de Excepciones

    -Un programa de tiempo real debe reaccionar adecuadamente ante eventos imprevistos (excepciones), puesto que el mundo real no es completamente predecible.

    -Formas de detectar excepciones en lenguajes de programacin:

    A) Por Valor de Retorno:-Cada rutina puede devolver un valor de error a quien la llame, si detecta una excepcin.-Tpico de lenguajes antiguos (C, Pascal).-Es sencillo de usar, pero complica el cdigo y es propenso a olvido.

    B) Por Bifurcacin Forzada:-Al llamar a una rutina, sta manipula la direccin de retorno para retornar a un lugar o a otro dependiendo de si hay excepcin o no.-Tpico de lenguajes ensambladores.-Complica la comprensin del programa, y difcil de usar y modificar.

    C) Salto Global:-Se establece en una variable global la direccin a donde saltar si hay error. Cuando alguien detecta el error, salta ah limpiando previamente la pila de llamadas.-Lenguajes antiguos (C, RTL/2)-Complica la comprensin del programa y es difcil de modificar. Slo sirve para errores no recuperables.

    6Sistemas en Tiempo Real. Diseo y Programacin

    Juan Antonio Fernndez Madrigal, 2004Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

  • D) Variables de Procedimiento:-Se establece en una variable global la direccin de una rutina a la que se puede saltar cuando haya un error. La rutina trata el error y retorna a donde se la llam.-Lenguajes antiguos (C, Pascal, RTL/2)-Complica la comprensin del programa y slo sirve para errores recuperables. Se puede mezclar con Salto Global.

    E) Excepciones Provistas por el Lenguaje:-El lenguaje provee un objeto o tipo de datos Excepcin, y mecanismos para generarlas (sentencias de generacin) y tratarlas (manejadores de excepciones). -Lenguajes modernos, no necesariamente orientados a objetos (C++, JAVA, CHILL)-Es el mtodo ms adoptado en la actualidad, facilita la lectura del cdigo y las modificaciones. Sin embargo, en muchos lenguajes es opcional (C++) y sobrecarga la ejecucin normal del programa cuando no hay excepciones.

    7Sistemas en Tiempo Real. Diseo y Programacin

    Juan Antonio Fernndez Madrigal, 2004Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

  • -Dominio de un Manejador de Excepciones:

    -Bloque: El manejador de excepciones es un trozo de cdigo asociado a las excepciones que se puedan producir en un bloque (begin...end; {...}; etc.)-Sentencia: Se puede escribir un manejador para cada sentencia del cdigo (CHILL).

    -Propagacin de Excepciones:

    -Esttica: Si no existe manejador asociado al bloque o sentencia que produce la excepcin, el programa es abortado.-Dinmica: El programa no es abortado, sino que la excepcin se propaga a quien llam a ese

    bloque. Si la propagacin lleva la excepcin hasta el programa principal, y no hay manejador, el programa es abortado.

    -Modelos de Control de Flujo de Excepciones:

    -Terminacin: Una vez manejada la excepcin, el bloque o sentencia que la produjo no se vuelve a ejecutar, el control pasa a quien llam a ese bloque (modelo ms comn).

    -Reanudacin: Una vez manejada la excepcin, el bloque o sentencia que la produjo vuelve a ejecutarse, bien en la misma sentencia que la produjo (p.ej.: ensamblador del x86), bien en la siguiente.

    8Sistemas en Tiempo Real. Diseo y Programacin

    Juan Antonio Fernndez Madrigal, 2004Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

  • 8.2. INTRODUCCIN A LAS METODOLOGAS DE DISEO

    Una metodologa de diseo es una herramienta o conjunto de herramientas que permitendisear un sistema, posiblemente a varios niveles de abstraccin, con el objetivo devalidar sus caractersticas, generar mecnicamente implementaciones, y en definitiva,reducir el tiempo de desarrollo del sistema, en especial los errores que pueden cometersedurante el mismo.

    -Necesidad de Metodologas de Diseo para Sistemas en Tiempo Real

    -Los sistemas en tiempo real suelen ser complejos y tener requisitos muy fuertes (de tiempo real, de consumo de recursos, etc.).

    -Los sistemas en tiempo real pueden usarse en aplicaciones crticas, donde est en juego la vida o integridad de personas, o bien estructuras sociales importantes (econmicas, de salud, etc.).

    -En la mayora de sistemas en tiempo real grandes o crticos no basta con hacer una implementacin directamente: es necesario poder verificar si un diseo determinado cumplir los requisitos, as como

    sus necesidades de recursos. Tambin es recomendable, como en cualquier proyecto grande, disponer de mecanismos de generacin automtica o semiautomtica de cdigo, para reducir costes.

    9Sistemas en Tiempo Real. Diseo y Programacin

    Juan Antonio Fernndez Madrigal, 2004Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

  • -Ejemplos de Metodologas de Diseo para Sistemas en Tiempo Real

    -Para S.T.R. no distribuidos. -Statecharts (incluidas en UML)-Redes de Petri con Tiempo-Autmatas con Tiempo-SDL

    -Para S.T.R. distribuidos.-UML-RT-HRT-HOOD

    -ltimamente se est trabajando mucho en metodologas basadas en u orientadas a objetos.

    -Se hace mucha investigacin en la validacin de los requisitos temporales (si existen planificaciones de procesos que respeten los tiempos, p.ej.), y sobre todo en sistemas en tiempo real duro.

    -Se hace algo menos investigacin en la generacin de implementaciones.

    10Sistemas en Tiempo Real. Diseo y Programacin

    Juan Antonio Fernndez Madrigal, 2004Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga