miniaturadeimagen|Terminal de VMX. Un sistema operativo en tiempo real (Real Time Operating System), también conocido como RTOS por sus siglas en inglés, es un sistema operativo liviano utilizado para desarrollar cosas íntimas e integrar tareas de diseño con recursos y tiempos específicos de manera óptima y sencilla como suele aplicar para los sistemas integrados. Es por ello que los dispositivos que usan sistemas operativos en tiempo real son considerados un subconjunto de los sistemas de control.

Un sistema operativo de tiempo real (RTOS) es un sistema operativo diseñado para gestionar tareas que deben ejecutarse dentro de límites de tiempo estrictos. A diferencia de los sistemas operativos generales, un RTOS garantiza que las respuestas a eventos externos ocurran dentro de un tiempo máximo conocido, incluso en condiciones de alta demanda de procesamiento. Su propósito principal es asegurar un comportamiento determinista en aplicaciones donde los fallos en el tiempo pueden provocar fallas funcionales, daños materiales o riesgos para la seguridad.Liu, Jane W.S. (2000). Real-Time Systems. Prentice Hall.

Donde utilizarlos Este tipo de sistemas son usados típicamente para aplicaciones integradas que normalmente tienen las siguientes características: Utilizan poca memoria Cualquier evento en el soporte físico puede hacer que se ejecute una tarea Multi-arquitectura Tiempos de respuesta predecibles para eventos electrónicos

Características generales

Usado típicamente para aplicaciones integradas, normalmente tiene las siguientes características: 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 Soporte para la planificación de procesos en tiempo real. Planificación por prioridad (pre-emptive). Garantía de respuesta ante interrupciones. Comunicación interprocesos. Adquisición de datos a alta velocidad. Soporte de E/S (entrada/salida). Control por parte del usuario, de los recursos del sistema. Comunicación entre procesos: Las comunicaciones entre procesos están soportadas de una manera precisa y estable, empleando mecanismos como el uso de semáforos, el paso de mensajes y el uso de memoria compartida. Determinismo: Realiza operaciones en instantes de tiempo fijos predeterminados o dentro de intervalos de tiempo predeterminados. Cuando múltiples procesos compiten por recursos y tiempo de procesador, ningún sistema puede ser totalmente determinista. En un sistema operativo de tiempo real, las solicitudes de servicio de los procesos son dirigidas por eventos externos y temporizaciones. El grado en el que un sistema operativo puede satisfacer de manera determinista las solicitudes depende, primero, de la velocidad a la que es capaz de responder a las interrupciones y, segundo, de si el sistema tiene capacidad suficiente para manejar todas las solicitudes dentro del tiempo requerido. En sistemas operativos no de tiempo real, este retardo puede estar en el rango de decenas a cientos de milisegundos, mientras que en un sistema operativo de tiempo real este retardo puede tener un límite superior en algún punto entre los pocos microsegundos y el milisegundo. Reactividad: Cuánto tiempo tarda el sistema operativo, después del reconocimiento, en servir la interrupción. La reactividad incluye los siguientes aspectos: 1. La cantidad de tiempo necesario para manejar inicialmente la interrupción y comenzar a ejecutar la rutina de servicio de la interrupción (RSI). Si la ejecución de la RSI necesita un cambio de proceso, entonces el retardo será mayor que si la RSI puede ser ejecutada dentro del contexto del proceso actual. 2. La cantidad de tiempo necesario para realizar la RSI. Esto depende, generalmente, de la plataforma hardware. 3. El efecto del anidamiento de interrupciones. Si una RSI puede ser interrumpida por la llegada de otra interrupción, entonces el servicio se retrasará. El determinismo y la reactividad juntos conforman el tiempo de respuesta a eventos externos. Los requisitos de tiempo de respuesta son críticos para los sistemas de tiempo real, dado que estos sistemas deben cumplir requisitos de tiempo impuestos por individuos, dispositivos o flujos de datos ex- ternos al sistema. Control del usuario: En un sistema operativo no de tiempo real, el usuario no tiene control sobre la función de planificación o bien el sistema operativo sólo puede proporcionar una guía burda, como la agrupación de usuarios en más de una clase de prioridad. En un sistema de tiempo real es esencial permitirle al usuario un control de grano fino sobre la prioridad de la tarea. El usuario debe ser capaz de distinguir entre tareas duras y suaves y de especificar prioridades relativas dentro de cada clase. Un sistema de tiempo real puede también permitirle al usuario especificar características como el uso de paginación en los procesos, qué procesos deben residir siempre en memoria principal, qué algoritmos de transferencia a disco deben utilizarse, qué derechos tienen los procesos de las varias bandas de prioridad, etcétera. Fiabilidad: Un sistema de tiempo real ha de responder y controlar eventos en tiempo real. La pérdida o degradación de sus prestaciones puede tener consecuencias catastróficas. Operación de fallo suave: Se refiere a la habilidad del sistema de fallar de tal manera que se preserve tanta capacidad y datos como sea posible. Un sistema de tiempo real intentará o bien corregir el problema o bien minimizar sus efectos continuando, en todo caso, en ejecución. Un sistema de tiempo real es estable si, en los casos en los que sea imposible cumplir los plazos de todas las tareas, el sistema cumplirá los plazos de sus tareas más críticas, de más alta prioridad, aunque los plazos de algunas tareas menos críticas no se satisfagan. Para cumplir los requisitos precedentes, los sistemas operativos de tiempo real incluyen de forma representativa las siguientes características Cambio de proceso o hilo rápido. Pequeño tamaño (que está asociado con funcionalidades mínimas). Capacidad para responder rápidamente a interrupciones externas. Multitarea con herramientas para la comunicación entre procesos como semáforos, señales y eventos. Utilización de ficheros secuenciales especiales que pueden acumular datos a alta velocidad. Planificación expulsiva basada en prioridades. Minimización de los intervalos durante los cuales se deshabilitan las interrupciones. Primitivas para retardar tareas durante una cantidad dada de tiempo y para parar/retomar tareas. Alarmas y temporizaciones especiales. Lo más importante de un sistema de tiempo real es el planificador de tareas a corto plazo. En el diseño de tal planificador, la equidad y la minimización del tiempo medio de respuesta no son lo más importante. Lo que es importante es que todas las tareas de tiempo real duro se completen (o comiencen) en su plazo y que tantas tareas de tiempo real suave como sea posible también se completen (o comiencen) en su plazo.

Ventajas

Un Sistema Operativo en Tiempo Real es pequeño, rápido, receptivo y determinista. Esto significa que ejecutará tareas de manera rápida y eficiente, respondiendo como se espera cada vez. Debido a la importancia de su dispositivo host, la infraestructura RTOS es más segura y es menos probable que se bloquee o falle. Finalmente, un RTOS está orientado al desarrollador, lo que significa que continúa implementando actualizaciones que ayudan a los usuarios a codificar de manera más efectiva.

Componentes de un sistema operativo

Un sistema operativo posee tres componentes esenciales o paquetes de software que permiten la interacción con el hardware.

Sistema de archivos. Es el registro de archivos donde adquieren una estructura arbórea. Interpretación de comandos. Se logra con aquellos componentes que permiten la interpretación de los comandos, que tienen como función comunicar las órdenes dadas por el usuario en un lenguaje que el hardware pueda interpretar (sin que aquel que dé las órdenes conozca dicho lenguaje). Núcleo. Permite el funcionamiento en cuestiones básicas como la comunicación, entrada y salida de datos, gestión de procesos y la memoria, entre otros.

Procesador

Este tipo de sistemas operativos no es necesariamente eficiente en el sentido de tener una capacidad de procesamiento alta. El algoritmo de programación especializado, y a veces una tasa de interrupción del reloj alta pueden interferir en la capacidad de procesamiento.

Aunque para propósito general un procesador moderno suele ser más rápido, para programación en tiempo real deben utilizarse procesadores lo más predecibles posible, sin paginación. Todos estos factores en un procesador añade una aleatoriedad que hace que sea difícil demostrar que el sistema es viable, es decir, que cumpla con los plazos de tiempo para la ejecución de las tareas y la atención de los servicios o interrupciones.

Un sistema operativo de tiempo real puede ser implementado en microcontroladores o procesadores digitales de señal "DSP's", así, se pueden desarrollar aplicaciones embebidas en diferentes áreas de la electrónica.

Diseño

Hay dos diseños básicos:

Un sistema operativo guiado por eventos: sólo cambia de tarea cuando un evento necesita el servicio. Un diseño de compartición de tiempo: cambia de tareas por interrupciones del reloj y por eventos.

El diseño de compartición de tiempo gasta más tiempo de la CPU en cambios de tarea innecesarios. Sin embargo, da una mejor ilusión de multitarea. Normalmente se utiliza un sistema de prioridades fijas.

Uno de los algoritmos que suelen usarse para la asignación de prioridades es el Rate-Monotonic Schedule. Si el conjunto de tareas que tenemos es viable con alguna asignación de prioridades fijas, también es viable con el Rate-Monotonic Schedule, donde la tarea más prioritaria es la de menor periodo. Esto no quiere decir que si no es viable con Rate-Monotonic Schedule no sea viable con asignaciones de prioridad variable. Puede darse el caso de encontrarnos con un sistema viable con prioridades variables y que no sea viable con prioridades fijas.

Programación

En los diseños típicos, una tarea tiene tres estados: ejecución, preparada y bloqueada. La mayoría de las tareas están bloqueadas casi todo el tiempo. Solamente se ejecuta una tarea por UCP. La lista de tareas preparadas suele ser corta, de dos o tres tareas como mucho.

El problema principal es diseñar el programador. Usualmente, la estructura de los datos de la lista de tareas preparadas en el programador está diseñada para que cada búsqueda, inserción y eliminación necesiten interrupciones de cierre solamente durante un período muy pequeño, cuando se buscan partes de la lista muy definidas.

Esto significa que otras tareas pueden operar en la lista asincrónicamente, mientras que se busca. Una buena programación típica es una lista conectada bidireccional de tareas preparadas, ordenadas por orden de prioridad. Hay que tener en cuenta que no es rápido de buscar sino determinista. La mayoría de las listas de tareas preparadas sólo tienen dos o tres entradas, por lo que una búsqueda secuencial es usualmente la más rápida, porque requiere muy poco tiempo de instalación.

El tiempo de respuesta crítico es el tiempo que necesita para poner en la cola una nueva tarea preparada y restaurar el estado de la tarea de más alta prioridad.

En un sistema operativo en tiempo real bien diseñado, preparar una nueva tarea necesita de 3 a 20 instrucciones por cada entrada en la cola y la restauración de la tarea preparada de máxima prioridad de 5 a 30 instrucciones. En un procesador 68000 20MHz, los tiempos de cambio de tarea son de 20 microsegundos con dos tareas preparadas.

Cientos de UCP MIP ARM pueden cambiar en unos pocos microsegundos.

Objetos