Introducción a los SO en tiempo real: ¿Qué es un RTOS?

Un sistema operativo en tiempo real es, a grandes rasgos, muy similar a un sistema operativo de propósito general pero con algunas diferencias clave en su funcionamiento. En las siguientes entradas vamos a tratar algunos conceptos fundamentales relacionados con los Sistemas Operativos en tiempo real y los trabajaremos con la ESP32 y FreeRTOS, un SO en tiempo real open source.

Definición

Un sistema operativo es un software que se ejecuta en un microcontrolador o un sistema con microprocesador que cumple una serie de funciones. Primeramente se encarga de ejecutar procesos o tareas, asignando un tiempo de ejecución dependiendo de su prioridad. En segundo lugar gestiona archivos y carpetas a los que tienen acceso las aplicaciones y, por último, gestiona los controladores de los dispositivos conectados, como teclados, tarjetas de sonido, discos duros, etc.

En un SO de uso general los retardos que existen entre la ejecución de cada tarea son despreciables y lo que es llamado el administrador de tareas o «scheduler» no funciona de una manera predecible, por lo que el orden de ejecución de las tareas y el tiempo que se mantendrán funcionando no se puede saber.

Un sistema operativo en tiempo real (Real Time Operating System, RTOS) por otro lado, se requiere de una ejecución precisa de las tareas con retardos mínimos. Su aplicación es común en dispositivos médicos, controladores de motores, o en cualquier dispositivo cuya velocidad de respuesta sea crítica. En particular, los RTOS estarán trabajando con periféricos propios de un microcontrolador, como WiFi, Bluetooth, LCD, etc. La principal ventaja de usar los RTOS es su capacidad de ejecutar tareas de forma concurrente, es decir, al mismo tiempo, lo cual permitirá manejar los recursos de una forma más eficiente.

¿En qué casos usar un RTOS?

Es importante destacar que los RTOS son adecuados para un cierto tipo de microcontroladores. En general, una aplicación que no requiera realizar varias tareas al mismo tiempo puede resolverse con el primer esquema de ejecución, con un dispositivo con recursos estándar, como el Arduino UNO, cuya frecuencia de reloj está en el orden de 16MHz RAM de 2kB y 32 kB de flash. Cuando estamos hablando de un microcontrolador con más frecuencia de reloj, memoria flash en el orden de los MB y RAM de 128kB para arriba ya podemos usar un RTOS porque tenemos más recursos de los cuales disponer. Una de las desventajas de usar un RTOS es que es más complejo encontrar errores y resolverlos, a diferencia de un esquema con tareas consecutivas.

Para estas entradas usaremos FreeRTOS ya que esta muy difundido en la industria, tiene una muy buena documentación, es de código abierto y es gratuito, en conjunto con la ESP32 que también es económica, tiene muy buenos recursos y es compatible con el IDE de Arduino. En la siguiente entrada conoceremos un poco más a detalle de que trata FreeRTOS y como usarlo con la ESP32.

Referencias:

Introduction to RTOS Part 1 – What is a Real-Time Operating System (RTOS)? | Digi-Key Electronics