View
215
Download
0
Category
Preview:
DESCRIPTION
TEMA VIII - Diseño y Programación
Citation preview
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
Recommended