Listado de la etiqueta: sixe-partner

Logo FreeRTOS con TUX de fondo

Linux en tiempo real (RTOS) – Ahora parte de su kernel

¿Sabías que mientras has abierto el navegador para leer esto… tu ordenador ha decidido priorizar ese proceso dejando a la cola muchos otros?🤯 ¿Quieres saber cómo lo hace? ¿Qué significa que Linux se convierta en un RTOS? Pues sigue leyendo que te lo enseño. Y ojo, porque si te interesa el mundo del SO del pingüino, te vamos a contar más de un dato que quizá no sepas…💥

¿Cómo funciona el planificador de Kernel de Linux?

El planificador de Linux funciona tal y como en el ejemplo anterior: Básicamente, decide en qué estado poner los procesos (en ejecución, interrumpible, no interrumpible, zombie o detenido) y su orden de ejecución para mejorar tu experiencia. Para su orden de ejecución, cada proceso cuenta con un nivel de prioridad. Supongamos que tienes un proceso en segundo plano ejecutándose y abres el navegador. El planificador interrumpirá ese proceso en segundo plano y centrará los recursos en abrir el navegador, asegurándose así de que se ejecute de forma rápida y eficaz.

El concepto de expropiación (preemption)

¿Expropiación en Linux🐧? No es en lo que estás pensando… La expropiación es una característica fundamental, ya que permite que los procesos sean interrumpidos si irrumpe uno de mayor prioridad. En la versión 2.6 de Linux, se añadió al kernel la capacidad de expropiar procesos, es decir, el kernel puede interrumpir procesos. Los sistemas que no son preemptibles deben terminar la tarea que esté en ejecución para poder llegar a la siguiente.

En el caso de Linux, desde la versión 2.6.24, se usa el Completely Fair Scheduler (CFS) como planificador. Este planificador se rige por garantizar un acceso “justo” a la CPU.

Completely Fair Scheduler: ¿cómo se decide qué proceso debe ejecutarse en cada momento para tener un acceso justo a la CPU?

Existen dos tipos de prioridades: estática y dinámica.

  • Estática (Niceness): Se puede ajustar por el usuario. Cuanto más bajo sea su valor, más importante es el programa y más tiempo de CPU consume.
  • Dinámica: Se establece según el comportamiento del programa. Pueden ser I/O Bound (programas que necesitan mucho tiempo de CPU porque suelen estar a la espera) o programas CPU Bound (que requieren menos tiempo de CPU, ya que suelen realizar tareas intensivas que podrían colapsar otros procesos).

¿Cómo ordena las prioridades el planificador?

El sistema operativo mantiene dos listas de programas:

  • Lista 1: Programas que aún tienen tiempo para usar.
  • Lista 2: Programas que han usado su tiempo.

Cuando un programa utiliza su tiempo, el sistema calcula cuánto tiempo debería tener la próxima vez y lo mueve a la segunda lista. Cuando la primera lista se vacía, las dos listas se intercambian. Esto ayuda al sistema a trabajar de manera eficiente.

Linux 2.6, con el kernel totalmente preemptible, mejoró considerablemente la capacidad de respuesta del sistema. Ahora, el kernel puede ser interrumpido en tareas de baja prioridad para responder a eventos prioritarios.

 

PREEMPT_RT dentro del Kernel de Linux

Con una nueva actualización del kernel, Linux podrá ser controlado con una precisión milimétrica. Un RTOS implica que el sistema será preciso para tareas críticas, como en centros médicos. Sin embargo, como Linux no fue pensado para eso, que ahora sea parte de su núcleo aporta ciertas características, aunque no lo conviertan en un RTOS.

Característica Mejora
Integración directa y mantenimiento simplificado
  • Menos dependencia de parcheo externo: Acceso directo a mejoras sin gestionar parches.
  • Mantenimiento más sencillo: Actualizaciones más fáciles y menos problemas de compatibilidad.
Mejora de la estabilidad y el rendimiento
  • Pruebas y validación: Mayor estabilidad y rendimiento gracias a pruebas rigurosas.
  • Desarrollo continuo: Mejoras continuas en la funcionalidad y rendimiento.
Accesibilidad para desarrolladores
  • Facilita el uso: Habilitación de funcionalidades de tiempo real más accesible.
  • Documentación y soporte: Mayor documentación y soporte en la comunidad.
Competencia con sistemas dedicados
  • Aumento de la competitividad: Posicionamiento de Linux como alternativa a RTOS dedicados.
Casos de uso ampliados
  • Aplicaciones críticas: Adopción de Linux en sistemas críticos donde la precisión es esencial.

¿Por qué ha tomado PREEMPT_RT tanto tiempo en ser parte del kernel?

Además de problemas financieros y el poco interés de la comunidad en darle un enfoque de tiempo real a Linux, surgió un problema técnico: la función printk.

Printk es una función que imprime mensajes en el búfer de registro del kernel. El problema con esta función es que producía retrasos cada vez que se llamaba. Este retraso interrumpía el flujo normal del sistema, y alejado este problema, PREEMPT_RT se pudo incorporar al kernel.

¿En qué te afecta que Linux se convierta en un Sistema Operativo a Tiempo Real?

Para el usuario promedio: nada.

Sin embargo, si te dedicas al desarrollo, esta innovación en el core de Linux será un avance a tener muy en cuenta. Hasta ahora, los desarrolladores que necesitan precisión en tiempo real optaban por otros sistemas operativos diseñados para ello. Con la nueva función PREEMPT_RT integrada en el kernel de Linux, esto ya no será necesario. La función permite que Linux detenga cualquier tarea para priorizar una solicitud en tiempo real, esencial en aplicaciones que demandan baja latencia.

Caso de uso: seguridad en el hogar

Imagina que estás usando un asistente de voz en casa que controla tanto la iluminación como el sistema de seguridad. Si detecta una intrusión mientras estás en casa, debe priorizar la activación de las alarmas y notificarte de inmediato. En este caso, las luces o la música pueden esperar; lo que realmente importa es tu seguridad. Esta capacidad de respuesta inmediata en situaciones críticas puede marcar la diferencia.

¿Por qué es necesario el Tiempo Real?

Como hemos visto en el caso de uso, los RTOS pueden completar tareas imprevistas, además, en tiempos concretos y predecibles. En cargas de trabajo que requieren precisión, los RTOS juegan un papel fundamental. En este caso, los RTOS suelen verse en aplicaciones para IoT:

  • Vehículos: Los coches pioneros como Tesla pueden frenar inmediatamente si detectan un obstáculo.
  • Sistemas críticos: En aviones o medicina, los sistemas deben operar en tiempos estrictos.
  • Industria: En procesos industriales, una ligera demora puede causar fallos.
El papel de la IA y el aprendizaje automático

La IA y el aprendizaje automático también juegan un papel fundamental en los RTOS y en el IoT. Podrían predecir eventos y favorecer la toma de decisiones rápidas y efectivas.

Conclusión

En resumen, Linux Real Time será por fin una realidad. La integración de Linux como sistema operativo en tiempo real marca un antes y un después yabre nuevas oportunidades para tareas críticas en sectores como la salud, la robótica y el IoT. Con la función PREEMPT_RT integrada en el núcleo, Ubuntu Linux garantiza mayor precisión. Sin embargo, no debemos dejar de tener en cuenta que el sistema operativo del pingüino🐧 no es 100% un RTOS, no fue diseñado para ello. Así pues, veremos si las empresas adaptarán la solución de Canonical a sus necesidades a tiempo real, o seguirán optando por otras soluciones como FreeRTOS o Zephyr.

¿Quieres seguir aprendiendo sobre Linux? Te ofrecemos certificaciones oficiales. Y si no tienes suficiente… nos adaptamos a ti con formación a medida 👇

Formación intensiva en sistemas Linux

Linux está a la orden del día… si no quieres quedarte fuera de las últimas demandas tecnológicas, te recomendamos nuestros cursos de Canonical Ubuntu 👇

Formación oficial de SIXE en Canonical, creadores de Ubuntu

Sixe Ingeniería
×