Sistema operativo en tiempo real
Un sistema operativo en tiempo real o en tiempo real (abreviado como RTOS ) es un sistema operativo especializado para admitir aplicaciones en sistemas en tiempo real . Estos sistemas se utilizan típicamente en el campo industrial ( control de procesos , pilotaje de robots , transferencia de datos en telecomunicaciones ) o donde es necesario obtener una respuesta del sistema en un tiempo predeterminado.
Un sistema operativo en tiempo real no necesariamente tiene que ser rápido: el intervalo de tiempo en el que el sistema operativo/ aplicación debe reaccionar no es importante; lo importante es que responda en un tiempo máximo predeterminado. En otras palabras, el sistema debe ser predecible o más bien determinista , en el sentido de que en el sistema se puede conocer el tiempo real (en el mejor o peor de los casos, términos que provienen del inglés best case / worst case ) de un proceso dado. o procesamiento.
En la práctica, un sistema en tiempo real debe garantizar que un procesamiento (o tarea ) finaliza dentro de una determinada restricción de tiempo o fecha límite (llamada fecha límite en la jerga ). Para garantizar esto, se requiere que la programación de las operaciones sea factible . El concepto de factibilidad de programación es la base de la teoría de los sistemas de tiempo real y es lo que nos permite decir si un conjunto de tareas es ejecutable o no de acuerdo con las restricciones de tiempo dadas.
Tareas periódicas/aperiódicas y duras/blandas en tiempo real
Las tareas de un sistema en tiempo real pueden ser:
- periódico : cuando una tarea consiste en una secuencia de actividades activadas regularmente
- aperiódico : cuando una tarea consiste en una secuencia de actividades activadas a intervalos irregulares.
- esporádico : cuando una tarea consiste en una secuencia de actividades activadas de manera impredecible (típicamente tareas que corresponden a solicitudes de usuarios)
Las tareas periódicas son típicas de un sistema de control de tiempo discreto .
Cuando se trata de tareas de tipo periódico, también hablamos de período de ejecución, que significa el lapso de tiempo entre dos ejecuciones de una tarea periódica. Es común hacer coincidir la fecha límite con la inversa del período ya que este es el límite máximo de ejecución de una tarea.
Sin embargo, las tareas de un sistema en tiempo real pueden ser:
- soft real-time : una tarea que no respeta su fecha límite (en la jerga se le llama romper la fecha límite ) provoca daños irreparables en el sistema. Superar el plazo produce una degradación del rendimiento proporcional al tiempo que se tarda en superar el plazo.
- hard real-time : una tarea que si excede temporalmente su fecha límite causa un daño irreparable al sistema.
- "anytime" : son tareas que procesan iterativamente los mismos datos para "refinarlos" cada vez más. Los datos procesados por las tareas en cualquier momento cumplen con los requisitos mínimos y máximos de calidad. Por lo tanto, se consideran "duros" hasta que los datos alcanzan la calidad mínima, se vuelven "blandos" antes de alcanzar la calidad máxima, después de lo cual ya no se ejecutarán.
Básicamente esta distinción se traduce en la diferente cuantificación de los costes de una posible inexactitud temporal del sistema. Un ejemplo de una tarea suave en tiempo real puede ser un reproductor de DVD , en el que el incumplimiento de las restricciones da como resultado una degradación de la calidad de la película, pero no pone en peligro la continuación de la reproducción; mientras que una tarea difícil en tiempo real puede ser el controlador de temperatura del núcleo de una planta de energía nuclear, donde el incumplimiento de las limitaciones de tiempo puede causar un desastre evidente.
Características de un sistema de tiempo real
Un sistema de tiempo real debe tener las siguientes características:
- Programación óptima: todas las tareas se conocen a priori, así como las limitaciones de tiempo, por lo que debería ser posible tener un programador que implemente una programación que minimice la función de costo presentada anteriormente.
- Compartir recursos: las tareas son entidades separadas pero contribuyen al mismo propósito, por lo que no es necesario tener espacios de direcciones separados.
- Garantía de ejecución: todas las tareas duras en tiempo real deben finalizar dentro de su fecha límite, por lo que, en caso de que llegue una nueva tarea o una tarea no pueda completarse dentro de la fecha límite, se puede utilizar una notificación previa del sistema para evitar la ejecución de la nueva tarea. o para recuperar la ejecución de la tarea que está a punto de abrirse paso.
- Previsibilidad de las llamadas al sistema: el sistema debe ser capaz de evaluar los tiempos de cómputo de cada tarea para determinar el cronograma factible, por lo que cada llamada al sistema debe tener un tiempo máximo de ejecución bien definido para no introducir demoras indefinidas.
Programación de sistemas en tiempo real
Los algoritmos de programación más utilizados para sistemas de tiempo real son esencialmente tres:
EDD tiene las siguientes características
- Todas las tareas llegan simultáneamente
- La prioridad es estática.
- No requiere prioridad
- Minimizar la latencia .
EDF tiene las siguientes características:
- Las tareas pueden llegar en cualquier momento.
- Prioridad dinámica basada en la próxima fecha límite.
- Utilice la capacidad de las tareas para adelantarse a los demás.
- Minimizar la latencia.
RM solo puede ser utilizado para tareas periódicas, tiene las siguientes características:
- A las tareas se les asigna una prioridad estática proporcional a la frecuencia de llegada.
- Se puede programar un grupo de tareas si se conoce la función de utilización U U_lub <U <1
La función U expresa la tasa de utilización del procesador, la función está limitada en la parte superior y es SupU = 1 , indicada con el factor de utilización mínima U_lub . Diremos que una función es ciertamente programable con Rate Monotonic si U <U_lub , en cambio es no programable si U> 1 . Si U_lub <U <1 no estamos seguros de la programabilidad. El algoritmo EDF en algunas circunstancias es mejor que RM porque garantiza la planificabilidad simplemente para U <1
Factores que socavan la previsibilidad
Los productos de las familias Windows y Unix no reúnen las características típicas de un sistema en tiempo real: por ejemplo, mientras se gestiona la ejecución de múltiples procesos con prelanzamiento , no es posible predecir de ninguna manera cuál será el tiempo de ejecución de un solo proceso. Además, el uso de discos duros para almacenamiento de datos, dispositivos USB u otros dispositivos que introducen altas latencias de ejecución por parte de la CPU , hace imposible establecer con certeza cuánto tiempo se tardará en encontrar la información útil para la correcta ejecución del código.
Hay varios factores que hacen que el sistema operativo reaccione de forma impredecible . Entre ellos, los principales son los siguientes:
- El DMA : puede restringir o bloquear el bus de la CPU , retrasando la ejecución de una tarea crítica. En un sistema de tiempo real, por lo tanto, se prefiere desactivarlo o usarlo en modo de segmento de tiempo donde el bus está constantemente asignado y fijado al DMA, incluso si no hay operaciones que realizar.
- El caché : puede causar imprevisibilidad ya que hay casos en los que falla y puede causar retrasos en el acceso a la memoria por parte de la CPU . Por lo tanto, teniendo en cuenta el peor de los casos, preferimos no utilizarlo en absoluto.
- Mecanismos de gestión de memoria: estas técnicas no deben introducir retrasos impredecibles durante la ejecución de tareas críticas, por ejemplo, la paginación puede causar fallas de página intolerables para un sistema de tiempo real duro. Por lo general, se utiliza la segmentación o partición de memoria estática.
- Interrupciones : son generadas por los dispositivos periféricos cuando tienen alguna información para intercambiar con la CPU . Estas interrupciones durante la ejecución de una tarea crítica generan demoras impredecibles y por lo tanto se prefiere deshabilitarlas.
- Sistemas de administración de energía : son mecanismos de hardware que pueden ralentizar la CPU o hacer que ejecute código útil para disipar menos energía. Está claro que en un sistema de tiempo real es importante respetar un plazo en lugar de consumir poca energía, por lo que estos mecanismos se desactivan.
Elección del sistema operativo en tiempo real
Entre los RTOS comerciales encontramos compatibles con POSIX (por ejemplo , LynxOS, que es compatible con Unix ) y no compatibles con POSIX, como VxWorks (que admite parcialmente los estándares POSIX ). En lo que a sistemas Open Source se refiere, es posible utilizar Linux , con las debidas precauciones, o RTAI / Xenomai .
Problemas en tiempo real de Linux
- El planificador , que tiene como objetivo la asignación de la CPU a los distintos procesos, no puede conocer los requisitos de tiempo de los distintos procesos en tiempo real.
- Incluso si utiliza la programación FIFO o FIFO Round Robin , que tiende a aumentar la previsibilidad del sistema, aún no hay garantía sobre los retrasos introducidos por las llamadas al sistema y las actividades del kernel .
Ejemplos de sistemas operativos RT
Algunos sistemas operativos capaces de trabajar en tiempo real en arquitecturas de hardware adecuadas son:
Código abierto :
Propietarios:
Enlaces externos