RTOS: Amigo o Enemigo?


Hola de nuevo cibernautas, hoy pretendo introducirles al tema de los RTOS. Me gustaría que al terminar de leer este artículo puedan darle repuesta a las preguntas: ¿Qué es un RTOS? ¿Por qué surgieron los RTOS? ¿Cuáles son sus principales características? y ¿Qué beneficios le aporta a los desarrolladores?

Las aplicaciones de control de sistemas embebidos están compuestas, típicamente, de varias tareas que necesitan ser ejecutadas en un orden específico. Para los sistemas multitareas se hace muy engorrosa la organización manual de las sub-tareas y del tiempo compartido. El nivel de respuesta y la capacidad de una aplicación, disminuyen dramáticamente cuando se incrementa el nivel de complejidad. Para remediar eso se diseñaron los sistemas operativos de tiempo real (RTOS).

Qué es un RTOS?

Un RTOS (Real Time Operating System) es un sistema operativo (SO) cuyas tareas están sujetas a restricciones temporales. La clave es lograr la mínima latencia en las interrupciones y en la conmutación de los hilos. Los RTOS son valorados en función de cuán rápido o cuán predictivamente pueden darle respuesta a una determinada cantidad de tareas en un estricto período de tiempo.

Algunas de sus características generales son:

  • No utiliza mucha memoria
  • Cualquier evento en el soporte físico puede hacer que se ejecute una tarea
  • Multi-arquitectura (código portado a cualquier tipo de CPU)
  • Muchos tienen tiempos de respuesta predecibles para eventos electrónicos

Entre los RTOS más conocidos se encuentran:

RTLinux: que es una variante del SO Linux pero en tiempo real. Fue diseñado para que el diseñador de un SO bien conocido pudiera compartir, en un mismo dispositivo de cómputo, tareas en tiempo real y otras tareas sin requisitos temporales, de manera que la parte que trabaja con restricciones temporales nunca se bloqueara por la ejecución de tareas sin restricciones temporales y que ambos escenarios pudieran compartir datos fácilmente.

Windows CE: que es un RTOS propiedad de Microsoft y puede ejecutarse en memorias de menos de 1 Mbyte. Actualmente el sistema soporta 256 niveles de prioridad y emplea métodos de itinerancia de prioridades para manejar la inversión de prioridades. La unidad fundamental de ejecución es el hilo, así se optimiza el tiempo de ejecución.

Particularmente hace poco estuve estudiándome un ejemplo donde se diseñaba un sistema embebido con el microprocesador MicroBlaze y en la plataforma software se implementaba una aplicación sencilla sobre el RTOS Xilkernel.

Xilkernel es un sistema operativo de tiempo real con APIs de código abierto que viene incluido en el paquete de herramientas de Xilinx para el diseño de sistemas embebidos. Este RTOS tiene la peculiaridad de ser modular y altamente configurable. Me permite seleccionar y personalizar los módulos que realmente necesita mi diseño. Posee mecanismos de planificación round-robin (simultánea) y por prioridades fijas (permite asignar hasta 32 niveles de prioridad), que se asignan cuando se configura el kernel.

Como ya se explicó, los RTOS permiten la ejecución de tareas con requisitos temporales, una manera de implementar esto en Xilkernel es a través de un timer hardware que genera interrupciones periódicas para invocar al módulo de planificación que es el encargado de determinar cual hilo/proceso de aplicación se ejecutará en ese momento. Una de las potencialidades que se aprecia es el mecanismo de memoria compartida que permite que 2 funciones operen en el mismo espacio de direcciones de memoria, una para escribir datos y otra para leerlos.

El código debe incluir el fichero xmk.h, para especificar la referencia a el conjunto de ficheros del Xilkernel. En la rutina principal (main), se añade el punto de entrada del lazo kernel-aplicación. Es posible ejecutar algunas tareas antes de activarlo. El punto de entrada es la función xilkernel_main() donde se activa el planificador, el timer y el sistema de manejo de interrupciones. A partir de ese momento el planificador es el responsable del modo de ejecución de las tareas.

Como pueden apreciar los SO nos simplifican el manejo de las aplicaciones en entornos multitareas, pero a veces con eso no es suficiente porque hay tareas que deben proyectar una ejecución simultánea, para darnos la posibilidad de implementar eso empleando un espacio reducido de recursos hardware surgieron los RTOS.