notas unidad 1
DESCRIPTION
Unidad 1 Introducción a los sistemas de tiempo realTRANSCRIPT
FACULTAD DE INGENIERIA ELECTRICA
UNIVERSIDAD MICHOACANA DE SAN NICOLAS DE HIDALGO
Programación en Tiempo Real
Notas de Curso 2011 M.I. Rosalía Mora Juárez
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 2
Programación en tiempo real Contenido sintético del curso
1. Introducción a los sistemas en tiempo real. 2. Restricciones de la programación en tiempo real. 3. Planificación de prioridades. 4. Planificación de tiempos. 5. Manejo de recursos. 6. Sincronización. 7. Confiabilidad. 8. Sistemas Operativos en Tiempo Real. 9. Aplicaciones.
Objetivo El objetivo fundamental de este curso es conocer los mecanismos y herramientas existentes para el diseño y programación de sistemas de tiempo real.
• Que el estudiante comprenda qué es un sistema de tiempo real, así como las restricciones que la programación de estos sistemas conlleva.
• Competencia: conocer una plataforma de programación en tiempo real mediante la práctica en un
sistema operativo de tiempo real.
Bibliografía básica ⎯ Burns, Alan. Sistemas de tiempo real y lenguajes de programación, 3era Edición, Prentice Hall, 2003. ⎯ Doug Abbott. Linux for Embedded and Real-time Applications, Second Edition, 2006 ⎯ Dibble, Peter C. Real-Time Java Platform Programming, Prentice Hall, 2002.
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 3
1. Introducción a los sistemas de tiempo real
a influencia de las computadoras se ha extendido a todos los órdenes de la vida, desde lavadoras hasta el control de tráfico aéreo. Una de las áreas de expansión más rápida de la explotación de computadoras es aquélla que implica aplicaciones cuya función principal no es la de procesar información, pero que
precisa dicho proceso de información con el fin de realizar su función principal. Una lavadora controlada por microprocesador es un buen ejemplo de dicho tipo de sistemas. En este caso, la función principal es la de lavar ropa; sin embargo, dependiendo del tipo de ropa que va a ser lavada, se deben ejecutar programas de lavado diferentes. Este tipo de aplicaciones de computador se conocen genéricamente como de tiempo real o empotradas. Se ha estimado que el 99 por ciento de la producción mundial de microprocesadores se utiliza en sistemas embebidos. Estos sistemas plantean requisitos particulares para los lenguajes de programación necesarios para programarlos, ya que tienen características diferentes de las de los sistemas de procesamiento de información tradicionales.
1.1 ¿Qué es un sistema en tiempo real? En la actualidad hay un debate sobre qué es tiempo real.
Existen varias definiciones de “tiempo real”, inclusive algunas de ellas pudieran llegar a ser contradictorias. El tema es controvertido y no existen indicios de que se pueda llegar a estar 100% de acuerdo sobre ésta terminología.
El Diccionario Oxford de computación (Oxford Dictionary of Computing) proporciona la siguiente definición de un sistema de tiempo real:
Cualquier sistema en el que el tiempo en el que se produce la salida es significativo. Esto generalmente es porque la entrada corresponde a algún movimiento en el mundo físico, y la salida está relacionada con dicho movimiento. El intervalo entre el tiempo de entrada y el de salida debe ser lo suficientemente pequeño para una temporalidad aceptable.
Por otra parte, la definición canónica de un sistema en tiempo real es la expresada por Donald Gillies1:
"A real‐time system is one in which the correctness of the computations not only depends upon the logical correctness of the computation but also upon the time at which the result is produced. If the timing constraints of the system are not met, system failure is said to have occurred."
que traducida al español sería:
Un sistema de tiempo real (STR) es aquel en cual los resultados son correctos, y no sólo depende de si la lógica e implementación de los programas computacionales son correctos, sino también el tiempo en el cual se producen dichos resultados.
Si no se verifican las restricciones de tiempo, se dice que se ha producido un fallo en el sistema.
1 Donald Gillies, Department of Electrical and Computer Engineering, University of British Columbia, 2356 Main Mall, Vancouver, B.C., Canada.
L
FIE‐2011
M.I. Rosalía M
Otros invest
Así talo cuasistem
Se h
sistemas rádefinición s
Un s(inclu
El crespuesta devariar del ouna respues
Una
1.1.1
Es nconsiderarsetiempo. Loeventos, lasetc. Las tédentro de es
1.1.2
La mes aplicar realimentac
Los
funciones d
Mora Juárez
tigadores han
ambién, es fual implicaríama sea alto, a
han hecho taápidos. Por esiguiente (Ra
istema de tieuyendo el pa
concepto tieel sistema po
orden de segusta limitada o
a aproximaci
Program
necesario dife como unas aspectos d
s restriccionecnicas y herste curso.
Sistemas
mayor parte la acción d
ción del sistem
s sistemas emde control de
Sistem
Tiemp
n agregado a
fundamental ga que el sistea la vez de q
ambién referejemplo, el pandell et al.,
empo real eso de tiempo
empo real nor sí misma undos, milis
o latencia me
ión para defi
mación en
ferenciar la pa extensión dderivados dees de tiempo rramientas de
s empotra
de los sistemde control ma.
mpotrados otros sistem
ma de
po Real
a la definició
garantizar qema sea predque mantiene
rencias a sistproyecto PDC1995):
es aquél al qo físico) en in
no es necesarla que define
segundos, naenor son men
nir qué es un
tiempo re
programacióde la prograe considerar
(time-in y te diseño de
ados
mas de tiempcalculada p
o embebidomas o subsiste
•Inter•Respdent
•Tiendivermom
ón anterior:
que las restridecible. Es taen las restricc
temas de tiemCS (Predicta
que se le solntervalos del
riamente sine la idea de
anosegundos,nos eficientes
n sistema de
eal
ón en tiempoamación conel tiempo s
ime-out), la programas e
po real son sipor medio d
os son aquellemas.
racciona repponde a los ero de un plaze capacidadrsos evento
mento con cie
icciones de también deseaciones de tie
mpo real queably Depend
licita que rel tiempo dicta
nónimo de rátiempo real, , etc. Con frs que los algo
tiempo real c
o real (RTP)ncurrente qson principasincronizacien tiempo re
istemas de cde una com
los donde se
etidamente cestímulos quzo de tiempod para aten
os que seertas restricc
P
tiempo en losable que el gempo.
e considerandable Compu
eaccione a eados por el e
ápido, es deya que una
recuencia, looritmos que
consideraría
. La programque incorporaalmente: el oón de relojes
eal son objet
control de promputadora “e
e utilizan com
con su entore recibe del
o determinadnder simultproducen e
ciones de tiem
Programación
s sistemas segrado de utili
n que éstos suter Systems)
estímulos delentorno.
ecir, no es larespuesta de
os algoritmosen general n
los siguiente
mación en tiea la problemorden de cóms, semaforizato de un apa
ocesos; su prempotrada”
mputadoras
no físico.entorno físi
do.táneamenteen el mismmpo.
n en Tiempo R
4
e cumplan, ización del
son simpleme) proporcion
l entorno
a latencia del sistema pus que garantino lo hacen.
es aspectos:
empo real pumática de famo suceden ación, bloqu
artado especí
rincipal objeen el lazo
que realizan
co
amo
Real
4
ente na la
de la uede izan
uede actor
los ueos, ífico
etivo de
n las
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 5
Los sistemas empotrados están presentes en procesos industriales, experimentos científicos, medicina,
consulta de grandes bases de datos, control de vuelo, equipamiento telefónico, en refinerías, maquinarias, automóvil, seguimiento de capsulas espaciales, etc. y se caracterizan por tener que dar una respuesta en un tiempo determinado; es decir, la computadora recibe una determinada información, la analiza y posteriormente comienzan las acciones que constituyen su respuesta.
Aunque los sistemas empotrados de tiempo real son a menudo muy complejos, las características proporcionadas por los lenguajes y entornos de tiempo real permiten que esos sistemas complejos sean divididos en componentes más pequeños que se pueden gestionar de forma efectiva. La Figura 1.1 muestra un esquema de un sistema empotrado de tiempo real típico.
Figura 1.1 Esquema de un sistema empotrado de tiempo real típico.
Por ejemplo, en la Figura 1.1 el bloque Sistema de Ingeniería contiene todo un subsistema para aplicar acciones de control en respuesta a los eventos que provenientes del sistema físico. A continuación se muestra el esquema de un control en tiempo real general para un sistema empotrado (Figura 2).
Figura 1.2 Estructura general de un sistema de control de tiempo real.
El sistema de control en tiempo real actúa sobre el sistema físico que va a ser controlado para conseguir un comportamiento definido. Maneja dos aspectos esenciales: • El lazo de control, o sea un algoritmo de
control que determina las acciones impuestas al sistema físico controlado, para cada variación de eventos.
• Los tiempos en que se lleva a cabo la acción
que se origina para cada evento.
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 6
La respuesta de la computadora de un sistema empotrado debe producirse siempre en un tiempo mínimo
para no comprometer el equilibrio del proceso que está controlando. Sin embargo, no todo depende la computadora, otra una parte fundamental son las prestaciones del sistema operativo. Los sistemas operativos que permiten una respuesta rápida se denominan sistemas operativos en tiempo real y su objetivo principal es ofrecer las prestaciones necesarias para lograr tiempos rápidos de respuesta, evitando los tiempos muertos de planificación, pero sin preocuparse de la utilización óptima del resto de los recursos del sistema.
1.2 Ejemplos de Sistemas en Tiempo Real
Un ejemplo muy sencillo de sistema de tiempo real en la vida común es esperar de pie en una fila para hacer el pago en la caja de una tienda. Si la fila crece asintóticamente más y más sin límite, el proceso de compra no será en tiempo real, dado que el comportamiento de la fila no sería predecible; Esto implicaría que el sistema de control (en este caso el proceso de atención a cada cliente) no pueda dar atención a la cantidad de eventos (clientes) que se presentan.
Si la longitud de la fila es limitada, los clientes estarían siendo "procesados" rápidamente, en promedio a medida que entran a la fila, y ese proceso si es en tiempo real porque cumple con los requisitos de atender todos los eventos (clientes) que se presenten dentro de una restricción de tiempo (tiempo máximo estimado que se requiere para hacer el cobro a cada cliente).
Otro ejemplo de tiempo real es aquel donde la computadora realiza una única actividad, como garantizar un flujo estable de un líquido corrosivo a través de una tubería controlada por válvula. Si se detecta un incremento en el flujo, la computadora debe responder inmediatamente alterando el ángulo de la válvula; esta respuesta debe producirse en un periodo finito de tiempo si el equipamiento del receptor final de la tubería no está sobrecargado. Hay que indicar que la respuesta del sistema de control puede implicar una computación muy compleja en relación con el cálculo del nuevo ángulo de la válvula.
Figura 1.3 Un sistema de control de fluido.
Figura 1.4 Un sistema de control de procesos.
Un ejemplo más: el sistema operativo Unix puede ser considerado de “tiempo real” en el sentido de que
cuando un usuario introduce un comando, éste esperará una respuesta en pocos segundos. Afortunadamente, normalmente no ocurre ningún desastre si la respuesta no se produce en ese tiempo. Estos tipos de sistemas se distingue de aquéllos otros en los que un fallo al responder puede ser considerado como una respuesta incorrecta o catastrófica.
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 7
La importancia que tienen los sistemas de tiempo real en la vida diaria va en crecimiento. La Tabla 1
muestra la cantidad de procesadores de propósito específico que se fabricaban para usarse en sistemas de control.
Tabla 1. Crecimiento de procesadores para tiempo real TIPO DE PROCESADOR MILLONES DE
UNIDADES OBSERVACIONES
Para computadoras personales
100 • Un teléfono móvil de última generación tiene más de 1 millón de líneas de código.
• El 50% del costo total de un avión se refiere a su software de control
• El 90% de las innovaciones en los automóviles corresponden a su sistema electrónico.
Para sistemas empotrados
300
Procesador digital de señales (DSP)
600
Microcontroladores 8000
* Datos tomados de Enterprice magazine, septiembre del 2002. Algunos otros ejemplos de la aplicación de sistemas de tiempo real se listan a continuación:
• Aviación • Control de tráfico aéreo • Control de tráfico ferroviario • Telecomunicaciones • Sistemas multimedia • Control de centrales generadoras de
energía (por ejemplo centrales nucleares) • Control de hospitales, invernaderos, etc.
• CAM (Fabricación asistida por ordenador, por ejemplo: fresadoras, tornos, pintura, etc.)
• Control en equipos médicos • Control de sistemas de telecomunicaciones • Juegos en línea • Control de cápsulas espaciales y satélites • Domótica
Figura 1.5 Sistema de intercomunicación GMS.
Figura 1.6 Tboot. Software traductor de conversaciones en tiempo real.
Figura 1.7 Sistema para optimizar la formación de los oficiales mediante un proceso de simulación de operaciones militares aeronavales. Este sistema permite la preparación, ejecución y análisis de ejercicios que simulan un entorno táctico donde se desarrollan las operaciones de carácter militar dentro de un escenario de máximo realismo que cuida la influencia del entorno ambiental.
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 8
Figura 1.8 Sistema de Supervisión Visual del Tránsito mediante cámaras de TV.
Figura 1.9 Centro de control de tráfico aéreo de Tokio
Figura 1.10 Videojuego on-line y en tiempo real.
Figura 1.11 Sistema de vigilancia en tiempo real
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 9
Figura 1.12 Terminal de audio/video en tiempo real.
1.2.1 Características Generales de los Sistemas de Tiempo Real Los requisitos especiales que distinguen a los sistemas de tiempo real de los sistemas que no los son se
listan a continuación:
• Determinismo. • Tamaño y complejidad. • Fiabilidad y seguridad. • Sensibilidad. • Control del usuario. • Cálculo con números reales
• Interacción con dispositivos físicos • Eficiencia • Dependencia del tiempo • Tolerancia a los fallos. • Concurrencia
1.2.1.1 Determinismo
En matemáticas, un sistema determinista es un sistema en el cual el azar no está involucrado en los futuros estados del sistema. Es decir, si se conoce el estado actual del sistema, las variables de ambiente y el comportamiento del sistema ante los cambios en el ambiente, entonces se puede predecir sin ningún riesgo de error el estado siguiente del sistema. En este contexto, se hace referencia a dos tipos de determinismo:
• El determinismo fuerte, que considera que no existen sucesos genuinamente aleatorios o azarosos, y en general el futuro es potencialmente predecible a partir del presente (aunque lógicamente predictibilidad y determinación son independientes, ya que la primera requiere además cierto tipo de conocimiento de las condiciones iniciales).
• El determinismo débil, que considera a la probabilidad como la responsable de determinar los hechos que se presentan, es decir, que existe una fuerte correlación entre el estado presente y los estados futuros, aun admitiendo la influencia de sucesos esencialmente aleatorios e impredecibles.
En sistemas de tiempo real casi todas las peticiones de servicio (o interrupciones) se generan por eventos
externos al sistema. Por tanto, es fundamental que el sistema tenga un comportamiento determinista, o sea, previsible. El determinismo es una cualidad clave del sistema porque refiere a su capacidad para establecer con una alta probabilidad cuanto es el tiempo que se toma una tarea en iniciarse. Esto es esencial porque los sistemas de tiempo real necesitan que ciertas tareas se ejecuten antes de que otras tareas se puedan iniciar.
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 10
Determinismo temporal en los sistemas de tiempo real
El determinismo temporal se refiere al tiempo que tarda el sistema antes de responder a una interrupción. Siguiendo el comportamiento determinista, se esperaría que las interrupciones ocurran en intervalos de tiempo determinados, de tal manera que el sistema responda correctamente en todas las situaciones pudieran presentarse. Por ejemplo, en una petición de servicio a una base de datos es importante determinar el tiempo que tardara el sistema en aceptar esta petición, antes que pueda dar entrada a otra petición de servicio.
En el diseño de sistemas de tiempo real estrictos o duros se debe ser capaz de prever el comportamiento del sistema en el peor caso posible (la definición de sistema estricto y no estricto se trata en la sección 1.3).
1.2.1.2 Tamaño y complejidad
El concepto de tamaño y complejidad de un sistema de tiempo real se relaciona directamente con el diseño de software:
• Los algoritmos de control en sistemas empotrados suelen contener un gran número (miles) de líneas
de código, lo que los hace complicados y complejos. • Se presenta el coste de rediseñar y reescribir software para responder al cambio continuo en los
requisitos del mundo real. Esta tarea no es nada sencilla, y para simplificarla se utiliza programación modular y orientada a objetos.
• Se precisa de lenguajes y entornos de tiempo real que permiten que esos sistemas complejos sean divididos en componentes más pequeños que se pueden gestionar de forma efectiva.
• Los sistemas de tiempo real precisan mantenimiento constante y mejoras durante su ciclo de vida, lo que obliga a realizar su diseño de manera que puedan ser extensibles.
El tamaño y la complejidad de los sistemas de tiempo real agravan el problema de la fiabilidad, puesto
que no sólo deben tenerse en consideración las dificultades esperadas inherentes a la aplicación, sino también aquéllas introducidas por un diseño de software defectuoso.
1.2.1.3 Fiabilidad y seguridad
Aunque todas las aplicaciones de software deben ser confiables, los requisitos de fiablilidad y seguridad en los sistemas de tiempo real son mayores que para otro tipo de sistema.
El fallo de un sistema implicado en la transferencia automática de fondos entre bancos puede conducir a que millones de dólares se pierdan irremediablemente; un componente incorrecto en la generación de electricidad podría redundar en el fallo de un sistema de soporte vital, como una unidad de cuidados intensivos, y la rotura prematura de una planta química podría producir un costoso daño en la maquinaria o un daño ambiental.
La fiabilidad en un sistema de tiempo real se refiere a que el sistema debe estar libre de fallas (o lo más posible a ello) y si se presentan, el sistema debe tener la capacidad de recuperación de fallos, incluyendo la auto-reinicialización, en un periodo de tiempo dado. Pero más aún, la calidad de la respuesta y servicio que presta no debe degradarse más allá de un límite determinado; esto quiere decir que a pesar de catástrofes, desgastes o fallas mecánicas, el sistema debe de seguir en funcionamiento óptimo ya que generalmente una degradación en el servicio que presta un sistema de tiempo real lleva consecuencias catastróficas, tanto para los resultados de control como para el sistema mismo.
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 11
La fiabilidad se puede aproximar a través de una tasa promedio de fallos λ, es decir, la cantidad de
fallos o averías producidas durante una cantidad de tiempo (por ejemplo: λ averías/hora); de esta manera es posible calcular la probabilidad de proporcionar un servicio continuo sin fallos.
La métrica normalmente utilizada en fiabilidad es el tiempo medio entre fallos (Mean Time Between
Failures o MTBF), el cual, para un sistema sin redundancia (realimentación), es igual a l/λ. Un dato interesante es que, si en un sistema se obtiene que su MTBF > 10-9, se considerará que el
sistema de tiempo real es ultraconfiable. Seguridad
La seguridad en sistemas de tiempo real frecuentemente se relaciona con la fiabilidad y la posibilidad de predecir los errores.
Por ejemplo: se sabe que entre el 80% y 90% de los sistemas de defensa utilizados por el ejército de los
Estados Unidos, realizan control mediante software de tiempo real. Según una estimación hecha por Hecht y Hecht (1986), en los sistemas de software complejos, por cada
millón de líneas de código que contienen existe una media de 20 000 errores. De aquí, aplicando técnicas de probabilidad y estadística, concluyen que:
• El 90% de estos errores pueden ser detectados con sistemas de comprobación. • Del 10 % restante, aproximadamente 200 errores se detectan durante el primer año. • De los 1800 errores restantes, permanecerán sin detectarse.
Hecht y Hecht concluyen que cuando se logra establecer una adecuada predicción de errores, el sistema
aumentará notablemente su seguridad. En conclusión, un sistema de tiempo real es seguro si cumple con las características de ser un sistema
estricto (hard) y ultraconfiable. Es importante señalar que algunos sistemas requieren además la implantación de normas especiales y/o certificación oficial que proporcionen parámetros de seguridad estandarizados (por ejemplo: cantidad de radiación máxima a que puede estar expuesto un trabajador en una planta nuclear).
1.2.1.4 Sensibilidad
Entre los parámetros clave que afectan al tiempo de respuesta en un sistema de tiempo real está el cambio de contextos y la latencia de la interrupción:
• El cambio de contexto (tiempo y sobrecarga necesario para conmutar entre tareas). • La latencia de interrupción (tiempo que pasa antes de que el cambio sea realmente posible).
Otros parámetros afectan al tiempo de repuesta son la velocidad de cálculo de la computadora empotrada
y el acceso a memorias masivas en el caso de sistemas distribuidos. La razón de transferencia de datos indica con qué rapidez se introducen o salen del sistema los datos
series o paralelos, tanto los analógicos como digitales.
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 12
La sensibilidad se enfoca en el tiempo que tarda una tarea en ejecutarse una vez que la interrupción ha
sido atendida. Los aspectos a los que se enfoca son:
• La cantidad de tiempo que se lleva el iniciar la ejecución de una interrupción • La cantidad de tiempo que se necesita para realizar la tarea que pidió la interrupción • Los efectos de interrupciones anidadas
Una vez que el resultado del cálculo de determinismo y responsividad es obtenido, ésta se convierte en
una característica del sistema en general y un requerimiento para las aplicaciones que correrán en él (por ejemplo, si se diseña una aplicación en un sistema en el cual el 95% de las tareas deben terminar en cierto período entonces es recomendable asegurarse que las tareas ejecutadas desde otra aplicación no caigan en el 5% que corresponde al bajo desempeño).
1.2.1.5 Control del usuario
En sistemas de tiempo real, el usuario debe tener suficiente información para operar el sistema correctamente; es decir, debe conocer el estado de los procesos que corren en el sistema. Para realizar un control óptimo, los procesos del sistema deben ser capaces de reportar:
• Que proceso es, y especificar su prioridad. • El proceso especifica el manejo de memoria que requiere (que parte estará en caché y que parte en
memoria swap y que algoritmos de memoria swap va a usar). • El proceso especifica que derechos tiene sobre el sistema.
Esto aunque parece complicado no lo es, debido a que los sistemas de tiempo real usan tipos de procesos
que ya incluyen esas características, y usualmente este tipo de procesos son reconocidos como requerimientos del sistema por lo que se informan al usuario mediante manuales u hojas de especificaciones técnicas.
Un ejemplo sería cuando el equipo de diseñadores del software del sistema de control indica que “los
procesos de mantenimiento no deberán exceder el 3% de la capacidad del procesador, a menos que en el momento que sean ejecutados el sistema operativo se encuentre en la ventana de tiempo de menor uso”.
1.2.1.6 Cálculo con números reales
Como se ha indicado anteriormente, muchos sistemas de tiempo real se usan para el control de alguna actividad física. La Figura 12 presenta el ejemplo de un sistema de control sencillo.
Figura 1.13 Sistema de control simple.
El sistema físico está indicado como Planta, y tiene un vector de variables de salida y, que cambian en el tiempo (representada aquí como y(t)). Estas salidas son comparadas con la señal deseada o de referencia ( r(t) ) y la diferencia entre ambas produce una señal de error, e(t). El controlador utiliza este vector de error para cambiar
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 13
las variables de entrada a la planta, u(t). Nótese que el sistema presenta además un controlador con realimentación. Para un sistema muy sencillo, el controlador puede ser un simple dispositivo analógico trabajando con una señal continua.
Con el fin de calcular qué cambios deben realizarse en las variables de entrada para que tenga lugar un
efecto deseable en el vector de salida, es necesario tener un modelo matemático de la planta mediante un conjunto de ecuaciones diferenciales de primer orden. Estas ecuaciones relacionan la salida del sistema y(t) con el estado interno de la planta y sus variables de entrada. Si la salida del sistema cambia implicará resolver dichas ecuaciones para conseguir los valores de entrada requeridos y mantener estable la planta.
Si se establece el requisito de respuesta de tiempo real, se deberá de forzar la repuesta a un periodo de
tiempo fijo. Sin embargo, la mayoría de los sistemas físicos presentan inercias producidas por los procesos de adaptación y comparación de entradas y salidas, por lo tanto, la reacción del controlador no será de manera instantánea.
Para contar con un sistema de tiempo real habrá que considerar los siguientes aspectos:
• La complejidad el modelo matemático que representa el sistema físico. • La complejidad de las manipulaciones necesarias para la adaptación de entradas y salidas distintas (pero
no independientes) del sistema físico. • Que las ecuaciones lineales de primer orden son sólo una aproximación a las características reales del
sistema físico. • La complejidad del algoritmo de control (controlador)
La mayoría de los sistemas de control de tiempo real o controladores realimentados introducen
componentes digitales que se implementan mediante computadora. La Figura 1.14 es una adaptación del modelo anterior (Figura 1.13).
Figura 1.14 Sistema de control con computadora.
El componente digital (computadora/microprocesador/microcontrolador) permite trabajar con valores
discretos. La operación de muestrear y mantener se realiza por un convertidor analógico-digital que está bajo control directo de la computadora.
La computadora resuelve además las ecuaciones diferenciales mediante técnicas numéricas, aunque es
muy probable que los propios algoritmos necesiten ser adaptados para tener en cuenta el hecho de que las salidas de la planta se estén muestreando.
El diseño de los algoritmos de control suelen ser matemáticamente muy complejos y necesitar un grado
de precisión elevado. Por tanto, un requisito fundamental de un lenguaje de programación de tiempo real es que tenga la capacidad para manipular números reales o de coma flotante.
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 14
Tradicionalmente, los lenguajes de programación han soportado un único tipo de coma flotante
(conocido usualmente como dato de tipo real), el cual tiene una precisión que depende de la implementación. Por otra parte, las operaciones de coma flotante necesitan un hardware especial (una unidad de coma flotante) que hace que las operaciones en coma flotante sean varias veces más lentas que las equivalentes operaciones con enteros.
1.2.1.7 Interacción con dispositivos físicos
En cada uno de los ejemplos mostrados, la computadora interacciona directamente con el equipamiento físico en el mundo real. Con el fin de controlar esos dispositivos del mundo real, la computadora necesitará muestrear los dispositivos de medida (sensores, transductores, acopladores, actuadores, etc.) en intervalos regulares; por lo tanto, se precisará de un reloj de tiempo real.
Los dispositivos de medida va a interactuar con la computadora mediante registros de entrada y salida, o
bien pueden generar interrupciones para indicarle al procesador que se han realizado ciertas operaciones o que se han alcanzado ciertas condiciones de error.
Como ya se ha dicho, en un sistema de tiempo real, el operador humano debe mantiene constantemente informado del estado del sistema; por tanto, es necesario incluir en el diseño del sistema elementos físicos (dispositivos visuales o auditivos): Una manera muy común es incluir displays de varios tipos, inclusive graficadores y alarmas.
El software que controla las operaciones del sistema puede estar escrito en módulos que reflejan la
naturaleza física del entorno (como se muestra en la Figura 1.15). Normalmente, habrá un módulo que contenga los algoritmos necesarios para controlar físicamente los dispositivos, un módulo responsable del registro de los cambios de estado del sistema, un módulo para recuperar y presentar dichos cambios, y un módulo para interaccionar con el operador.
Figura 1.15 Diseño de sistema de mando y control.
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 15
También es común que los registros de los cambios de estado del sistema se guarden en una base de
datos que puede ser consultada por los operadores, sobre todo en situaciones muy críticas (como el caso de una caída del sistema), o para proporcionar información con propósitos administrativos.
1.2.1.8 Eficiencia
Una idea popular equivocada que acompaña a los sistemas de tiempo real es que deben ser extremadamente eficientes. Esto no es del todo cierto; los sistemas de tiempo real deben satisfacer restricciones temporales y requisitos de fiabilidad; la implementación eficiente es un medio de extender una posibilidad, pero no es un fin en sí misma.
El término eficiencia se utiliza a menudo para expresar la calidad del código producido por un
compilador o el nivel de abstracción proporcionado por los mecanismos soportados por un sistema operativo o un sistema de soporte de tiempo real. Este término, sin embargo, no queda bien definido.
La eficiencia es, en muchos casos, una métrica pobre para valorar una aplicación y su implementación.
En los sistemas de tiempo real, lo realmente importante es satisfacer los tiempos límite o conseguir tiempos de respuesta adecuados en un entorno de ejecución concreto. Por tanto, la eficiencia de un sistema de tiempo real se relaciona con el rendimiento, principalmente por el tiempo de respuesta del sistema y su razón de transferencia de datos:
• El tiempo de respuesta del sistema es el tiempo en el que un sistema debe detectar un suceso interno o
externo y responder con una acción. • La trasferencia de datos se relaciona con la cantidad o volumen de datos por unidad de tiempo que el
sistema puede aceptar como válidos.
Frecuentemente, la detección del evento y la generación de la respuesta son tareas sencillas de implementar; Es el procesamiento de la información sobre el evento lo que implica determinar qué respuesta es la adecuada, o sea, implica utilizar algoritmos muy complejos y que consumen mucho tiempo.
1.2.1.9 Dependencia del tiempo
Como ya se mencionado, el tiempo de respuesta es crucial en cualquier sistema empotrado. Sin embargo, es muy difícil diseñar e implementar sistemas que garanticen que la salida apropiada sea generada en los tiempos adecuados bajo todas las condiciones posibles. Los sistemas de tiempo real se construyen habitualmente utilizando procesadores con considerable capacidad adicional, garantizando de este modo que el “comportamiento en el peor caso” no produzca ningún retraso durante los periodos críticos de operación del sistema. Funcionalidades de control en tiempo real
Dada una adecuada potencia de proceso (prestaciones del microprocesador de la computadora), se requiere también el soporte del lenguaje y de ejecución para permitir al programador:
a) Especificar los tiempos en los que deben ser realizadas las acciones.
Establecer determinados periodos de muestreo (lecturas de los sensores) mediante algoritmos de control digital directo. Por ejemplo, en un día a las dos de la tarde, a las tres de la tarde, y así sucesivamente, o a intervalos regulares (cada 5 segundos, etc.).
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 16
b) Especificar los tiempos en los que las acciones deben ser completadas.
Los procedimientos de muestreo generalmente se deben sincronizar con el reloj de tiempo real.
c) Responder a situaciones en las que no todos los requisitos temporales se pueden satisfacer.
Por ejemplo, en una central eléctrica los convertidores analógico-digitales deben ser capaces de atender tasas de muestreo que pueden variar desde unos pocos hertzios a varios cientos de megahertzios.
d) Responder a situaciones en las que los requisitos temporales cambian dinámicamente (modos de cambio).
Por ejemplo, si un avión experimenta despresurización repentina, todos los recursos de computación (control de tiempo real) se dedicarán a hacerse cargo de la emergencia.
Nótese que el tiempo de respuesta puede variar dependiendo de las condiciones de control.
1.2.1.10 Tolerancia a los fallos
Los sistemas de tiempo real procesan un flujo continuo de datos de entrada procedentes de los eventos que se presentan; por lo tanto, el diseño del sistema debe asegurar que no se pierda ningún dato. Además, un sistema de tiempo real debe responder a los sucesos que son asíncronos. Por lo tanto, la secuencia de llegada (entrada de datos) y el volumen de los datos no pueden predecirse fácilmente de antemano. Operación a prueba de fallas duras (Fail soft operation)
Los sistemas de tiempo real contienen siempre mecanismos de restauración y recuperación de fallos y frecuentemente tienen incorporados lasos de control o retroalimentación para asegurar la restauración. El sistema debe asegurar que, de ocurrir un fallo, el sistema preserve la mayor parte de los datos y capacidades del sistema en la mayor medida posible.
También se debe asegurar que el sistema sea estable, es decir, que si para el sistema es imposible
cumplir con todas las tareas sin exceder sus restricciones de tiempo, entonces el sistema cumplirá con las tareas más críticas y de más alta prioridad.
1.2.1.11 Concurrencia
En el ejemplo típico de computadora empotrada de la Figura 1.1, el software de control o programa debe interactuar con un sistema físico (que constará de muchos elementos paralelos, como robots, cintas transportadoras, sensores, actuadores, etc.), y con dispositivos para desplegar información de la computadora (la consola del operador, la base de datos y el reloj de tiempo real). Por fortuna, la velocidad de una computadora moderna es tal, que normalmente estas acciones se pueden realizar en secuencia, dando la impresión de ser simultáneas. En algunos sistemas empotrados, sin embargo, puede no ser así; por ejemplo, donde los datos son recogidos y procesados en varios lugares distribuidos geográficamente, o donde el tiempo de respuesta de los componentes individuales no se puede satisfacer con una computadora única. En estos casos, es necesario considerar sistemas empotrados distribuidos o con multiprocesadores, lo que implica trabajar en sistemas concurrentes.
La concurrencia es una característica que se presenta cuando varios eventos ocurren casi al mismo tiempo y es necesario que el sistema de control atienda todas las tareas que los eventos requieren. Dicho de otra forma, la concurrencia es la simultaneidad en la ejecución de múltiples tareas interactivas. Estas tareas pueden ser un conjunto de procesos o hilos de ejecución creados por un único programa.
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 17
Las tareas se pueden ejecutar en un sola unidad central de proceso, dando origen a la multiprogramación;
o bien, las tareas se pueden ejecutar en varios procesadores o en una red de computadoras distribuidas. En resumen, la programación concurrente implica que:
• Se deben atender diversos tipos de eventos en paralelo • Pueden ser suficiente un solo procesador • En ocasiones es necesario recurrir a sistemas multiprocesador
1.3 Clasificación de los sistemas en tiempo real
La clasificación para los sistemas de tiempo real se hace según las propiedades del sistema físico que se va a controlar o según las propiedades del sistema de tiempo real en sí, es decir, la manera como responde ante el sistema físico. De esta clasificación general se desprenden otras subclasificaciones, tal como se observa a continuación:
1.3.1 Sistemas críticos y sistemas acríticos
Se distinguen porque se basan en el tipo de control que aplican sobre el sistema físico, principalmente en los requisitos de restricción temporal y de fiabilidad. Sistema de tiempo real crítico o duro (Hard Real Time Systems): si al tener un fallo en el tiempo de latencia de un proceso del sistema éste lleva como consecuencia a un error en todo el sistema, entonces esos procesos se consideran de tiempo real duro o crítico. Dicho de otra forma, en sistemas críticos los plazos de respuesta deben respetarse en todas circunstancias, pues una sola respuesta tardía a un suceso con funcionamiento incorrecto puede tener consecuencias fatales como pérdida de vidas o catástrofes similares (por ejemplo: sistemas de control de centrales nucleares o controladores de vuelo en aviones). En conclusión, los sistemas estrictos deben cumplir con:
• Plazo de respuesta estricto • Comportamiento temporal determinado por el entorno • Comportamiento en sobrecargas predecible • Requisitos de seguridad críticos • Redundancia activa • Volumen de datos reducido
• Sistemas críticos (hard) y sistemas acríticos (soft). • Sistemas con parada segura (fail-safe) y sistemas con degradación
aceptable (fail-soft).
• Sistemas con tiempo de respuesta garantizado (guaranteed) y sistemas que hacen lo que pueden (best effort).
• Sistemas con recursos adecuados y sistemas con recursos inadecuados.
• Sistemas dirigidos por tiempo y sistemas dirigidos por sucesos.
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 18
Sistema de tiempo real acrítico o suave (Soft Real Time Systems): se denomina así al sistema que, de tener un fallo en algún proceso del sistema, este no conlleva una falla generalizada; sin embargo, el fallo debe presentarse dentro de ciertos límites establecidos (es posible encontrar fallos en la latencia en una de cada 1000 veces, o una de cada 100, o fallar siempre y cuando el error no exceda, por ejemplo, el 3% de la latencia). Por tanto, los sistemas acríticos o suaves pueden tolerar retrasos ocasionales en la respuesta a un suceso (por ejemplo: el sistema de control de una lavadora). En conclusión, los sistemas estrictos deben cumplir con:
• Plazo de respuesta flexible • Comportamiento temporal determinado por la computadora • Comportamiento en sobrecargas degradado • Requisitos de seguridad acríticos • Recuperación de fallos • Gran volumen de datos
1.3.2 Sistemas con parada segura y sistemas con degradación aceptable
Son sistemas de tiempo real que se distinguen por el tipo de comportamiento o respuesta que presentan en caso de que ocurra desperfecto o avería. Se subclasifican en dos tipos: Sistemas con parada segura (fail-safe):
• Detención en estado seguro • Probabilidad de detección de fallos elevada • Tal es el caso de sistemas de control de frenos ABS en un auto.
Sistemas con degradación aceptable (fail-soft):
• Funcionamiento con pérdida parcial de funcionalidad o prestaciones • También hay sistemas con tolerancia de fallos completa (fail operational)
1.3.3 Con respuesta garantizada y sistemas que hacen lo que pueden
Esta clasificación se basa en el grado de determinismo temporal que presenta el sistema de tiempo real. Sin embargo, hay sistemas cuyo determinismo temporal es mínimo y no pueden garantizar que su respuesta ocurra correctamente para todas las situaciones pudieran presentarse. En esta clasificación se encuentran: Sistemas con respuesta garantizada (guaranteed response systems)
• Comportamiento temporal garantizado analíticamente • Se debe caracterizar con precisión la carga máxima y los posibles fallos • Sólo aplica para sistemas duros o críticos.
Sistemas que hacen lo que pueden (best-effort systems)
• Comportamiento temporal de tipo “lo mejor que se pueda” • No se hace una caracterización precisa de carga y fallos • Sólo sirve para sistemas blandos o acríticos
FIE‐2011 Programación en Tiempo Real
M.I. Rosalía Mora Juárez 19
1.3.4 Sistemas con recursos adecuados e inadecuados
Se distinguen por la cantidad de recursos disponibles para realizar el control, sin escatimar presupuesto de diseño e implementación, así como la calidad de los componentes. Estos sistemas se basan también en la cantidad de eventos que pueden detectar y dar respuesta: Sistemas con recursos adecuados (resource-adequate systems)
• Diseño con suficientes recursos para garantizar el comportamiento temporal con máxima carga y en caso de fallos.
Sistemas con recursos inadecuados (resource-inadequate systems)
• Diseño con recursos “razonables” desde un punto de vista económico • Sólo sirve para sistemas acríticos
1.3.5 Sistemas dirigidos por tiempo y por eventos
Se distinguen por la forma de arrancar la ejecución de sus actividades Sistemas dirigidos por eventos (event-triggered systems)
• Arranque cuando se produce un suceso o evento de cambio de estado • Mecanismo básico: interrupciones • Las interrupciones determinan la evolución del sistema. • Puede fallar si la carga es alta
Sistemas dirigidos por tiempo (time-triggered systems)
• Arranque en instantes de tiempo predeterminados • Mecanismo básico: reloj • Solo interrumpe el reloj de tiempo real • Operan mejor con cargas altas
Actividades
1. Indique cinco ejemplos de sistemas de tiempo real empotrados. Indique que "estímulos" alimentan al sistema y qué dispositivos o situaciones controla o supervisa el sistema.
2. De los siguientes ejemplos de sistemas de tiempo real, clasifícalos de acuerdo a los tipos que mencionan en esta
sección. Justifica el por qué de tu clasificación.
a) El software encargado de controlar un respirador artificial b) Juego de ajedrez en computadora c) Sistemas de audio y video en directo d) Sistema de gestión del motor de un auto e) Sistemas médicos como los marcadores de pasos artificiales f) Controladores de procesos químicos industriales de alta toxicidad. g) Software que mantiene y actualiza los planes de vuelo de las compañías aéreas comerciales h) Compresión de archivos de audio i) Motor de búsqueda de sitios web