Vous êtes sur la page 1sur 10

1

Sistemas en Tiempo Real. Diseo y Programacin

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.

Juan Antonio Fernndez Madrigal, 2004


Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

Sistemas en Tiempo Real. Diseo y Programacin

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.

Juan Antonio Fernndez Madrigal, 2004


Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

Sistemas en Tiempo Real. Diseo y Programacin

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

Juan Antonio Fernndez Madrigal, 2004


Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

Sistemas en Tiempo Real. Diseo y Programacin

-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.
Juan Antonio Fernndez Madrigal, 2004
Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

Sistemas en Tiempo Real. Diseo y Programacin

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.

Juan Antonio Fernndez Madrigal, 2004


Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

Sistemas en Tiempo Real. Diseo y Programacin

-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.
Juan Antonio Fernndez Madrigal, 2004
Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

Sistemas en Tiempo Real. Diseo y Programacin

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.

Juan Antonio Fernndez Madrigal, 2004


Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

Sistemas en Tiempo Real. Diseo y Programacin

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

Juan Antonio Fernndez Madrigal, 2004


Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

Sistemas en Tiempo Real. Diseo y Programacin

8.2. INTRODUCCIN A LAS METODOLOGAS DE DISEO

Una metodologa de diseo es una herramienta o conjunto de herramientas que permiten


disear un sistema, posiblemente a varios niveles de abstraccin, con el objetivo de
validar sus caractersticas, generar mecnicamente implementaciones, y en definitiva,
reducir el tiempo de desarrollo del sistema, en especial los errores que pueden cometerse
durante 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.
Juan Antonio Fernndez Madrigal, 2004
Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga

10

Sistemas en Tiempo Real. Diseo y Programacin

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

Juan Antonio Fernndez Madrigal, 2004


Dpto. Ingeniera de Sistemas y Automtica, Universidad de Mlaga