Title: Tema 4
1Tema 4 Programación de tiempo real en Linux
(parte II)
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
2Tema 4 Programación de tiempo real en Linux
(parte II)
- Linux y el tiempo real
- Identificación de latencias
- Latencia de planificación
- Duración del planificador
- Tiempo real en espacio de usuario
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
34.8 Linux y el tiempo real
- Linux es un sistema operativo de propósito
general. - Cuando se fue introduciendo en los sistemas
empotrados, surgió la necesidad de dotarle de
tiempo real. - La diferencia clave entre un sistema operativo de
propósito general como Linux y uno de tiempo real
(RTOS) es el comportamiento temporal
determinístico de los servicios del RTOS. - La temporalidad deteminista significa que toda
latencia (tiempo empleado por estos servicios)
está acotada. - Surge el patch de Montavista, que reduce las
latencias de algunos servicios, de modo que Linux
se comporta ahora como un sistema operativo de
tiempo real acrítico (soft real-time)
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
44.8 Linux y el tiempo real
- La naturaleza sin tiempo real de Linux se basa
en los siguientes aspectos
- Alta latencia de interrupción
- Alta latencia del planificador, debida a su
naturaleza no expulsora. - Servicios como los mecanismos IPC, asignación de
memoria, etc, no tienen un comportamiento
determinista - Otras caraterísticas como la memoria virtual
hacen de Linux no determinista en su tiempo de
respuesta
- Surge el patch de Montavista, que reduce las
latencias de algunos servicios, de modo que Linux
se comporta ahora como un sistema operativo de
tiempo real acrítico (soft real-time)
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
54.9 Identificación de latencias
- Discutamos los aspectos de este patch. El mejor
método es trazar el flujo de una interrupción e
identificar las latencias. - Supongamos que
- El núcleo está ejecutando un servicio
- La tarea del disco espera bloqueada a que la
operación de E/S termine.
- Se produce entonces la interrupción del disco
- Ejecuta la rutina de interrupción
- Esta despierta a la tarea y la pone en la cola de
ready - El núcleo llega a un punto donde puede invocar al
planificador (la función schedule). - schedule concede el procesador a la tarea del
disco
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
64.9 Identificación de latencias
- El tiempo de respuesta es el tiempo entre el
instante en que la controladora del disco eleva
la interrupción y el instante que la tarea del
disco toma el procesador. - Este tiempo de respuesta en Linux es la suma de
cuatro
- Latencia de la interrupción
- Duración de la rutina de interrupción
- Latencia del planificador. Es el tiempo que pasa
desde que termina la rutina de interrupción hasta
que se invoca al planificador. - Duración del planificador
- Discutimos ahora las causas de estas latencias y
qué se ha hecho en Linux para mejorarlas
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
74.9 Identificación de latencias
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
84.10 Latencia de planificación
- Es la más importante. Ha sido reducida en el
núcleo 2.6 por el patch de Montavista
- En el núcleo 2.4 las contribuciones principales a
esta latencia eran
- La naturaleza no expulsora del núcleo
El planificador se invocaba tras servir las
interrupciones y las llamadas al sistema
- Deshabilitacion de interrupciones
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
94.10 Latencia de planificación
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
104.10 Latencia de planificación
- Debido a la naturaleza no expulsora del núcleo.
Si un proceso está en el núcleo ejecutando una
llamada al sistema, el planificador no se invoca
hasta que ésta termina. - Así, un proceso de alta prioridad no podía
explusar a uno de baja prioridad procesador
mientras durase su llamada al sistema. - Por lo tanto, la latencia de planificador podía
durar entre decenas y cientos de milisegundos,
según la duración de la llamada al sistema. - También se invoca al planificador cuando a un
proceso se le acaba su cuantum. Si las
interrupciones estaban deshabilidadas durante
mucho tiempo, la planificación se dilataba.
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
114.10 Latencia de planificación
- El patch de Montavista posibilita la expulsión de
un proceso mientras ejecuta en el núcleo.
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
124.11 Duración del planificador
- El mayor problema del planificador original era
su comportamiento no determinista. - Todas las tareas se mantenían en un cola única,
de modo que encontrar la de mayor prioridad
(bucle de bondad) - Cuando expiraban los cuanta de todas las tareas
ejecutables, estos se recalculaban de nuevo
(bucle de recálculo) - El costo de ambos bucles aumentaba linealmente
con el número de tareas ejecutables.
- El nuevo planificador O(1) frente al antiguo
O(n)- se introdujo en el núcleo 2.4.20. Es
determinista.
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
134.11 Duración del planificador
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
144.11 Duración del planificador
El tiempo del cambio de contexto
- Medir el tiempo de contexto de Linux ha sido uno
de los pasatiempos favoritos de los entusiastas
de Linux Cómo escala este tiempo comparado con
los sistemas comerciales?
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
154.11 Duración del planificador
- Las entidades planificables en Linux son
- Hilos del núcleo. Ejecutan en modo núcleo
solamente - Procesos e hilos de usuario. Los hilos de usuario
comparten un mismo espacio de direccionamiento y
tienen pilas separadas. Comparten manejadores de
señal, sockets, etc.
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
164.11 Duración del planificador
- El planificador no distingue entre ninguna de los
tres - El tiempo de cambio de contexto, sí varía entre
procesos e hilos, porque implica los siguiente
- Conmutar a un nuevo conjunto de registros y pila,
algo común entre procesos e hilos. - Conmutar de un área de memoria virtual a otra,
requerido sólo por los procesos. Causa que la
table de páginas (TLB) sea recargada con los
valores de nuevo proceso, una operación que
consume tiempo.
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
174.11 Tiempo real en espacio de usuario
- El patch expulsor de Montavista y el planificador
O(1) hacen de Linux un sistema de tiempo real
acrítico pero, que hay de las aplicaciones de
usuario sobre Linux? - El estándar IEEE 1003.1b define una interfaz que
soporta la portabilidad de aplicaciones con
requisitos de tiempo real
- Planificación con prioridades fijas y clases de
planificación - Bloqueo de memoria
- Memoria compartida
- Señales de tiempo real
- Colas de mensajes
- Semáforos
- Relojes y temporizadores
- Entrada-salida asíncrona
Soportado por Linux desde el comienzo
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos
184.11 Tiempo real en espacio de usuario
- La responsabilidad del desarrollador de
aplicaciones de tiempo real sobre Linux es sacar
partido a su característica de sistema de tiempo
real acrítico, por ejemplo, para construir
aplicaciones multimedia de rendimiento
satisfacotrio. - Para ello debe comprender la interfaz de tiempo
real y utilizar de forma correcta la
implementación que de ella hace Linux.
Master Paralelismo y computación Grid. Sistemas
Empotrados Distribuidos