# RTLinux

RTLinux es un sistema operativo de tiempo real que ejecuta Linux como un hilo de menos prioridad que las tareas de tiempo real. Con este diseño, las tareas de tiempo real y los manejadores de interrupciones nunca se ven retrasados por operaciones que no son de tiempo real.
La primera versión de RTLinux estaba diseñada para ejecutarse en la plataforma x86 y proporcionaba una pequeña API y un pequeño entorno de programación. La versión 2, que fue totalmente reescrita, fue diseñada para el soporte de multiprocesamiento simétrico (SMP) y para ser ejecutada en una amplia variedad de arquitecturas.
RTLinux proporciona la capacidad de ejecutar tareas de tiempo real y manejadores de interrupciones en la misma máquina que el Linux estándar. Estas tareas y los manejadores ejecutan cuando se necesitan en detrimento de lo que estuviera ejecutando Linux. El peor caso de tiempo es entre que se detecta la interrupción hardware y el procesador ejecuta la primera instrucción del manejador de la interrupción. Este tiempo es del orden de los 10 microsegundos en la plataforma x86.
La empresa Wind River actualmente es la propietaria de RTLinux

## Historia y evolución

   * RTLinux nació del trabajo de Michael Barabanov y Victor Yodaiken en New Mexico Tech, que posteriormente fundaron FSM Labs ofreciendo soporte técnico. En febrero de 2007, Wind River adquirió FSM labs.
   * RTLinux se distribuye bajo la "GNU Public License". Recientemente Victor Yodaiken ha patentado la original arquitectura en la que se basa RTLinux.
   * Actualmente funciona sobre arquitecturas PowerPC, i386, y está en desarrollo la versión para Alpha.
   * A partir del código de Yodaiken, se está desarrollando otro proyecto liderado por P. Mantegazza llamado: " Real Time Application Interface" RTAI
   * Las primeras versiones de RTLinux ofrecían un API muy reducido sin tener en cuenta ninguno de los estándares de tiempo real: POSIX Real-Time extensions, PThreads, etc.
   * A partir de la versión 2.0 Victor Yodaiken decide reconvertir el API original a otro que fuera "compatible" con el API de POSIX Threads. El documento design explica las líneas generales de la adaptación al estándar.
   * Existe una versión para multiprocesadores, con la posibilidad de asignar tareas a procesadores.
   * En octubre de 2015 el proyecto pasa a estar tutelado por la Linux Foundation, con la colaboración de compañías como Google, Intel, ARM, IBM, Qualcomm o SanDisk entre otras para rescatar el proyecto.

## Relación entre RTLinux y Linux

Es importante no confundir la versión de RTLinux con la versión del núcleo Linux.
   * RTLinux no es código independiente. Esto es, no es una nueva versión de Linux.
   * Parte de la distribución de RTLinux es un "parche" sobre el código de Linux. Y otra parte son módulos cargables.
   * Cada versión de RTLinux está diseñada para funcionar sobre una versión de Linux. Por ejemplo la versión 3 de RTLinux necesita linux-2.3.48 o superior.

## Características

   * Sistema operativo de tiempo real estricto.
   * Extensiones para entorno multiprocesador SMP (x86).
   * API "próximo" al de POSIX threads. Planificador expulsivo por prioridades fijas, señales, sistema de archivos POSIX (open, close, etc.) semáforos y variables condición.
   * Depuración de código mediante GDB (GNU Debugger).
   * Soporte para arquitecturas x86 y PPC.
   * Acceso directo al hardware (puertos e interrupciones).
   * Comunicación con procesos linux mediante memoria compartida y "tubos".
   * Estructura modular para crear sistemas pequeños.
   * Eficiente gestión de tiempos. En el peor caso se dispone de una resolución próxima al microsegundo (para un i486).
   * Facilidades para incorporar nuevos componentes: relojes, dispositivos de E/S y planificadores.