SO en Tiempo Real

36
Sistemas Operativos de Tiempo Real Un sistema operativo para tiempo real es un sistema operativo capaz de garantizar los requisitos temporales de los procesos que controla. Sistemas operativos convencionales no apropiados para tiempo real – no tienen un comportamiento determinista – no permiten garantizar los tiempos de respuesta. Un sotr debe proveer: concurrencia: procesos ligeros (threads) con memoria compartida. temporización: medida de tiempos y ejecución periódica. planificación: prioridades fijas con desalojo, acceso a recursos con protocolos de herencia de prioridad. dispositivos de E/S: acceso a recursos hardware e interrupciones. Existen varios sistemas operativos para tiempo real: QNX, Lynx, VxWorks, RT- Linux, MarteOS, KURT e incluso soluciones para usar Windows NT como RTOS.

description

Sistemas operativos en tiempo real

Transcript of SO en Tiempo Real

Sistemas Operativos de Tiempo Real

Un sistema operativo para tiempo real es un sistema operativo capaz de garantizar los requisitos temporales de los procesos que controla.

Sistemas operativos convencionales no apropiados para tiempo real

– no tienen un comportamiento determinista

– no permiten garantizar los tiempos de respuesta.

Un sotr debe proveer:

– concurrencia: procesos ligeros (threads) con memoria compartida.

– temporización: medida de tiempos y ejecución periódica.

– planificación: prioridades fijas con desalojo, acceso a recursos con

protocolos de herencia de prioridad.

– dispositivos de E/S: acceso a recursos hardware e interrupciones.

Existen varios sistemas operativos para tiempo real: QNX, Lynx, VxWorks, RT-Linux, MarteOS, KURT e incluso soluciones para usar Windows NT como RTOS.

1

Sistemas Operativos de Tiempo Real

Problemas de los S.O. tradicionales

1) Planificación para tiempo compartido

)Uso de planificadores (schedulers) que aseguran uso equitativo del tiempo de CPU entre todos los procesos.

) Es conveniente para un usuario que usa el sistema desde una terminal.

) No para procesamiento de tiempo real, ya que la ejecución de cualquier proceso depende de forma compleja e impredecible de la carga del sistema y el comportamiento del resto de procesos.

2

Sistemas Operativos de Tiempo Real

Problemas de los S.O. tradicionales

2) Baja resolución del temporizador:

Es común asignar a procesos de usuario señales de alarma y llamadas al sistema con sólo 1 segundo de resolución. No es suficiente para T.R.

Las versiones más modernas proporcionan medios de especificar intervalos con mayor precisión.

3

Sistemas Operativos de Tiempo Real

Problemas de los S.O. tradicionales

3) Núcleo no desalojable:

Los procesos que se ejecutan en modo núcleo no pueden ser desalojados dificultad implementar prioridades

Una llamada al sistema podría tardar demasiado tiempo para poder admitirlo en procesamiento de tiempo real.

4

Sistemas Operativos de Tiempo Real

Problemas de los S.O. tradicionales

4) Deshabilitación de interrupciones:

Sincronización: relacionada con el anterior

Para proteger los datos que podrían ser accedidos asíncronamente, pueden inhibirse las interrupciones durante las secciones críticas (más eficiente que los semáforos).

Sin embargo, pone en peligro la posibilidad de responder a eventos externos de forma adecuada.

5) Memoria virtual

Introduce niveles de impredecibilidad intolerable.

5

Sistemas Operativos de Tiempo Real

Arquitectura de un Sistema Operativo de propósito general

• Memoria física ordenador comprende:

-> 1 espacio reservado p/usuarios

-> 1 espacio reservado p/kernel

• Comunicación entre programas en el espacio usuario y espacio kernel se realiza a través de las llamadas al sistema (system calls).

• Estas llamadas típicamente lo que hacen es acceder a recursos físicos compartidos.

• Accesos a los recursos hardware controlados por el kernel tal que programas de usuario no conozcan detalles físicos de los dispositivos.

6

Sistemas Operativos de Tiempo Real

Funciones ppales. s.o. propósito general:

Gestión y planificación de procesos.

Gestión de memoria.

Interacción con el hardware.

Servidor de ficheros.

Servidor de comunicaciones.

7

Sistemas Operativos de Tiempo Real

Función principal y requerida para un S.O.T.R.:

proveer de un nivel de servicio adecuado a las aplicaciones que requieran una respuesta en un intervalo de tiempo determinado

Característica principal S.O.T.R. :

respuesta ante eventos internos ó externos, tales como interrupciones hardware externas, interrupciones software internas ó interrupciones de reloj internas, es decir los requerimientos temporales.

Una de las medidas de rendimiento de un S.O.T.R. es la latencia, ó tiempo desde que ocurre el evento y éste es tratado. La otra medida es el jitter (o fluctuación), ó variaciones en el periodo normal de ocurrencia de eventos periódicos.

Todos los sistemas operativos tienden a tener una baja latencia y bajo jitter, pero los S.O.T.R. requieren que esos valores estén determinados y no dependan de la carga del sistema.

8

Sistemas Operativos de Tiempo Real

Función principal requerida para un SOTR:

Proveer nivel de servicio adecuado a las aplicaciones que lo requieran en un tiempo determinado.

Característica principal de un SOTR:

Respuesta ante eventos internos y externos:

- interrupciones hardware externas

- interrupciones software o de reloj internas

Medidas de rendimiento SOTR:

Latencia y Jitter

9

Sistemas Operativos de Tiempo Real

Latencia:

- Tiempo desde que ocurre un evento hasta que es tratado

Jitter:

- Fluctuación en el período normal de ocurrencia de eventos periódicos

Todos los S.O. tienden a tener bajos valores de latencia y jitter.

En los S.O.T.R. esos valores deben estar determinados y no depender de la carga del sistema.

10

Sistemas Operativos de Tiempo Real

Características de rendimiento S.O.T.R.

Latencia de un evento:

Interrupción hardware:

tiempo desde que se produce la interrupción hasta que se ejecuta la 1ª instrucción rutina de tratamiento (puede haber retrasos por acceso al bus).

Interrupción software:

tiempo desde que señal es generada hasta que la 1ª instrucción tarea se ejecuta (depende sólo acceso a los registros del micro).

11

Sistemas Operativos de Tiempo Real

Latencia

Haga clic para modificar el estilo de texto del patrón

Segundo nivelTercer nivel

Cuarto nivel Quinto nivel

12

Jitter

Período del jitter: variaciones en el tiempo de una tarea cuando se ejecuta en forma repetitiva.

Haga clic para modificar el estilo de texto del patrón

Segundo nivelTercer nivel

Cuarto nivel Quinto nivel

13

Sistemas Operativos de Tiempo Real

Sistemas Operativos de Tiempo Real

Arquitectura de un Sistema Operativo de Tiempo Real

Objetivo SOTR: reducir latencia y jitter interrupciones, tanto internas como externas, al orden de microsegundos.

Es decir, la parte fundamental para convertir un s.o. de propósito general en SOTR es el manejo de las interrupciones.

Procesamiento Interrupciones por el kernel

1) tarea que se encarga de leer los datos del dispositivo físico y escribirlos en un buffer

(manejador de interrupciones) 2) tarea que se encarga de pasar los datos del buffer a otro para que sean accesible por el

kernel

Así, cuando el manejador está ejecutando, todas las interrupciones están inhibidas

retardo impredecible servicio de otras interrupciones y por tanto en latencia y jitter.

14

Sistemas Operativos de Tiempo Real

Arquitectura de un Sistema Operativo de Tiempo Real

Para reducir la latencia y jitter se han desarrollado distintas alternativas que modifican el kernel (Linux). Hay 2 principales:

Atención prioritaria en el kernel estándar (Preemptable kernel)

Modifica el kernel en profundidad tal que procesos de kernel ejecuten con máxima prioridad pudiendo interrumpir a los de menor prioridad en acceso recursos.

Requiere cambios en manejadores de interrupciones tal que interrupciones de alta prioridad no sean bloqueadas por el manejador de interrupciones mientras está manejando otra de menor prioridad.

Resultado: latencia y jitter del orden de 1 milisegundo en un Pentium a 100 Mhz.

A partir de la version 2.5.4 del kernel de Linux se incorpora esta metodología.

15

Sistemas Operativos de Tiempo Real

I ) Atención prioritaria en el kernel estándar (Preemptable kernel)

La tarea de tiempo real está controlada por el planificador del kernel y es una más de las tareas que controla el kernel.

Esta tarea hace referencia a los procesos de tiempo real en el espacio de usuario.

El planificador sabe que las tareas de tiempo real tiene mayor prioridad que las tareas que no son de tiempo real.

Adecuada para audio y vídeo donde el periodo de interrupciones es del orden de 1 ms sino no

16

Sistemas Operativos de Tiempo Real

II ) Modificaciones sobre el kernel estándar (Patch)

4 estrategias modificación del kernel (Linux) para proveer capacidades de tiempo real:

• 3 agregan un segundo kernel (kernel dual) para manejar las tareas de tiempo real.

• 1 modifica directamente el código del kernel para añadir características de tiempo real.

17

Sistemas Operativos de Tiempo Real

II ) 1) Micro-kernel

Añade un segundo kernel (capa interfaz entre el hardware y el kernel estándar) o HAL (Hardware Abstraction Layer).

Esta capa, micro-kernel, controla la ejecución de las tareas de tiempo real y ejecuta el kernel estándar como una tarea en background (el kernel estándar sólo ejecuta cuando no hay tareas de tiempo real pendientes).

Microkernel intercepta interrupciones hardware y asegura que las tareas de tiempo real ejecuten con la mayor prioridad posible minimizando latencia.

Ejemplos: RTLinux y RTAI.18

Sistemas Operativos de Tiempo RealII ) 2) Nano-kernel

Similar micro-kernel, pero evita patente de Yodaiken.

Este nano-kernel únicamente captura las interrupciones hardware y permite la ejecución paralela de varios sistemas operativos por encima de él.

En este sentido, no desemboca directamente en un SOTR, sino que, simplemente es una capa intermedia entre el hardware y un sistema operativo, que puede ser de tiempo real ó no.

Ejemplo: ADEOS.

19

Sistemas Operativos de Tiempo RealII ) 3) Extensión con un nuevo kernel de acceso a los recursos (Recurso-kernel)

Añade un kernel de forma que éste proporciona una puerta de acceso a los recursos, tales como al sistema de ficheros, al puerto paralelo, etc, tanto para el kernel estándar como a los procesos de usuario.

El recurso kernel no sólo captura las interrupciones sino que proporciona un mecanismo donde los programas de usuario pueden requerir, reservar y garantizarse un porcentaje finito de los recursos como pueden ser de CPU, memoria, etc.

20

Sistemas Operativos de Tiempo RealII ) 4) Extensiones POSIX de tiempo real añadidas al kernel

Esta estrategia consiste en modificar directamente el kernel estándar de Linux para añadir librerías que implementan las extensiones de tiempo real de POSIX. El resultado es un kernel conforme al estándar IEEE 1003.1d. No añade un segundo kernel.

Las modificaciones realizadas al kernel consisten en la implementación de relojes, señales, semáforos, memoria compartida, planificador por prioridades, etc según lo especificado en IEEE 1003.1d.

Existen 2 aproximaciones diferentes para esta estrategia:

• KURT (The Kansas University Real Time Linux) que únicamente implementa los relojes conforme al estándar IEEE 1003.1d.

• TimeSys Linux. Añade al "preemptable kernel" un planificador de kernel que proporciona una latencia y un jitter menor de 100µs. El parche con el planificador no proporciona una alta resolución en los relojes, que es necesaria para tareas de tiempo real repetitivas. 21

Sistemas Operativos de Tiempo Real

Rendimiento

22

Sistemas Operativos de Tiempo Real

Desarrollo de Yodaiken y Barabanov (Instituto de Minería y Tecnología de Nuevo México). FSM Labs 1er. propietario. En 2007 comprado por Wind River.

RT Linux ejecuta Linux como thread de menor prioridad que tareas de t.r. Así, las t. de t.r. y manejador de interrupciones no son retrasados por tareas no t.r.

En lugar de modificar núcleo de Linux para ofrecer nuevas llamadas al sistema y hacerlo predecible, se construye directamente sobre el procesador un pequeño núcleo adicional (microkernel) con un planificador.

Sobre este núcleo Linux se ejecuta como una tarea más compartiendo el procesador con otras tareas (background), cuando no hay otras que ejecutar.

Así, es posible instalar y desinstalar el planificador de tiempo real dinámicamente, pues está compilado como un módulo.

RT Linux (Real Time Linux)

23

Sistemas Operativos de Tiempo Real

El kernel de Linux (como cualquier S.O.) suele deshabilitar interrupciones como medio de sincronización o para implementar secciones críticas.

Si en ese lapso se produce una interrupción de reloj, ésta quedará bloqueada se pierde precisión temporal.

En RT-Linux se han sustituido todas las llamadas a cli, sti e iret (instrucciones ensamblador que modifican el estado de las interrupciones) por S_CLI, S_STI y S_IRET que las emulan, de forma que Linux no puede nunca deshabilitar las interrupciones.

RT Linux (Real Time Linux)

24

Sistemas Operativos de Tiempo Real

Planificador por defecto de RT-Linux basado en prioridades estáticas y trata a la “tarea Linux” como la de menor prioridad.

Si tareas de tiempo real consumen todo el tiempo del procesador, la “tarea Linux” no recibe tiempo de procesador y da la impresión de que el sistema se ha “congelado” (“colgado“).

RT-Linux funciona simultáneamente como un sistema de tiempo real y un S.O. clásico. Se puede navegar por la red o leer el correo mientras se muestrean y controlan las variables de un sistema externo conectado a la PC.

RT Linux (Real Time Linux)

25

Sistemas Operativos de Tiempo Real

Características:

– Incluye un planificador con desalojo y prioridades fijas, para la ejecución de tareas críticas de tiempo real.

– Las tareas pueden ser periódicas o bien activadas mediante una interrupción (esporádicas o aperiódicas).

– Incorpora mecanismos para la comunicación con los procesos no críticos, que son los de Linux normal. Estos mecanismos son colas FIFO.

– Las tareas de tiempo real se ejecutan con la CPU en modo supervisor (pueden acceder a puertos E/S, reprogramar interrupciones, etc...).

– Convierte al núcleo de Linux en una tarea más, pero de segundo plano (de prioridad mínima).

RT Linux (Real Time Linux)

26

Sistemas Operativos de Tiempo Real

Características:

A diferencia de otras aproximaciones para diseñar un S.O. de tiempo real, RT-Linux no añade nuevas llamadas al sistema ni modifica ninguna de las ya existentes. Tampoco es una biblioteca para el programador.

RT-Linux se sitúa entre el hardware y el propio sistema operativo, creando una máquina virtual para que Linux pueda seguir funcionando.

RT-Linux toma el control de todas las interrupciones, e implementa un gestor de interrupciones por software.

RT Linux (Real Time Linux)

27

Sistemas Operativos de Tiempo Real

Características:

Las tareas de tiempo real (rt-task):

Comparten el mismo espacio de memoria que el núcleo, por lo que pueden acceder a todas las variables y funciones de éste, aunque se podrían producir interbloqueos o condiciones de carrera.

No pueden hacer uso de las llamadas al sistema de Linux.

Se ejecutan en modo supervisor, esto es, pueden ejecutar cualquier instrucción de procesador y tienen acceso a todos los puertos de entrada/salida.

Las páginas de memoria de datos y programa no pueden sufrir intercambio con disco.

RT Linux (Real Time Linux)

28

Sistemas Operativos de Tiempo Real

RT Linux (Real Time Linux)

Estructura de Linux:

29

Sistemas Operativos de Tiempo RealRT Linux (Real Time Linux)

Estructura de RT Linux:

30

Sistemas Operativos de Tiempo RealRT Linux (Real Time Linux)

31

Sistemas Operativos de Tiempo RealRT Linux (Real Time Linux)

Las tareas de tiempo real en RT-Linux son código que se ejecuta en modosupervisor de la CPU, para tener acceso directo a los dispositivos de E/S.

Para ejecutar procesos en modo supervisor no basta con hacerlo desde lacuenta root, sino que además es necesario que sea parte del código del núcleo.

El código del núcleo no se pagina ) una tarea no puede ser expulsada a disco.

Es necesario programar las tareas como módulos de carga (el propio RT-Linux se ha hecho como un módulo).

32

Sistemas Operativos de Tiempo RealRT Linux (Real Time Linux)

Un módulo de carga dinámico es un programa escrito en C que:

– Carece de función main.

– En su lugar tiene una función para iniciar el módulo init_module() ) se ejecuta al cargarlo y desde ella se puede llamar a otras.

– Tiene una función para finalizar el módulo cleanup_module() se ejecuta al descargar el módulo.

El núcleo no dispone de salida estándar --> no es posible usar lasfunciones de E/S por pantalla habituales -por ej. printf()-, en su lugar usa printk(), que imprime sobre un buffer circular de mensajes, donde se escriben todos los mensajes del núcleo, de echo, como cuando arranca Linux.

33

Sistemas Operativos de Tiempo RealRT Linux (Real Time Linux)

Los módulos cargables son "trozos de sistema operativo" que se pueden insertar y extraer en tiempo de ejecución.

En la mayoría de las implementaciones de UNIX, la única forma de acceder al hardware (puertos, memoria, interrupciones, etc.) es mediante los ficheros especiales, teniendo previamente instalado el manejador del dispositivo (device driver).

Al arrancar Linux sólo carga en memoria el ejecutable vmlinuz, con lo mínimo indispensable, y luego en tiempo de ejecución pueden cargarse y descargarse los módulos que se requieran, sin recompilar ni rearrancar la PC.

Una vez cargado un módulo, forma parte del propio sistema operativo, por lo que puede usar todas las funciones y acceder a todas las variables y estructuras de datos del núcleo.

34

Sistemas Operativos de Tiempo RealRT Linux (Real Time Linux)

Para poder ejecutar tareas de tiempo real hay que cargar el módulo del

planificador --> Linux pasa a ser una tarea de tiempo real (RT_TASK) con la prioridad más baja.

Si durante la ejecución de otras tareas de tiempo real se produce unainterrupción que debe atender Linux, se guarda temporalmente hasta elmomento en que Linux sea la tarea activa.

Una tarea RT_TASK se carga igual que cualquier módulo.

35

Sistemas Operativos de Tiempo RealRT Linux (Real Time Linux)

• La idea de RT-Linux es la de dividir una aplicación de tiempo real en dospartes:

– Parte de tiempo real: Incluye el código que es crítico en tiempo y debe mantenerse lo más simple posible.

– Parte de no-tiempo real: Realiza el procesamiento de los datos, incluyendo interfaces de usuario así como el archivo y distribución de los datos.

• RT-Linux proporciona colas de tiempo real (RT-FIFO) para la comunicaciónde ambas partes así como entre tareas de tiempo real. Son similares a lastuberías UNIX.

• Las FIFO son globales a todo el sistema y se identifican por un número.

• Las tareas RT_TASK hacen uso de las FIFO usando las funciones de la APIpara comunicación con tareas de usuario.

36