¿Qué es un sistema operativo en tiempo real (RTOS)?
Un sistema operativo en tiempo real (RTOS) es un SO que garantiza a las aplicaciones en tiempo real una determinada capacidad dentro de un plazo especificado. Los RTOS están diseñados para sistemas críticos y para dispositivos como microcontroladores, que tienen tiempos específicos. Los requisitos de tiempo de procesamiento de los RTOS se miden en milisegundos. Cualquier retraso en la respuesta puede tener consecuencias desastrosas.
Los sistemas operativos en tiempo real tienen funciones similares a los sistemas operativos de propósito general (GPOS), como Linux, Microsoft Windows o macOS, pero están diseñados para que un programador del SO pueda cumplir plazos específicos para distintas tareas.
Los RTOS también suelen aparecer en sistemas embebidos, que son una combinación de hardware y software diseñada para una función específica y que también puede operar dentro de un sistema mayor. A menudo, los sistemas embebidos se utilizan en entornos de tiempo real y emplean un sistema operativo en tiempo real para comunicarse con el hardware.
Los RTOS están diseñados para manejar múltiples procesos a la vez, asegurando que estos procesos respondan a los eventos dentro de un límite de tiempo predecible. El procesamiento en un RTOS se produce dentro de unos límites temporales definidos y controla la prioridad de las tareas. Un RTOS también es capaz de realizar cambios en la prioridad de las tareas. Los sistemas basados en eventos suelen cambiar de tarea en función de la prioridad.
Algunos sistemas operativos en tiempo real se crean para aplicaciones especiales, mientras que otros son de propósito más general. Por lo general, los RTOS ofrecen las siguientes funcionalidades:
- Multitarea, en la que las tareas se alternan rápidamente para dar la impresión de que varios programas se ejecutan de forma simultánea;
- Priorización de hilos de proceso; y
- Un número suficiente de niveles de interrupción.
Los RTOS se incluyen en los siguientes dispositivos:
- Sistemas de control del tráfico aéreo
- Frenos antibloqueo y airbags
- Cámaras
- Sistemas médicos
- PCs.
Características de un sistema operativo en tiempo real
Los sistemas operativos en tiempo real suelen tener las siguientes características:
- Ocupan poco espacio. En comparación con los sistemas operativos generales, los sistemas operativos en tiempo real son ligeros.
- Alto rendimiento. Los RTOS suelen ser rápidos y reactivos.
- Determinismo. La repetición de entradas termina en la misma salida.
- Seguridad y protección. Los estándares de protección y seguridad críticos suelen ser la máxima prioridad, ya que los RTOS se utilizan con frecuencia en sistemas críticos.
- Programación basada en prioridades. Las tareas a las que se asigna una prioridad alta se ejecutan primero, seguidas de los trabajos de menor prioridad.
- Información de temporización. Los RTOS son responsables de la temporización y de proporcionar una interfaz de programación de aplicaciones.
¿Cómo funciona un RTOS?
Los RTOS se dividen en sistemas de tiempo real blandos y duros. Un RTOS blando está diseñado para funcionar en unos pocos cientos de milisegundos, mientras que un RTOS duro está diseñado para ofrecer tiempos de respuesta predecibles en decenas de milisegundos.
Los sistemas de tiempo real blandos suelen tener archivos de mayor tamaño que los RTOS duros. Algunas ejecuciones actúan de forma menos predecible durante los picos de carga, pero se toleran, ya que los cálculos se retroceden a puntos de control previamente establecidos si se produce un error. Los RTOS blandos se utilizan normalmente en sistemas donde las ejecuciones basadas en el tiempo son menos importantes, como en PC, cámaras y smartphones.
Los RTOS duros suelen tener archivos de datos de tamaño pequeño o mediano. Actúan de forma predecible en los momentos de máxima carga, y el cálculo se retrocede si se produce un error. Los RTOS duros se utilizan normalmente en sistemas que requieren ejecuciones importantes basadas en el tiempo, como los sensores de los aviones, los sistemas de piloto automático o los dispositivos médicos.
En los SO en tiempo real duros, si no se puede realizar el cálculo para que un objeto esté disponible en el momento designado, el SO termina con un fallo. En un RTOS blando, el SO sigue funcionando, pero algunas tareas pueden resultar improductivas si no se ejecutan en un momento dado.
Los RTOS también actúan como un programador, en el que las tareas se pueden programar como listas para ejecutarse, en ejecución o bloqueadas.
Suelen tener un núcleo monolítico y una arquitectura de micronúcleo. El kernel del SO es el núcleo de un SO, que proporciona servicios básicos para todas las demás partes del SO. Los kernels son la capa principal entre el SO y el hardware.
El kernel RTOS monolítico y los procesos operativos comparten un mismo espacio. Esta arquitectura funciona con mayor rapidez que las configuraciones de micronúcleo y suele ofrecer un mejor rendimiento. Aunque los RTOS monolíticos funcionan más rápido, son más difíciles de actualizar y un error de programación en el sistema de archivos, el stack de protocolos o el controlador puede provocar fallos en el sistema.
La arquitectura del microkernel alberga el kernel y las operaciones en ubicaciones separadas. Esta arquitectura es más lenta que el RTOS monolítico, ya que cualquier acción debe regresar al kernel antes de poder pasar al componente al que hace referencia. El microkernel también carece de sistemas de archivos.
RTOS vs GPOS
Los SO de propósito general, como Windows o Unix, pueden gestionar múltiples tareas simultáneamente, pero no son ideales para aplicaciones importantes y sensibles al tiempo debido a problemas de latencia y sincronización. Los SO de propósito general también pueden funcionar sin limitaciones de tiempo, por lo que a veces las tareas pueden fallar o tardar más en ejecutarse. En otras palabras, proporcionan a las tareas una respuesta en tiempo real potencialmente no determinista y blanda.
Los RTOS suelen proporcionar una respuesta determinista y estricta en tiempo real con el objetivo de proporcionar una reacción rápida a los eventos. Si bien los GPOS son buenos para el uso general del consumidor, los RTOS están diseñados para casos en los que un sistema necesita responder a un evento o tarea dentro de un período de tiempo corto y designado. Los RTOS deben ser rápidos y precisos para los sistemas típicamente integrados en los que residen.
Software RTOS popular y factores para elegir un SO
Entre los productos de software RTOS comerciales y de código abierto más conocidos se incluyen los siguientes:
- FreeRTOS de Amazon Web Services. Este sistema operativo de microcontrolador de código abierto está diseñado para simplificar el desarrollo, la seguridad, la implantación y el mantenimiento de dispositivos de microcontroladores.
- QNX Neutrino de BlackBerry. Este sistema operativo comercial en tiempo real es similar a Unix y está diseñado para funcionar en sistemas embebidos. También es uno de los primeros sistemas operativos de microkernel con éxito comercial.
- VxWorks de Wind River. Este RTOS admite el despliegue de aplicaciones en contenedores. Los Mars Exploration Rovers utilizan VxWorks.
- SafeRTOS de Wittenstein. Este sistema operativo de seguridad en tiempo real precertificado está diseñado para procesadores embebidos.
Al buscar un RTOS, deben tenerse en cuenta los siguientes factores:
- Capacidad de respuesta. Los factores que determinan la capacidad de respuesta incluyen el algoritmo de programación, la latencia de las interrupciones y los tiempos de cambio de contexto.
- Certificaciones de seguridad. Los RTOS precertificados y certificados garantizan que la calidad del RTOS cumpla con los estándares de diseño de la industria.
- Recursos del sistema disponibles. La arquitectura define el tipo de recursos del sistema necesarios. Por ejemplo, los microkernels utilizan una pequeña cantidad de recursos del sistema.
- Seguridad. Existen RTOS gratuitos y de código abierto, así como opciones comerciales. Ambos ofrecen funciones de seguridad integradas, pero algunas ofertas son más amplias.
- Compatibilidad con versiones más recientes. También hay que tener en cuenta el uso a largo plazo. Si una organización va a utilizar el RTOS durante un largo periodo de tiempo, debe tener en cuenta la posibilidad de recibir soporte y actualizaciones en el futuro.