Sunteți pe pagina 1din 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.


temporizacin: medida de tiempos y ejecucin peridica.
planificacin: 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.

Sistemas Operativos de Tiempo Real

Problemas de los S.O. tradicionales

1) Planificacin 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 ejecucin de

cualquier proceso depende de forma compleja e impredecible de la


carga del sistema y el comportamiento del resto de procesos.

Sistemas Operativos de Tiempo Real

Problemas de los S.O. tradicionales

2) Baja resolucin del temporizador:

Es comn asignar a procesos de usuario seales de alarma y

llamadas al sistema con slo 1 segundo de resolucin. No es


suficiente para T.R.

Las versiones ms modernas proporcionan medios de especificar

intervalos con mayor precisin.

Sistemas Operativos de Tiempo Real

Problemas de los S.O. tradicionales

3) Ncleo no desalojable:

Los procesos que se ejecutan en modo ncleo no pueden

ser desalojados dificultad implementar prioridades

Una llamada al sistema podra tardar demasiado tiempo

para poder admitirlo en procesamiento de tiempo real.

Sistemas Operativos de Tiempo Real

Problemas de los S.O. tradicionales


4) Deshabilitacin de interrupciones:
Sincronizacin: relacionada con el anterior

Para proteger los datos que podran ser accedidos asncronamente, pueden inhibirse

las interrupciones durante las secciones crticas (ms eficiente que los semforos).

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

adecuada.

5) Memoria virtual
Introduce niveles de impredecibilidad intolerable.

Sistemas Operativos de Tiempo Real

Arquitectura de un Sistema Operativo de propsito general

Memoria fsica ordenador comprende:


-> 1 espacio reservado p/usuarios
-> 1 espacio reservado p/kernel
Comunicacin entre programas en el espacio
usuario y espacio kernel se realiza a travs
de las llamadas al sistema (system calls).
Estas llamadas tpicamente lo que hacen es
acceder a recursos fsicos compartidos.
Accesos a los recursos hardware
controlados por el kernel tal que programas
de usuario no conozcan detalles fsicos de
los dispositivos.

Sistemas Operativos de Tiempo Real

Funciones ppales. s.o. propsito general:

Gestin y planificacin de procesos.

Gestin de memoria.

Interaccin con el hardware.

Servidor de ficheros.

Servidor de comunicaciones.

Sistemas Operativos de Tiempo Real

Funcin 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

Caracterstica 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 fluctuacin), variaciones en el


periodo normal de ocurrencia de eventos peridicos.

Todos los sistemas operativos tienden a tener una baja latencia y bajo jitter, pero los S.O.T.R.

requieren que esos valores estn determinados y no dependan de la carga del sistema.

Sistemas Operativos de Tiempo Real

Funcin principal requerida para un SOTR:


Proveer nivel de servicio adecuado a las aplicaciones que lo
requieran en un tiempo determinado.
Caracterstica 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

Sistemas Operativos de Tiempo Real

Latencia:

- Tiempo desde que ocurre un evento hasta que es tratado

Jitter:

- Fluctuacin en el perodo normal de ocurrencia de eventos peridicos

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.

Sistemas Operativos de Tiempo Real

Caractersticas de rendimiento S.O.T.R.

Latencia de un evento:

Interrupcin hardware:

tiempo desde que se produce la interrupcin hasta que se ejecuta la 1


instruccin rutina de tratamiento (puede haber retrasos por acceso al bus).

Interrupcin software:

tiempo desde que seal es generada hasta que la 1 instruccin tarea se


ejecuta (depende slo acceso a los registros del micro).

Sistemas Operativos de Tiempo Real

Latencia

Haga clic para modificar el estilo de texto del patrn

Segundo nivel
Tercer nivel
Cuarto nivel
Quinto nivel
12

Sistemas Operativos de Tiempo Real

Jitter

Perodo del jitter: variaciones en el tiempo de una tarea cuando se ejecuta


en forma repetitiva.

Haga clic para modificar el estilo de texto del patrn

Segundo nivel
Tercer nivel
Cuarto nivel
Quinto nivel

13

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 propsito 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 fsico 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 estn 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:

Atencin prioritaria en el kernel estndar (Preemptable kernel)

Modifica el kernel en profundidad tal que procesos de kernel ejecuten con mxima 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 metodologa

15

Sistemas Operativos de Tiempo Real

I ) Atencin prioritaria en el kernel estndar (Preemptable kernel)

La tarea de tiempo real est


controlada por el planificador del
kernel y es una ms 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 vdeo
donde el periodo de interrupciones
es del orden de 1 ms sino no
16

Sistemas Operativos de Tiempo Real

II ) Modificaciones sobre el kernel estndar (Patch)


4 estrategias modificacin 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 cdigo del kernel para aadir
caractersticas de tiempo real.

17

Sistemas Operativos de Tiempo Real

II ) 1) Micro-kernel

Aade un segundo kernel (capa


interfaz entre el hardware y el kernel
estndar) o HAL (Hardware Abstraction
Layer).
Esta capa, micro-kernel, controla la
ejecucin de las tareas de tiempo real
y ejecuta el kernel estndar como una
tarea en background (el kernel
estndar slo 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 Real


II ) 2) Nano-kernel
Similar micro-kernel, pero evita
patente de Yodaiken.
Este nano-kernel nicamente
captura las interrupciones hardware
y permite la ejecucin 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 Real


II ) 3) Extensin con un nuevo kernel de acceso a los
recursos (Recurso-kernel)
Aade 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 estndar como
a los procesos de usuario.
El recurso kernel no slo 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 Real


II ) 4) Extensiones POSIX de tiempo real aadidas al
kernel
Esta estrategia consiste en modificar directamente el kernel estndar de Linux
para aadir libreras que implementan las extensiones de tiempo real de
POSIX. El resultado es un kernel conforme al estndar IEEE 1003.1d. No
aade un segundo kernel.
Las modificaciones realizadas al kernel consisten en la implementacin de
relojes, seales, semforos, memoria compartida, planificador por prioridades,
etc segn 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 estndar IEEE 1003.1d.
TimeSys Linux. Aade al "preemptable kernel" un planificador de
kernel que proporciona una latencia y un jitter menor de 100s. El
parche con el planificador no proporciona una alta resolucin en los
21 repetitivas.
relojes, que es necesaria para tareas de tiempo real

Sistemas Operativos de Tiempo Real


Rendimiento

22

Sistemas Operativos de Tiempo Real


RT Linux (Real Time Linux)
Desarrollo de Yodaiken y Barabanov (Instituto de Minera y Tecnologa de Nuevo
Mxico). 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 ncleo de Linux para ofrecer nuevas llamadas al sistema y


hacerlo predecible, se construye directamente sobre el procesador un pequeo
ncleo adicional (microkernel) con un planificador.

Sobre este ncleo Linux se ejecuta como una tarea ms compartiendo el


procesador con otras tareas (background), cuando no hay otras que ejecutar.

As, es posible instalar y desinstalar el planificador de tiempo real dinmicamente,


pues est compilado como un mdulo.

23

Sistemas Operativos de Tiempo Real


RT Linux (Real Time Linux)

El kernel de Linux (como cualquier S.O.) suele deshabilitar


interrupciones como medio de sincronizacin o para implementar
secciones crticas.

Si en ese lapso se produce una interrupcin de reloj, sta quedar


bloqueada se pierde precisin 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.
24

Sistemas Operativos de Tiempo Real


RT Linux (Real Time Linux)

Planificador por defecto de RT-Linux basado en prioridades estticas


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 impresin de
que el sistema se ha congelado (colgado).

RT-Linux funciona simultneamente como un sistema de tiempo real


y un S.O. clsico. 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.
25

Sistemas Operativos de Tiempo Real


RT Linux (Real Time Linux)
Caractersticas:
Incluye un planificador con desalojo y prioridades fijas, para la ejecucin de tareas crticas de

tiempo real.

Las tareas pueden ser peridicas o bien activadas mediante una interrupcin (espordicas o
aperidicas).
Incorpora mecanismos para la comunicacin con los procesos no crticos, 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 ncleo de Linux en una tarea ms, pero de segundo plano (de prioridad mnima).

26

Sistemas Operativos de Tiempo Real


RT Linux (Real Time Linux)
Caractersticas:
A diferencia de otras aproximaciones para disear un S.O. de tiempo

real, RT-Linux no aade nuevas llamadas al sistema ni modifica ninguna


de las ya existentes. Tampoco es una biblioteca para el programador.

RT-Linux se sita entre el hardware y el propio sistema operativo,

creando una mquina virtual para que Linux pueda seguir funcionando.

RT-Linux toma el control de todas las interrupciones, e implementa un

gestor de interrupciones por software.

27

Sistemas Operativos de Tiempo Real


RT Linux (Real Time Linux)
Caractersticas:
Las tareas de tiempo real (rt-task):
Comparten el mismo espacio de memoria que el ncleo, por lo que pueden

acceder a todas las variables y funciones de ste, aunque se podran 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 instruccin

de procesador y tienen acceso a todos los puertos de entrada/salida.

Las pginas de memoria de datos y programa no pueden sufrir intercambio con

disco.

28

Sistemas Operativos de Tiempo Real


RT Linux (Real Time Linux)

Estructura de Linux:

29

Sistemas Operativos de Tiempo Real


RT Linux (Real Time Linux)
Estructura de RT Linux:

30

Sistemas Operativos de Tiempo Real


RT Linux (Real Time Linux)

31

Sistemas Operativos de Tiempo Real


RT Linux (Real Time Linux)
Las tareas de tiempo real en RT-Linux son cdigo que se ejecuta en modo
supervisor de la CPU, para tener acceso directo a los dispositivos de E/S.
Para ejecutar procesos en modo supervisor no basta con hacerlo desde la
cuenta root, sino que adems es necesario que sea parte del cdigo del
ncleo.
El cdigo del ncleo no se pagina ) una tarea no puede ser expulsada a
disco.
Es necesario programar las tareas como mdulos de carga (el propio RT-Linux
se ha hecho como un mdulo).

32

Sistemas Operativos de Tiempo Real


RT Linux (Real Time Linux)
Un mdulo de carga dinmico es un programa escrito en C que:
Carece de funcin main.
En su lugar tiene una funcin para iniciar el mdulo init_module() ) se
ejecuta al cargarlo y desde ella se puede llamar a otras.
Tiene una funcin para finalizar el mdulo cleanup_module() se
ejecuta al descargar el mdulo.
El ncleo no dispone de salida estndar --> no es posible usar las
funciones 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 ncleo, de echo, como cuando arranca
Linux.
33

Sistemas Operativos de Tiempo Real


RT Linux (Real Time Linux)
Los mdulos cargables son "trozos de sistema operativo" que se pueden
insertar y extraer en tiempo de ejecucin.
En la mayora 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 slo carga en memoria el ejecutable vmlinuz, con lo mnimo
indispensable, y luego en tiempo de ejecucin pueden cargarse y descargarse
los mdulos que se requieran, sin recompilar ni rearrancar la PC.
Una vez cargado un mdulo, 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 ncleo.
34

Sistemas Operativos de Tiempo Real


RT Linux (Real Time Linux)
Para poder ejecutar tareas de tiempo real hay que cargar el mdulo del
planificador --> Linux pasa a ser una tarea de tiempo real (RT_TASK) con la
prioridad ms baja.
Si durante la ejecucin de otras tareas de tiempo real se produce una
interrupcin que debe atender Linux, se guarda temporalmente hasta el
momento en que Linux sea la tarea activa.
Una tarea RT_TASK se carga igual que cualquier mdulo.

35

Sistemas Operativos de Tiempo Real


RT Linux (Real Time Linux)
La idea de RT-Linux es la de dividir una aplicacin de tiempo real en dos
partes:
Parte de tiempo real: Incluye el cdigo que es crtico en tiempo y debe
mantenerse lo ms simple posible.
Parte de no-tiempo real: Realiza el procesamiento de los datos, incluyendo
interfaces de usuario as como el archivo y distribucin de los datos.
RT-Linux proporciona colas de tiempo real (RT-FIFO) para la comunicacin
de ambas partes as como entre tareas de tiempo real. Son similares a las
tuberas UNIX.
Las FIFO son globales a todo el sistema y se identifican por un nmero.
Las tareas RT_TASK hacen uso de las FIFO usando las funciones de la API
para comunicacin con tareas de usuario.
36

S-ar putea să vă placă și