Embedded Corner Sistemas Operativos de tiempo real (RTOS) Hector Palacios Pérez (Ingeniero de Aplicaciones) Sistemas Embebidos S.A. [email protected] ¿A qué se denomina Tiempo Real? ¿Cuáles son las características que debe tener un sistema operativo para ser considerado como Real-Time? A continuación les explicamos lo que es un RTOS y su importancia en los sistemas embebidos. Los ingenieros suelen utilizar el término real-time para describir tareas informáticas para las que una respuesta tardía es tan inútil y perjudicial como una respuesta incorrecta. Se dice que estas tareas tienen un deadline, es decir, un tiempo límite. Y los sistemas operativos embebidos trabajan habitualmente bajo estas condiciones extremas. Imagine, por ejemplo, que el software embebido que controla el sistema antibloqueo de los frenos de 2 su vehículo se salta uno de sus deadlines. Usted podría verse envuelto en un accidente ¡e incluso perder la vida! Por eso resulta de extrema importancia que los ingenieros que diseñan sistemas embebidos de tiempo real conozcan a la perfección la capacidad de reacción y comportamiento del hardware y el software que emplean. Los diseñadores de sistemas de tiempo real invierten gran parte del tiempo en estudiar y definir con detalle el rendimiento que se precisa en el peor de los casos posibles. Constantemente se hacen preguntas del tipo «¿cuál es el máximo tiempo que puede pasar desde que el conductor pisa el freno hasta que la señal de interrupción llega al procesador? En el caso de máxima latencia de interrup- ciones, ¿cuál es el tiempo entre la llegada de la señal de interrupción y el comienzo de la rutina de atención a la interrupción asociada? ¿Cuál es el máximo tiempo que puede tardar el software en activar el mecanismo de antibloqueo de frenos?» En sistemas de este tipo, el tiempo medio o esperado son valores simplemente insuficientes. Características de un RTOS La mayor parte de los sistemas operativos de tiempo real comerciales están diseñados para su utilización en sistemas de tiempo real como el descrito del ABS. Eso significa que el rendimiento en el peor de los casos está perfectamente medido • Marzo 2003 Embedded Corner y documentado. Para obtener la etiqueta RTOS (Real-Time Operating System) un sistema operativo debe cumplir tres características básicas: • ser determinista • garantizar el peor caso de latencia de interrupciones • garantizar el peor caso de tiempo de cambio de contexto Un sistema operativo se dice que es determinista cuando se puede calcular cuál es el máximo tiempo que puede tardar una llamada cualquiera del sistema. Se llama «latencia de interrupciones» al máximo tiempo que transcurre desde que una señal de interrupción llega al procesador hasta que se ejecuta su ISR (Interrupt Service Routine) asociada. Las interrupciones son elementos clave de los RTOS. Cuando una interrupción tiene lugar, el procesador debe realizar varias tareas antes de ejecutar su ISR asociada: En primer lugar debe completar la instrucción actual. Esto va a llevar como mínimo un ciclo de reloj, aunque también existen instrucciones complejas que requieren varios o incluso cientos de ciclos de reloj. Luego, la instrucción debe ser reconocida por el procesador, que comprueba que dicha interrupción está habilitada y su prioridad supera a las de otras que puedan estar produciéndo- • Marzo 2003 se. Por último la ISR asociada con la interrupción es ejecutada. La tercera característica de un sistema operativo de tiempo real es la cantidad de tiempo necesaria para realizar un cambio de contexto. Se llama «cambio de contexto» (context switch o thread switch) al proceso de cambiar de una tarea a otra. El contexto de una tarea guarda el estado del procesador justo antes de que otra tarea tome el control de este. Por lo general consiste en un puntero a la próxima instrucción que se debe ejecutar (instruction pointer), la dirección actual de la parte alta de la pila (stack pointer) y el contenido de los registros de propósito general y los flags de estado. Por lo tanto el «cambio de contexto» supone guardar el contexto de la tarea anterior y cargar el contexto de la nueva tarea. Esta parte de código es específica de cada procesador (está escrita en el código ensamblador concreto de cada micro) y por lo tanto dependiente en tiempo del conjunto de instrucciones y la velocidad de este. Supongamos que el tiempo medio de ejecución de un proceso cualquiera antes de ser bloqueado es de 100 µs. pero que el tiempo de «cambio de contexto» es también de 100 µs. En ese caso la mitad del tiempo que emplea el procesador se pierde en la rutina de cambio de contexto. Elegir un RTOS Para evitar sorpresas de última hora, cerciórense de que el sistema operativo que van a utilizar en su sistema embebido les asegura una latencia de interrupciones y un tiempo de cambio de contexto que se ajusta a las necesidades de su sistema. Aunque estos valores puedan considerarse de tiempo real para algunos sistemas (la lectura de un código de barras), pueden no ser suficientes para sistemas más críticos (el disparo del airbag de un vehículo). Pero no se equivoque, el hecho de que un sistema operativo sea de tiempo real no lo es todo. Además de las capacidades de tiempo real, usted puede necesitar otras características que no todos los RTOS ofrecen: soporte para varias arquitecturas, capacidad multitarea, multiusuario, Stack TCP/IP, sistema de ficheros, entornos de desarrollo, compiladores, tamaño reducido del kernel, depuradores de código, GUI, drivers... El tiempo real no es más que una característica adicional de un sistema operativo, si bien, una muy importante en los sistemas embebidos, en los que el interfaz, el almacenamiento de datos o la capacidad multitarea son a veces detalles superfluos. Existen multitud de sistemas operativos comerciales de tiempo real. En la tabla adjunta presentamos algunos de los más conocidos. ❏ 3