Presentación

 

Juan Antonio de la Puente, Alejandro Alonso

Depto. de Ingeniería de Sistemas Telemáticos, ETSI Telecomunicación, Universidad Politécnica de Madrid


jpuente@dit.upm.es

aalonso@dit.upm.es

 

Hay un tipo de sistemas informáticos cuya función no consiste en mantener grandes bases de datos, realizar cálculos complicados ni proporcionar información a numerosos puestos de trabajo. Con frecuencia ignoramos su existencia, aunque están omnipresentes en nuestra vida cotidiana. Ayudan a volar a los aviones, a rodar a los trenes y controlan el motor o los frenos de nuestro automóvil. También los podemos encontrar en el televisor, la lavadora o el horno de microondas de nuestras casas, e incluso en algunas aspiradoras de polvo o en máquinas de afeitar eléctricas. Forman parte esencial de los teléfonos móviles y, en mayor escala, sirven para gestionar miles de llamadas telefónicas en las centrales digitales. Son un elemento imprescindible para garantizar el suministro de energía eléctrica, el tráfico aéreo y la circulación de trenes, y para asegurar la calidad y la seguridad de incontables procesos industriales.

 

Todos estos sistemas informáticos tienen algo en común: están íntimamente ligados a otros sistemas, con los que se relacionan continuamente, intercambiando datos y señales de muy diversos tipos, y realizando funciones de control en sentido amplio sobre los mismos. De hecho se puede hablar, en la mayoría de los casos, de un único sistema con dos subsistemas: sistema controlado o entorno, y sistema de control. El sistema controlado - teléfono, automóvil, red eléctrica, etc. - tiene una dinámica propia que, en general, sólo se puede modificar de forma limitada, actuando sobre el sistema por medio de unos dispositivos denominados actuadores. El sistema de control, por el contrario, se suele realizar mediante un computador cuya programación es mucho más flexible. Por tanto, es éste el que debe adaptar su funcionamiento al del sistema controlado, del que recibe información a través de un conjunto de sensores, actuando sobre el mismo de forma que el comportamiento global del sistema tenga unas propiedades determinadas, que constituyen su especificación.

 

En la mayoría de los casos es necesario que las acciones de control se efectúen dentro de unos intervalos de tiempo bien definidos, con objeto de que el estado del sistema controlado, que tiene su dinámica propia, no evolucione hacia valores incorrectos o indeseables. No basta, pues, que el funcionamiento del sistema de control sea correcto desde un punto de vista lógico, es decir, que el cálculo de las salidas del sistema a partir de sus entradas y de su estado interno sea correcto, sino que además debe ser correcto desde un punto de vista temporal. De nada sirve realizar la acción si se hace demasiado tarde o demasiado pronto. Por tanto, el tiempo en que se ejecutan las acciones del sistema es relevante semánticamente. Esta característica difiere totalmente de lo que es habitual en otros tipos de sistemas informáticos y justifica la denominación de sistemas de tiempo real que suelen recibir estos sistemas. Podemos resumir todas estas consideraciones en la siguiente definición:

 

"Un sistema de tiempo real es un sistema informático que interacciona repetidamente con su entorno, sobre el que realiza acciones de control que se producen dentro de intervalos de tiempo bien definidos".

 

El hecho de que las acciones del sistema se deban efectuar dentro de intervalos de tiempo determinados hace que el diseño y realización de sistemas de tiempo real revista una dificultad especial. Es importante resaltar que no se trata simplemente de que el sistema sea rápido, aunque esto desde luego ayuda a cumplir los requisitos de tiempo, sino de que sea determinista, es decir que su comportamiento temporal sea el adecuado en cualquier circunstancia, incluso cuando el sistema está sobrecargado. Generalmente las propiedades temporales se expresan mediante dos tipos de requisitos que se aplican a cada una de las actividades del sistema:

 

1. Un esquema de activación, que indica cuándo se debe ejecutar cada actividad. La activación puede ser periódica o aperiódica. En el primer caso, la actividad se ejecuta regularmente, con un período bien definido. En el segundo caso, se ejecuta de forma irregular, en respuesta a un suceso del entorno o del propio sistema de tiempo real. La activación aperiódica se caracteriza mediante la exigencia de una separación mínima entre dos sucesos consecutivos, mediante un número máximo de sucesos en un intervalo de tiempo determinado, o mediante una distribución estadística del suceso de activación. En el primer caso se suele hablar de activación esporádica.

 

2. Un plazo de ejecución de la actividad, relativo al instante de activación, que marca el límite de tiempo para la terminación de la actividad cada vez que se ejecuta.

 

Estos requisitos se pueden interpretar de varias maneras. En algunos sistemas, llamados críticos (hard real-time systems), es inadmisible que determinadas acciones (no necesariamente todas) terminen fuera de plazo ni una sola vez. En otros sistemas, denominados acríticos (soft real-time systems), se puede admitir que se violen algunos plazos de vez en cuando sin más consecuencia que un empeoramiento en la calidad del funcionamiento del sistema. Obviamente, los primeros son considerablemente más difíciles de diseñar y realizar que los segundos.

 

Los problemas que plantea la construcción de sistemas de tiempo real se ven acrecentados por otras características de los mismos que, aunque comunes a otros tipos de aplicaciones informáticas, revisten especial complejidad cuando se mezclan con las restricciones temporales. Entre estas características adicionales podemos citar las siguientes:

 

Concurrencia: las actividades del entorno físico se ejecutan en paralelo. El sistema de tiempo real tiene que responder a los sucesos externos también mediante actividades concurrentes.

 

Fiabilidad y seguridad: muchos sistemas de tiempo real, como los que controlan el vuelo de los aviones, el frenado de los automóviles o la circulación de los trenes, tienen requisitos de seguridad muy estrictos. En otros casos, menos críticos en cuanto a la seguridad, son razones de tipo económico las que exigen un grado de fiabilidad elevado. Por ejemplo, en los sistemas empotrados en electrodomésticos, el coste de reemplazar una serie de productos por errores de software es normalmente prohibitivo. El uso de métodos y herramientas que aseguren una fiabilidad adecuada en el software y el hardware, complementados con técnicas de detección y recuperación de fallos, es obligatorio en la mayoría de los casos.

 

Tamaño y complejidad: El abaratamiento del hardware fomenta, como en otros campos de aplicación, la realización de sistemas con más funcionalidad y mejores interfaces. Ello se traduce en un mayor tamaño y complejidad incluso en sistemas que se solían realizar con escasos medios. Hoy en día es frecuente encontrar sistemas empotrados en electrodomésticos como televisores o teléfonos móviles con varios cientos de miles de líneas de código. Otros sistemas más sofisticados, como los que se encuentran en aviones, trenes o centrales telefónicas, alcanzan con frecuencia varios millones de líneas de código.

 

La mayoría de los métodos y lenguajes utilizados para otros tipos de aplicaciones no tienen en cuenta los requisitos temporales. Por ello su utilización en sistemas de tiempo real resulta inadecuada en la mayoría de los casos, ya que no permite asegurar que se satisfacen las propiedades temporales del sistema. Por ello ha sido necesario desarrollar métodos y herramientas nuevos, y adaptar algunos de los existentes. Las necesidades son distintas si se consideran distintos niveles de abstracción:

 

Especificación: en este nivel de abstracción lo importante es disponer de lenguajes adecuados para describir la funcionalidad y el comportamiento temporal deseado para el sistema. Algunos métodos de especificación, como SA/RT [1] utilizan notaciones informales, o una mezcla de notaciones formales e informales, como ocurre con Statemate [2]. Los métodos formales basados en lógica temporal [3], redes de Petri temporizadas [4], álgebras de procesos [5] o lenguajes síncronos [6] tienen grandes ventajas, pero su utilización en sistemas de gran tamaño todavía presenta muchos problemas.

 

Diseño: en este nivel se requieren notaciones con las construcciones necesarias para poder describir adecuadamente aspectos de un sistema de tiempo real, como los distintos ti-pos de tareas que lo forman, los recursos compartidos del sis-tema, los requisitos temporales de los componentes, etc. La tendencia actual es emplear métodos de diseño orientados a objetos. Entre los más relevantes se encuentran OCTOPUS [7], HRT-HOOD [8] y ROOM [9]. El reto prin-cipal de estos métodos consiste en introducir las técnicas de orientación al objeto de forma que se eviten algunos de los inconvenientes para sistemas de tiempo real, como la anomalía de la herencia, el carácter dinámico de algunas operaciones y la especificación de requisitos temporales, entre otras.

 

Realización: en relación con este nivel de abstracción, durante los últimos años se han aprobado dos normas internacionales, que deberían tener un impacto importante en los métodos de realización actuales. Estas normas definen el lenguaje de programación Ada [10] y las interfaces de sistema operativo POSIX [11] [12] [13]. Las dos se caracterizan porque definen una serie de servicios especialmente concebidos para la realización de sistemas de tiempo real, que aunque permiten construir sistemas según diferentes modelos, están orientadas al desarrollo de sistemas basados en prioridades estáticas. En concreto, definen cuestiones como la planificación de tareas basada en prioridades y con expulsión, comunicación entre tareas con el protocolo del techo de prioridad, funciones de temporización adecuadas, mecanismos para adaptar el tamaño del núcleo de ejecución a las necesidades del sistema etc. Además, en la mayoría de los casos permiten transportar el código fuente sin modificaciones entre plataformas de ejecución que sean conformes a las normas.

 

La planificación de los recursos del sistema es uno de los problemas centrales en la construcción de los sistemas de tiempo real. Es tal su importancia en los sistemas actuales, que la selección de una política de planificación determina en gran medida la arquitectura de software y la realización del sistema. La planificación síncrona [14] [15] ha sido la más empleada tradicionalmente. Se caracteriza porque la ejecución de las tareas se activa de forma sincronizada con un reloj. El ejecutivo cíclico es el método más empleado, y consiste en un procedimiento que activa cíclicamente un conjunto de tareas según un orden prefijado en un plan de ejecución. El carácter determinista de este método es su mayor ventaja. La dificultad de realizar y mantener el plan de ejecución es su mayor inconveniente.

 

La planificación basada en prioridades [16] [17] [18] [19] constituye una alternativa que en los últimos años ha alcanzado la madurez necesaria para su utilización en aplicaciones industriales. Este método se basa en asignar estáticamente prioridades a las tareas, y en un planificador con expulsión, que se encarga de ejecutar en todo momento la tarea más prioritaria. Existen métodos que, dadas las características del sistema, determinan los tiempos más desfavorables de ejecución de las tareas y, por tanto, permiten garantizar el cumplimiento de los plazos de respuesta de las tareas. La mayor flexibilidad de este método y la inclusión en normas internacionales de mecanismos orientados a su construcción, facilitan su implantación industrial.

 

Contenido de este monográfico

 

Los artículos que se han incluido en este número monográfico pretenden profundizar en algunas de las cuestiones expuestas y dar una panorámica del estado de la técnica. Dada la complejidad del tema y el amplio número de problemas a resolver, no es posible en un sólo número tratarlos todos. Los artículos seleccionados se han agrupado según los siguientes objetivos: introducir la problemática de los sistemas de tiempo real y técnicas actuales para realizarlos e identificar algunos temas avanzados, de interés para su futura implantación industrial. A continuación se presentan los artículos, según estos criterios.

 

Introducción a los sistemas de tiempo real

 

El objetivo de este primer grupo de artículos es introducir los sistemas de tiempo real y algunas técnicas actuales para su realización. La mayoría los trabajos tratan el problema de la planificación de recursos en sistemas de tiempo real y los métodos asociados para el cálculo de los tiempos de respuesta más desfavorables. El primer artículo de este grupo está escrito por G. Bernat, A. Llamosí y R. Puigjaner. Presenta las principales formas de estructurar sistemas de tiempo real e introduce los métodos básicos de planificación de recursos en sistemas de tiempo real. Este trabajo constituye una introducción muy adecuada a estos sistemas.

El artículo firmado por M. González y D. Locke introduce la familia de normas POSIX y, en particular, las relativas a los sistemas de tiempo real. A continuación, presentan el perfil de sistema de tiempo real mínimo de forma muy didáctica. Este perfil contiene la funcionalidad necesaria para realizar sistemas relativamente pequeños. Un sistema operativo mínimo que contemplara esta funcionalidad puede tener un tamaño menor que el que cabría esperar. A. García-Fornés, A. Terrasa y V. Botti hacen una excelente revisión de las técnicas de planificación de tareas aperiódicas. Una de las razones que dificultó la implantación del método de planificación con prioridades estáticas en la industria fue la dificultad de tratar adecuadamente este tipo de tareas. Como muestra este trabajo, actualmente se dispone de métodos que permiten planificar las tareas aperiódicas de forma que se puedan predecir sus tiempos de respuesta y se integren correctamente con otros tipos de tareas. La creciente complejidad de los sistemas de tiempo real implica que en un alto porcentaje de ellos se deba realizar en una plataforma distribuida. El artículo firmado por J.J Gutiérrez y M. González introduce la problemática de los sistemas distribuidos y presenta en detalle una técnica basada en el método de planificación con prioridades estáticas para su realización.

 

Temas avanzados

 

Los sistemas multimedia constituyen un dominio de aplicación de creciente interés, en el que algunas de sus aplicaciones tienen requisitos temporales. Por ejemplo, en un sistema de vídeo bajo demanda, las imágenes y el sonido se tienen que sincronizar y deben llegar al usuario con un flujo constante, para asegurar la proyección de la película en cuestión con la suficiente calidad. Para presentar este interesante campo de aplicación hemos incluido el artículo presentado por G. Iniesta y O. Coltell, donde nos presentan los primeros pasos para disponer de un método que permita el análisis de estas aplicaciones. El desarrollo de sistemas de tiempo real que toleren fallos, capaces de continuar dando un servicio adecuado aún en presencia de averías o errores, constituye uno de los retos más importantes para la comunidad investigadora. P. Mejía trata este difícil tema y presenta una serie de métodos para integrar técnicas de tolerancia de fallos con los sistemas basados en prioridades estáticas.

 

Otros trabajos

 

El comité de selección aceptó algunos artículos más, que no se han podido incluir en este número por problemas de espacio. Estos artículos se publicarán en números sucesivos de Novática y también en el servidor Web de ATI.

Agradecimientos

 

Queremos agradecer a todos los autores que han contribuido a este número, incluyendo a aquellos cuyos trabajos no se han podido incluir, por su esfuerzo y felicitarles por su trabajo. Igualmente, es destacable la labor de los miembros del comité de selección, Alfons Crespo, Michael González y Jose Luis Villarroel, cuyos comentarios han sido fundamentales para mejorar la calidad global de este número.

 

Referencias

 

P.T. Ward, S.J. Mellor, Structured development for real-time systems, vol. 1,2 ,3, Yourdon Press, 1985.

D. Harel, "STATEMATE: A Working Environment fo the Development of Complex Reactive Systems", IEEE Trans. Software Engineering, 16(4):403-414, Abril 1990.

Z.Manna, A. Pnueli, Temporal Logic of Reactive and Concurrent Systems, Springer-Verlag, 1992.

C. Ghezzi, D. Mandrioli, S. Morasca, M. Pezze, "A Unified High-Level Petri Net Formalism for Time-Critical Systems", IEEE Trans. Software Engineering, 17(2), Febrero 1991.

C.A.R. Hoare, Communicating Sequential Processes, Prentice-Hall, 1985.

G. Berry, G. Gonthier, "The ESTEREL synchronous programming, design semantics, implementation", Sc. Of Computing programming, 19(2), 87-152, 1992.

M. Awad, J. Kuusela, J. Ziegler. Object-Oriented Technology for Real-Time Systems. Prentice-Hall, 1996.

A. Burns, A. Wellins, HRT-HOOD: A Structured Design Method for Hard Real-Time Ada Systems, North Holland, 1995.

B. Selic, G. Gullekson, P. Ward. Real-Time Object-Oriented Modeling. Wiley, 1994.

ISO/IEC/ANSI Standard, 8652:1995, Ada Reference Manual, Febrero, 1995.

ISO/IEC Standard 9945-1:1996. Information Technology -Portable Operating System Interface (POSIX)- Part 1: System Application Program Interface (API) [C Language]. Institute of Electrical and electronic Engineers, 1996.

IEEE Standards Project P1003.1d, Draft Standard for Information Technology -Portable Operating System Interface (POSIX)- Part 1: Realtime System API Extension. Draft 10.0. The Institute of Electrical and Electronics Engineers, 1997.

IEEE Standards Project P1003.13, Draft Standard for Information Technology -Standardized Application Environment Profile- POSIX Realtime Application Support (AEP). Draft 8. The Institute of Electrical and Electronics Engineers, 1997.

T.P. Baker, A. Shaw, "The cyclic executive model and Ada", Journal of Real-Time Systems, vol 1, num. 1, 1989.

J. Zamorano, Planificación estática de procesos en sistemas de tiempo real críticos, Tesis doctoral, Universidad Politécnica de Madrid, Junio 1995.

Audsley, N. y A. Burns, Deadline-monotonic scheduling. Technical Report YCS146, Computer Science Department, University of York, 1990.

A. Burns, A. Wellings, Real-Time Systems and Programming Languages, 2nd ed., Addison-Wesley, 1996.

Klein, M.H, Ralya, T., Pollak, B., Obenza, R. and González Harbour. M, A Practitioner’s Handbook for Real-Time Analysis. Kluwer Academic Publishes, 1993.

L. Sha, R. Rajkumar, J.P. Lehoczky, Priority Inheritance Protocols: An approach to Real-Time Synchronization. IEEE Trans. on Computers, September 1990.

 



Sugerencias, comentarios, noticias,
 advertencias, ...
Mejor con cualquier visualizador HTML 3.2
Copyright © 1994-1998, ATI, Asociación de Técnicos de Informática.