Se caracterizan por presentar requisitos especiales en cinco áreas generales:
ð
Determinismo
ð
Sensibilidad
ð
Control
del usuario
ð
Fiabiidad
ð
Tolerancia
a los fallos
Un sistema operativo es determinista
si realiza las operaciones en instantes fijos y predeterminados o en intervalos
de tiempos predeterminados. Cuando compiten varios procesos por los recursos y
por el tiempo del procesador, depende, en primer lugar, de la velocidad con la
que pueda responder a las interrupciones y en segundo lugar, de si el sistema
posee suficiente capacidad para gestionar todas
las peticiones en el tiempo requerido.
Un sistema operativo para operar de forma
determinista es el retardo máximo que se produce de la llegada de la interrupción
de un dispositivo de alta prioridad hasta que comienza el servicio.
La sensibilidad.
El determinismo hace referencia a cuanto tiempo consume un sistema operativo en
reconocer una interrupción. La sensibilidad se refiere a cuanto tiempo consume
un sistema operativo en dar servicio a la interrupción después de reconocerla.
Las características de la sensibilidad son, entre
otras:
1-
La cantidad de tiempo
necesario para iniciar la gestión de la interrupción y comenzar la ejecución
de su rutina de tratamiento (ISR, interrupt service routine).
2-
La cantidad de tiempo
necesario para ejecutar la ISR. Generalmente, depende de la plataforma del
hardware.
3-
El efecto del tratamiento de
interrupciones. El servicio se retrasara si una ISR puede ser interrumpida por
la llegada de otra interrupción.
El determinismo
y la sensibilidad
forman conjuntamente el tiempo de respuesta a sucesos externos. Los requisitos
en tiempo de respuesta son críticos ya que cada sistema debe cumplir los
requisitos de tiempo impuesto por los individuos, dispositivos y flujos de datos
externos al sistema.
El control
del usuario es generalmente mucho mayor en un sistema operativo en
tiempo real que en un sistema operativo ordinario. En sistema operativo típico
que no sea en tiempo real, el usuario no tiene control sobre la función de
planificación del sistema operativo. En un sistema en tiempo real resulta
esencial permitir al usuario un control preciso sobre la prioridad de las
tareas. El usuario debe poder distinguir entre tareas rígidas y flexibles y
especificar prioridades relativas dentro de cada clase. Un sistema en tiempo
real también permitirá al usuario especificar características. Que procesos
deben estar siempre residente en la memoria principal.
La fiabilidad
es normalmente mucho mas importante en sistemas en tiempo real que en los que no
lo son. Un fallo transitorio en un sistema que no sea en tiempo real puede
resolverse simplemente volviendo a reiniciar el sistema. Un fallo de un
procesador en un multiprocesador que no sea en tiempo real produce una reducción
del nivel de servicio hasta que se repara o sustituye el procesador averiado.
Pero un sistema en tiempo real responde y controla sucesos en tiempo real. Las
perdidas o degradaciones del rendimiento pueden tener consecuencias catastróficas,
que pueden ir desde perdida financieras hasta daños en equipo e incluso perdida
de vidas humanas.
La tolerancia
a los fallos es una característica que hace referencia a la capacidad
de un sistema de conservar la máxima capacidad y los máximos datos posibles en
caso de fallos por Ej., un sistema UNIX clásico típico, cuando detecta datos
corruptos en el núcleo, genera un mensaje de error en la consola del sistema,
vuelca el contenido de la memoria en el disco para un análisis posterior y
finaliza la ejecución del sistema. Un sistema en tiempo real intentara corregir
el problema o minimizar sus efectos mientras continua la ejecución.
Un aspecto importante a la tolerancia a los fallos es
la estabilidad. Un sistema en tiempo
real si, en los casos en los que es imposible cumplir todos los plazos de
ejecución de las tareas, el sistema cumple los plazos de las tareas mas
criticas y de mayor prioridad, incluso si no se cumple los de alguna tarea menos
critica.
Para cumplir los requisitos anteriores los sistemas operativos actuales en tiempo real incluyen normalmente las siguientes características:
ü
Cambios
rápidos de procesos o hilos.
ü
Pequeño
tamaño (con una mínima funcionalidad asociada).
ü
Capacidad
de responder rápidamente a interrupciones externas.
ü
Multitarea
con herramientas de comunicación entre procesos, como semáforos, señales y
sucesos.
ü
Uso
de archivos secuénciales especiales que puedan acumular datos a alta velocidad.
ü
Planificación
preferente basadas en prioridades.
ü
Reducción
de intervalos en los que están inhabilitadas las interrupciones.
ü
Primitivas
para demorar tareas durante un tiempo fijo y para detenerlas y reanudarlas.
ü
Alarmas
especiales y temporizadores.
El corazón de un sistema en tiempo real es el planificador de tares a corto plazo. Lo que resulta importante es que todas las tareas rígidas de tiempo real acaben (o comiencen) en su plazo y que también acaben (o comiencen) en su plazo tantas tareas flexibles de tiempo real como sea posible.
La mayoría de los sistemas operativos actuales en
tiempo real son incapaces de trabajar directamente con plazos. En su lugar, se
han diseñado para ser tan sensibles como sea posible a las tareas de tiempo
real, de forma que, cuando se aproxima un plazo se pueda planificar rápidamente
la traerá. Las aplicaciones de tiempo real normalmente necesitan tiempos de
respuesta deterministas en un rango de varios milisegundo, las aplicaciones al límite,
como los simuladores de aviones militares, por Ej. presentan a menudo
restricciones en un rango de diez a cien microsegundos.