Este documento presenta una introducción a los sistemas de tiempo real. Explica que estos sistemas deben reaccionar a estímulos del entorno dentro de intervalos de tiempo predeterminados. Luego, describe varios temas clave relacionados con los sistemas de tiempo real como su clasificación, ejemplos, requisitos temporales, tolerancia a fallos y planificación de tareas. Finalmente, incluye definiciones más detalladas de conceptos como sistemas de tiempo real estrictos y no estrictos, y diferencias con los sistemas tradicional
2. Resumen
Contenidos dictados durante la totalidad de las clases
presenciales de la asignatura “Programación en Tiempo
Real”, publicados aquí para que los alumnos puedan
acceder a ellos de manera remota en caso de tener
inquietudes y no haber podido preservarlos en algún
medio de almacenamiento personal (nube, pendrive,
etc.) mientras estaban en el aula.
5. Generalidades STR y SDTR - Definición
Un sistema de tiempo real es un sistema que tiene
que reaccionar a estímulos del ambiente (incluso
el avance del tiempo físico) dentro de intervalos
marcados por el ambiente.
6. Sistemas de Tiempo Real -Temas
• Qué es un Sistema en Tiempo Real?(RTS)
• Características de un RTS
• Clasificación
• Ejemplos
• Entorno
• El Tiempo
• Tolerancia a fallos
• Concurrencia
• Soporte de RTS
• Planificación de RTS
• Aplicaciones de RTS
• Diseño de RTS
7. Generalidades STR y SDTR - Definición
• Un sistema de tiempo real debe ser lo suficientemente rápido para cumplir los
requerimientos temporales, pero que un sistema sea rápido no implica que sea de
tiempo real
• La rapidez de un sistema de tiempo real está determinada por la naturaleza de los
estímulos con los que tiene que tratar, puede variar de acuerdo a la aplicación.
• Tiempo real significa trabajar con aspectos del sistema como:
– distribución física de los componentes
– manejo de estímulos impredecibles
– fallos en los componentes
– incertidumbre acerca del entorno
– efectos de estos aspectos sobre el rendimiento
– robustez del sistema
– Asignación de prioridades
– Expiración de procesos
– Primitivas de comunicaciones
– Concurrencia aparente
8. Generalidades STR y SDTR – Requerimientos
de RT
• Tiempo de procesamiento
• Requerimientos de tiempos
• Velocidad de dispositivos
• Requerimientos de performance
• Comunicación con el hardware dedicado
• Interrupciones
• poll
9. Generalidades STR y SDTR – Requerimientos
de RT
• Hard, Soft y firme real-time
• Comunicación mundo físico
• Acontecimientos del mundo real
• Correctitud
• Tolerancia a fallas
• Facilidades para STR y SDTR
• SO
• Lenguaje
• Metodología
10. Generalidades STR – Másdefiniciones
Un sistema de tiempo real es un sistema informático
que
• Interacciona repetidamente con su entorno físico: Responde a los estímulos que
recibe del mismo dentro de un plazo de tiempo determinado
• Para que el funcionamiento del sistema sea correcto no basta con que las acciones
sean correctas, sino que tienen que ejecutarse dentro del intervalo de tiempo
especificado (corrección lógica y temporal)
• Si bien debe ser suficientemente rápido para cumplir los requerimientos, que un
sistema sea rápido no implica que sea de tiempo real
• Los requerimiento de rapidez estarán fijados por el tipo de estímulos con los que
trate
Otras características:
• Grandes y complejos.
• Manipulación de magnitudes físicas
• Extremadamente fiable y seguro.
• Herramientas para el manejo de tiempo real
• Implementación eficiente
• Concurrencia
11. Generalidades STR – Másdefiniciones-2
• Planificación de tareas dirigida al cumplimiento de las restricciones de tiempo en
vez de al rendimiento.
• Control de dispositivos externos.
• Mayor uso de la E/S, ya que por lo general controla un proceso físico o químico, lo
que implica interactuar con sensores, detectores y actuadores.
• Procesamiento de mensajes que pueden llegar en intervalos irregulares, algunos
periódicos y otros aleatorios.
• Seguridad y confiabilidad son conjuntas en sistemas de este tipo, debe haber
detección y control de condiciones de falla a fin de evitar daños y un
funcionamiento sin interrupciones. Debido a que muchas veces estos sistemas no
cuentan con supervision humana (autónomos) el manejo de excepciones es crítico.
Se espera que un STR se ejecute en forma continua, automática y segura, teniendo
un impacto en los costos de desarrollo y la seguridad.
• Modelización de condiciones concurrentes, ya que al mezclarse gran número de
eventos periódicos y esporádicos es frecuente su concurrencia como la de los
procesos cuya ejecución desencadenen dichos eventos, con lo que se debe tratar la
alocación y control de procesos concurrentes.
12. Generalidades STR – Másdefiniciones-3
• Manejo de las comunicaciones entre procesos.
• Protección de datos compartidos.
• Manejo de requerimientos de tiempos y rendimiento.
• Testeo y debug de procesos concurrentes.
• Diseño de simuladores del hardware que no se encuentra
disponible durante la fase de pruebas.
• Selección del hardware adecuado para soportar el diseño del
software, frecuentemente estos sistemas utilizan hardware
especialmente diseñado.
• Distribución de tareas (Sistemas Distribuidos de Tiempo Real).
• Por lo general se trata de Sistemas Embebidos, o sea
sistemas que forman parte de un sistema/entorno mayor
dentro del cual están insertados y que controlan.
13. Otra definición
• Son sistemas en los que el tiempo entre una entrada
y una salida son críticos, por lo general porque la
entrada corresponde a algún evento (estímulo) en el
mundo físico y la salida (acción) está relacionada con
dicho evento
• El tiempo entre entrada y salida debe ser suficiente
pequeño para no superar el plazo máximo
• Estos plazos pueden ser de ms para un misil o
segundos para un sistema de control de navegación
de un barco
14. STR Estrictos/ NoEstrictos
• STR estrictos o hard real time: la corrección temporal
es crítica.
El tiempo de respuesta es muy importante y no puede
ser sacrificado por una mejora en otros aspectos.
En ciertos sistemas (p.e. sistemas de seguridad
críticos) la corrección temporal es tan importante que el
criterio de corrección lógica puede ser relajado en aras
de alcanzar un tiempo de respuesta determinado
Ejemplo: frenos abs (AntiBlockierSystem en alemán,
sistema de antibloqueo de frenos)
15. STR Estrictos/ No Estrictos -2
• STR no estrictos o soft real time: la corrección temporal
no es crítica.
Fallos ocasionales en generar un resultado dentro del
tiempo fijado no produce consecuencias serias en el
funcionamiento general del sistema. Las tareas de
tiempo real no estrictas son ejecutadas tan rápido como
es posible, pero no están forzadas por tiempos límite
absolutos, pudiendo ser sacrificada la corrección
temporal bajo ciertas circunstancias
se pueden perder plazos de vez en cuando
el valor de la respuesta decrece con el tiempo
Ejemplo: Control de temperatura en aire acondicionado.
16. STR Estrictos/ No Estrictos -3
• STR Firme o Firm real time: la probabilidad de que la respuesta se reciba antes
de un tiempo estipulado no supera cierto nivel previamente acordado.
se pueden perder plazos ocasionalmente
una respuesta tardía no tiene valor
Ejemplo: trasmisión digital de video
• Un STR puede estar formado por tareas críticas y acríticas
• Una misma tarea puede tener tiempos límite estrictos y no estrictos.
• La respuesta a un evento de peligro puede tener un tiempo límite no estricto de
50 ms (para una reacción con eficiencia óptima) y un tiempo límite estricto de 200
ms (para garantizar que no se produce un daño en el equipo o en las personas).
• Entre estos dos límites, el valor o utilidad de la salida decrece según aumenta el
tiempo.
• Tipos de relajación en la corrección temporal:
Si no se cumple el tiempo límite el resultado no tiene ningún valor (pérdidas ocasionales de
respuestas a eventos)
Que el servicio llegue tarde ocasionalmente pero éste sea válido dentro de un cierto intervalode
tiempo.
17. Tolerancia a Fallas
Corrección: Lógica – Temporal
Los sistemas pueden fallar, es decir exhibir un
comportamiento para el cual no fueron diseñados. Ya que los
fallos son inevitables, un sistema de tiempo real debe ser
robusto frente a ellos, comportamiento denominado ‘tolerancia
a fallos’.
Tipos de Sistemas:
• Sistemas con parada segura (“fail-safe”): en caso de fallo
colocan al sistema en un estado seguro (sistemas críticos)
• Sistemas con degradación aceptable (“fail-soft”):
presentan una pérdida parcial de funcionalidad o prestaciones
en caso de fallo, pudiendo seguir funcionando a pesar de dicha
merma
18. STR Eventos /Tiempo
• Arquitectura controlada por eventos o interrupciones (“event-
driven” o “interrupt-driven”).
Establece la ejecución de un componente o tarea basándose
en la aparición de una interrupción o señal generada por un
evento externo. Constituyen un mecanismo mucho más eficaz
para responder ante eventos externos no regulares.
• Arquitectura controlada por tiempo (“time-driven”).
Opera de acuerdo a los ciclos del reloj o relojes del sistema.
Este tipo de sistemas se utiliza cuando es preciso la ejecución
de tareas periódicas o la ejecución de tareas mediante
temporizadores. Son más sencillos y robustos (interfaces entre
subsistemas muy controlados y con un funcionamiento
independiente basado en
relojes locales)
19. Generalidades STR ySDTR
• Hay STR grandes y pequeños
Tiene diferentes formas de diseñar, gerenciar su desarrollo, y emplean
diferentes plataformas
• Ejemplos de STR
Control de planta química
Señalización
• Ferrocarriles
• Autopistas
Sistemas de defensa
Ensamblado de automotores
SCADA (Supervisory Control and DataAdquisition)
Robots
Sistema de inyección de automotores
Artículos del hogar
• Alarmas
• Lavadoras
21. Tareas de tiempo real
• Las actividades de un sistema de tiempo real se
llaman tareas
• Tienen varios tipos de propiedades
funcionales: qué hacen
temporales: cuándo lo hacen
fiabilidad, seguridad, etc.
• El comportamiento temporal de las tareas se
especifica mediante sus atributos temporales
cuándo se ejecutan: esquema de activación
qué plazo tienen para ejecutar cada acción
23. Atributos temporales
• Activación
–periódica: a intervalos regulares, con período T
–aperiódica: cada vez que ocurre un suceso
determinado
esporádica: separación mínima entre activaciones T
irregular, en rafagas
• Plazo de respuesta
– absoluto: tiempo límite para terminar
– relativo: intervalo desde la activación
• Se trata de garantizar que todas las veces que se
ejecuta una tarea termina dentro de plazo
24. Diferencia con los SistemasTradicionales
• Mejorar
Utilización de recursos
Tiempos de respuesta
Prioridades
• Dispositivos externos
• Mensajes a intervalos irregulares
• Modelar procesos concurrentes
25. Diferencia con los Sistemas Tradicionales - 2
• Comunicaciones entre procesos
• Testing
• Construcción de simuladores
• Ejecución
Continua
Automática
Segura
26. Ejemplos de STR -1
• Procesos de control
Asegurar flujo controlando la válvula sin que se
sobrecargue el pipe
27. Ejemplos de STR -2
Procesos de control
Rol en un ambiente completo de control
28. Ejemplos de STR -3
• Manufacturas
Incremento en la productividad y bajos costos
29. Ejemplos de STR -4
• Comunicaciones, Comando y Control
similares aTermino militar pero tiene características
reservaciones de pasajes, cajeros, etc.
30. Ejemplos de STR -5
• Sistemas Embebidos Generalizados
Computadora enlazada directamente en equipos físicos.
31. Sistemas Embebidos
• Un sistema de tiempo real forma parte de un sistema más amplio
(Sistema Empotrado o Embedded System).
• El RTS debe adaptarse a la dinámica del sistema controlado, también
llamado planta.
32. Ejemplo: Control devuelo
En cada iteración periódica:
• Leer datos de sensores
• Verificar condiciones de alarma
• Calcular control externo: inclinación, balanceo,
señalización de luces
• Transmitir los resultados de salida a los comandos
• Ejecutar los comandos
• Esperar al principio del siguiente ciclo
33. Ejemplos de STR
• La temperatura es entrada, del tipo analógico, se adquiere el valor con un
transductor. Habrá que normalizar su valor y convertirlo a digital-binario.
• El manejo del calefactor es una salida digital, al igual que el sentido de giro del
ventilador. La velocidad será una salida analógica .
34. Entorno de unSTR
• Entorno activo
comprende los operadores que intervienen en el comportamiento del
sistema modificando el modo de operación.
• Entorno pasivo
comprende a los usuarios que están solo interesados en el servicio
proporcionado y al ambiente exterior que no tiene nada que ver con
la existencia del sistema.
• Un Sistema empotrado (“embedded system”) únicamente tiene un
entorno pasivo y es un componente autónomo que forman parte de
un sistema mayor. Ejemplos:
• Disco duro, Lavadora
• Automóvil, Sonda espacial, Equipos médicos
35. Tolerancia a fallas
• Los sistemas puede tener un comportamiento para el cual no fueron diseñados
• Como los fallos son inevitables, un sistema de tiempo real debe ser robusto frente a
ellos, comportamiento denominado ‘tolerancia a fallos’.
• Tipos de Sistemas:
• Sistemas críticos (no pueden fallar, no tienen “fail-safe”):
• Se utiliza redundancia (deja de funcionar una parte y un componente gemelo lo suplanta) y
votación por mayoría (las salidas de componentes gemelos se comparan y se toma comosalida
correcta la mayoritaria)
• Se aumenta así la confiabilidad del sistema.
• Ejemplo: sistema de navegación de un avión (1 falla por 10e9 horas de vuelo, un millón deaños
volando!!!).
• Sistemas con parada segura (“fail-safe”):
• en caso de fallo colocan al sistema en un estado seguro (sistemas críticos)
• Ejemplo: robot va a posición de home.
• Sistemas con degradación aceptable (“fail-soft”):
• presentan una pérdida parcial de funcionalidad o prestaciones en caso de fallo, pudiendo seguir
funcionando a pesar de dicha merma.
• Ej: semáforos en amarillo.
36. STR Eventos /Tiempo
• Arquitectura controlada por eventos o interrupciones (“event-
driven” o “interrupt-driven”).
• Establece la ejecución de un componente o tarea basándose en la
aparición de una interrupción o señal generada por un evento externo
• Constituyen un mecanismo mucho más eficaz para responder ante
eventos externos no regulares.
• Arquitectura controlada por tiempo (“time-driven”).
• Opera de acuerdo a los ciclos del reloj o relojes del sistema.
• Este tipo de sistemas se utiliza cuando es preciso la ejecución de tareas
periódicas o la ejecución de tareas mediante temporizadores.
• Son más sencillos y robustos (interfaces entre subsistemas muy
controlados y con un funcionamiento independiente basado en relojes
locales)
37. Concurrencia
• La concurrencia se define como la capacidad de un sistema de
mantener varias tareas en estados intermedios de su ejecución
• Sistemas de tiempo compartido
• Sistemas multiprocesadores
• Sistemas distribuidos
• Expresión de la concurrencia en un programa:
• El programador
• El lenguaje de programación (ADA95, Occam, Pearl...)
• El sistema operativo (POSIX)
38. Soporte de TiempoReal
• Los sistemas se diseñan con unos márgenes de capacidad
sobrantes, de forma que el comportamiento en “el peor caso” no
produzca retardos en los periodos críticos de operación del sistema.
• Soporte que permita:
• Especificar el tiempo en el cual debe ejecutarse cada tarea
• Especificar el tiempo en el cual debe ser completada cada tarea
• Responder a situaciones en las cuales no se pueden cumplir todos los
requerimientos temporales
• Responder a situaciones en las cuales los requerimientos temporales
puedan variar dinámicamente
39. Soporte de Tiempo Real: Lenguajes de
programación
• Lenguaje ensamblador:
• Muy Eficiente
• Difícil de implementar la concurrencia.
• Lenguajes secuenciales de alto nivel
• C, C++, Java, Pascal, Fortran, Jovial, Coral, RTL/2
• Portables, y fáciles de programar
• No incorporan soporte para la concurrencia (debe ser soportado por el
S.O.)
• Lenguajes concurrentes de alto nivel
• ADA95, Modula-2, PEARL, Mesa, CHILL
• Soporte de la concurrencia y especificaciones temporales en el propio
lenguaje
40. Generalidades STR y SDTR – Requerimientos
de RT
• Predictibilidad (Determinismo)
– Cuando se activa una tarea, debe ser posible determinar con certeza
cuándo completará su ejecución
– Aún cuando el sistema esté sobrecargado
• Teniendo en cuenta:
• Estado del sistema (incluyendo S.O. y sus recursos)
• Necesidades de recursos de la tarea
• Predicción del Comportamiento
• Criticas y Periódicas
• Supervisión del tiempo de ejecución de procesos
• Sincronización y comunicación
• Evitar deadlock
• Seguridad
45. Hardware – Comunicación interprocesadores- WAN-
LAN
• Características de comunicación
• Enlaces físicos
• Protocolos
• Software
• Hardware
• Topología de Red
46. Hardware – Comunicacióninterprocesadores-Buses
• Aspectos relativos
• Especificación estándar
• Compatibilidad futura
• Competencia por el bus
• Ancho de banda
• Número de módulos conectados
• Tipos de conectores
• Ejemplo
• Multibus II (80x86)
• VMEbus (680X0)
• CAN
• MIL 1553
47. Bibliografía
Título Autor Editorial Fecha
Real-Time Systems and Programming Languages Burns, Wellings Addison-
Wesley
1997
Developing Real-Time Embedded Software S. Ellison Wiley 1994
A practical guide to real-time systems development Silvia Goldsmith
Real-time systems and programming languages Burns, Wellings Addison-
Wesley
2009
Sistemas de Tiempo Real Cátedra de
Sistemas de
TiempoReal
Facultad de
Informática -
UNLP
49. Interrupciones
• Son señales enviadas al microprocesador que causan la suspención
temporaria de lo que están haciendo para realizar otras tareas que
requieren atención inmediata.
• Algunas interrupciones están destinadas a tareas comunes tales
como captura de teclas o apertura de archivos. La consecuencia es
que un programa es interrumpido y luego deberá reaunudarse.
• Las interrupciones pueden ser:
• Sincrónicas: son las generadas por la CPU al ejecutar instrucciones
• Asincrónicas: son las generadas por otros dispositivos y no están alineadas al
clock del sistema
• Intel:
• excepciones = sincrónicas
• interrupciones = asincrónicas
50. Interrupciones
• Intel proporciona una instrucción que deshabilita las interrupciones
enmascarables
• Hay algunas que no puede deshabilitar (no enmascarables)
• Por lo general son errores de hardware
• El flag IF del registro EFLAGS determina el estado de las interrupciones
• Se garantiza que no se pierden interrupciones
• Estas son generadas luego que se habiliten nuevamente
• Cuando una interrupción es detectada por el procesador, se debe parar la
ejecución de lo que se estaba haciendo y ejecutar el código correspondiente
de atención de interrupciones
• Esto genera un kernel control path, que ejecuta en la estructura del proceso
que estaba ejecutando
• Los registros de ejecución son salvados en el Kernel Mode Stack del
proceso
51. Interrupciones de Hardware
• Son iniciadas por el hardware o por los circuitos de la placa del sistema,
por una placa de expansión o a través de un puerto conectado a un
dispositivo externo. Ejemplos de eventos que las inician son:
• Pulsos del chip de timer de la computadora.
• Una señal del módem.
• Una señal del mouse.
• La atención de interrupciones debe satisfacer:
• Las interrupciones deben ser atendidas de forma rápida, toda tarea que no sea
necesaria se debe diferir para otro momento
• Deben ser posible ejecutarlas en forma anidada
• Deben ejecutar, todo lo que sea posible, con las interrupciones habilitadas
• En las arquitecturas antiguas estas señales de interrupción son
manejadas por un chip controlador de interrupciones programable (PIC,
programmable interrup controller).
52. Interrupciones de Hardware antiguo
Mem
Tabla de vectores
4 pos x vector
Desde 0 h/1023
Con la direccion
En 4 bytes
De la rutina
De manejo de
interrupción
CPUPIC Mem
Int0 _
Int1 _
Int2 _
Int3 _
Int4 _
Int5 _
Int6 _
Int7 _
Int _
IntA _ IntA _
Int _
Bus de datos
EOI
IMR
IRR
ISR
Int0
Int..
Int7
53. Interrupciones de Hardware antiguo
Información, que será guardada en la pila o stack
• El puntero a instrucción IP que apunta a la próxima instrucción a ser
ejecutada. Este puntero indica un offset relativo a un valor
almacenado en el procesador en el registro CS, segmento de código,
y son estos dos valores (CS:IP) los que son almacenado en la pila,
ocupando cuatro bytes. Debera ser almacenado para poder saber
cual es la próxima instrucción a ejecutar al reanudar la ejecución del
programa suspendido.
• El registro de flags del procesador, ya que en la atención de la
interrupción se ejecutará un programa que modificará el estado de
los mismos. Este registro ocupa dos bytes en la pila.
• Los registros del microprocesador que se vayan a usar durante la
ejecución de la atención de la rutina, ocupando dos bytes en la pila
cada registro.
54. Interrupciones de Hardware antiguo
• Las primeras dos informaciones son (CS:IP y flags) son
almacenadas automáticamente en la pila cuando una
interrupción ocurre.
• Los registros que se vayan a modificar deben ser guardados
por el manejador de interrupción (interrupt handler), o rutina de
servicio de interrupción (ISR, interrupt service routine). No son
almacenados automáticamente pues algunos manejadores de
interrupción alteran algún registro solamente. Al finalizar, la
propia rutina deberá restablecer el valor de dichos registros y
ejecutar un IRET (interrupt return) que restablece los otros
registros almacenados en forma automática. Con el CS:IP
restablecido, el programa interrumpido reanuda su
funcionamiento nuevamente.
55. Interrupciones de Hardware antiguo
Chip controlador de interrupciones programable (PIC)
• El chip Intel 8259 controlador de interrupciones programable
(PIC) es usado en las Pcs para manejar las interrupciones de
hardware.
• Puede haber mas de un chip, en este caso el chip esclavo
tiene su salida conectada a la IRQ2 del chip master.
• Las interrupciones tienen prioridades de acuerdo al numero.
La IRQ0 se ejecutara antes, interrumpiéndola si ya esta en
curso, que la IRQ1.
• Como el chip esclavo está conectado a IRQ2, quedan las
prioridades IRQ0 a IRQ2, IRQ8 a IRQ15, y IRQ3 a IEQ7.
56. Funcionamiento del PIC
• El chip tiene 3 registros.
• El registro de requerimientos de interrupción cambia un bit a 1 en la
posición de la interrupción requerida.
• El chip entonces consulta el registro de interrupciones en servicio,
asegura el cumplimiento de las prioridades.
• Luego consulta al registro de mascara de interrupciones para ver si
esta habilitada o enmascarada esa interrupción.
• Este ultimo registro es el único al que accede un programador, a través
del port 21h para l chip master y a través del puerto A1h para el esclavo.
• Además esta el registro de comando de interrupciones, en el puerto 20h
y A0h para ambos chips, que nos muestra que interrupción esta
completada.
57. Acceso a los registros
Se usan las instrucciones
• INP y OUT en Basic
• port en Pascal
• outporb e inportb en C Borland
• inp y outb en C microsoft
• In y Out en Assembler.
58. Interrupciones de Software
• Son iniciadas por el software.
• Un programa llama una interrupción, por ejemplo para
realizar la tarea de colocar un carácter en la pantalla.
• Como es el software el que decide cuando, en realidad
no se esta interrumpiendo nada.
• Ambos tipos de interrupción trabajan con el mismo
mecanismo, la tabla de vectores, que se usa para
iniciarlas.
59. Ejecución de interrupciones
• La figura muestra la secuencia que ejecuta la maquina la
ejecutar la interrupción 21h. Esta llama a las funciones
del DOS, que son iniciadas de acuerdo al valor que
contiene el registro Al.
Int 21h
CS:IP a
Stack
Tabla
vector 21h
Ejecutar
manejador
de int
Restaurar
CS:IP
Continuar
programa
60. Programando manejadores
• Para declarar en C una rutina de interrupción escribimos
void interrupt mi_manejador ()
{
/* codigo*/
}
• Para instalar el manejador en el lugar del vector 0x62
setvect(0x62, mi_manejador);
• Para declarar una variable en la cual una función pueda retornar un vector
void interrupt ( *vector_original) ();
• Para obtener y conservar el vector original y poderlo restaurar podemos
escribir
vector_original = getvect ( 0x62 );
61. Tabla de vectores (Memoria)
• Existe un registro (idtr) que tiene la dirección base de la tabla y el largo
• Es posible definir hasta 256 entradas
• Se tiene 3 tipos de descriptores:
• Task gate
• Interrupt gate (interrupciones)
• Trap gate (excepciones)
• La tabla es creada al iniciarse el sistema y luego los device drivers de los
dispositivos la actualizan con los manejadores correspondientes
• Vector: dirección de cuatro bytes (CS:IP) de un manejador de interrupciones, que
está ubicados en mem. convencional, ROM BIOS mem. superior, y
COMMAND.COM.
• Los primeros vectores: interrupciones de hardware.
• Comienza 8 vectores mas allá que el nro de vector ( int 0 empieza en
0000:0020h)
• 8 posiciones inferiores: tipo especial de interrupciones, las excepciones
62. Tabla de vectores (Memoria)
• Las ocho posiciones inferiores se reservan para un tipo especial de
interrupciones, las excepciones.
• Son interrupciones iniciadas por el CPU cuando se producen errores que
no puede manejar (división por cero, una instrucción que no reconoce,
etc.).
• Hay interrupciones cuyos manejadores ya están programados en la
BIOS, ubicados en la memoria alta en ROM como parte del hardware y
las del DOS, en el COMMAND.COM.
• El procesador esta preparado para recibir interrupciones a través de su
entrada INT o a través de la instrucción de igual nombre.
• Algunas interrupciones llevan a cabo varias tareas de acuerdo al valor
de algún registro, por ejemplo el AH, indicara que función es llamada
cuando se produce la INT1Ah.
63. Interrupciones
• Cuando una interrupción es detectada e informada al procesador, éste para
la ejecución actual y ejecuta el código correspondiente de atención de
interrupciones
• Esto genera un kernel control path, que ejecuta en la estructura del proceso
que estaba ejecutando
• Los registros de ejecución son salvados en el Kernel Mode Stack del proceso
• La atención de interrupciones debe satisfacer:
• Las interrupciones deben ser atendidas de forma rápida
• Toda tarea que no sea necesaria se debe diferir
• Poder ejecutarlas en forma anidada
• Deben ejecutar, todo lo que sea posible, con las interrupciones habilitadas
64. Excepciones
• Las excepciones son generadas por:
• Errores en la programación (p.ej.: división por cero)
• Condiciones anómalas (p.ej.: fallo de página)
• Si son de errores de programación se le envía una señal al proceso que la
generó, el proceso debe capturar esta señal, sino se ejecuta el manejador
por defecto que finaliza ejecución
• Si se da una condición anómala, el núcleo deberá reestablecer la condición
para continuar la ejecución
• Se clasifican en:
• Detectadas por el procesador
• Fallos: Pueden ser corregidos y retoman ejecución la instrucción que
generó el fallo
• Traps: utilizada, en mayor media, para debugging
• Aborts: un error grave ocurrió como un fallo del hardware
66. Manejadores de interrupciones
• El device driver de los dispositivos es el encargado de registrar la rutina de
interrupción
• Esta tarea involucra invocar la rutina:
request_irq
unsigned int irq
SA_INTERRUPT, SA_SAMPLE_RANDOM, SA_SHIRQ
irqreturn_t (*handler)(int, void *, struct pt_regs*)
unsigned long irqflags
const char * devname
void * dev_id
Donde:
• irq: Número de línea de interrupción
• dev_id: El que se le paso cuando se declaró el handler
• regs: estructura que contiene los registros antes de la interrupción
67. Manejadores de interrupciones
• El código debe ser bastante limitado
• Solo debería tomar en cuenta copiar la información a memoria y
liberar el PIC
• No tiene necesidad de ser reentrante: la interrupción queda
deshabilitada en procesador
• Es posible que en una línea se comparta por varios dispositivos. En
estos casos el sistema invocará todas las rutinas correspondientes y
solo deberá ejecutarse la del dispositivo adecuado
• La rutina hace uso del kernel mode stack del proceso interrumpido y,
como se pueden anidar, se debe hacer un uso lo más limitado posible
69. Ejecución del manejador
asmlinkage int handle_IRQ_event(unsigned int irq, struct pt_regs
*regs, struct irqaction *action{
int status = 1;
int retval = 0;
if (!(action->flags & SA_INTERRUPT))
local_irq_enable();
do { status |= action->flags;
retval |= action->handler(irq, action->dev_id, regs);
action = action->next;
} while (action);
if (status & SA_SAMPLE_RANDOM)
add_interrupt_randomness(irq);
local_irq_disable();
return retval;
}
70. Habilitación de interrupciones
• En el handler es posible deshabilitar las interrupciones en forma
momentánea:
local_irq_disable() /* cli */
…
local_irq_enable() /* sti */
• También es posible deshabilitar alguna interrupción específica:
disable_irq(unsigned int irq)
enable_irq(unsigned int irq)
71. Interrupciones anidadas
• Las interrupciones no tiene una jerarquía
• Cuando surgen deben ser atendida en forma inmediata
• Es posible que se aniden
• De esta forma, se gana:
• Mayor fluidez en el trabajo de los dispositivos
• Tener un modelo de interrupciones sin privilegios (facilita el código, lo hace
portable)
72. Manejo de interrupciones
• Salvar registros en kernel mode stack
• Invocar el manejador
• Retornar desde la excepción
Previo a la invocación del manejador se configura el error en
la estructura del proceso. Posteriormente, se invoca envía la
señal al proceso para ser atendida
current->thread.error_code = error_code;
current->thread.trap_no = vector;
force_sig(sig_number, current);
Si el proceso no implementa la rutina, se ejecuta el handler
del núcleo del sistema
73. Bottom Halves
• Rutinas de atención de interrupciones:
• Ejecución asincrónica, interrumpen otro código (incluso otras rutinas de
atención)
• Ejecutan una primera parte con su interrupción deshabilitada (a veces con
todas deshabilitadas) por lo que deben ejecutarse lo más rápido posible
• Son bastante dependiente del tiempo ya que trabajan con el hardware
• No corren en el contexto de un proceso, por lo que no pueden boquearse
• Ejecutan y hacen lo mínimo necesario, delegando para otro momento las
tareas que no requieran ser realizadas cuando se genera la interrupción
• La segunda parte ejecuta con todas las interrupciones habilitadas
74. Bottom Halves
• Varios sistemas operativos implementan el concepto de
top half y bottom half
• En el bottom half se realizan las tareas que no requieran
un tiempo especifico para ejecutar o que generen una
degradación del sistema
• En Linux existen tres formas de ejecutar el bottom half de
una interrupción:
− Softirqs
− Tasklets
− Work queues
75. Softirqs
• Los softirqs son compiladas estáticamente en el sistema operativo
(kernel/softirq.c)
• Linux soporta hasta 32 softirq
• El núcleo solo implementa 6 (linux/interrupt.h):
- HI_SOFTIRQ (prioridad 0)
- TIMER_SOFTIRQ (prioridad 1)
- NET_TX_SOFTIRQ (prioridad 2)
- NET_RX_SOFTIRQ (prioridad 3)
- SCSI_SOFTIRQ (prioridad 4)
- TASKLET_SOFTIRQ (prioridad 5)
• Son reservadas para tareas que requieran un tiempo crítico (red, discos scsi)
76. Ejecución de softirqs
• Ejecutan con las interrupciones habilitadas y no pueden bloquearse
• En un procesador solamente ejecuta un softirq a la vez
• En sistema multiprocesador se permiten que ejecuten en paralelo, incluso la
misma rutina de atención
• Por eso tener especial cuidado proteger datos globales de la rutina
• Los softirq deben ser marcadas antes de su ejecución (raising the softirq)
• El handler antes de finalizar su ejecución marca su correspondiente softirq para
que sea ejecutada en el futuro
• Las softirq pendientes son controladas y ejecutadas en:
• El retorno de un handler de una interrupción (do_softirq)
• El kernel thread ksoftirqd
• En otras partes del código del núcleo que verifica si existen softirq pendientes
(subsistema de red)
77. Ejecución de softirqs
• La ejecución de los softirq se realiza en la función do_softirq:
pending = local_softirq_pending();
cpu = smp_processor_id();
restart:
set_softirq_pending(0);
local_irq_enable(); h = softirq_vec;
do {
if (pending & 1)
h->action(h);
h++; pending >>= 1;
} while (pending);
local_irq_disable();
pending = local_softirq_pending();
if (pending && --max_restart)
goto restart;
if (pending)
wakeup_softirqd();
78. Kernel thread ksoftirq
• Linux implementa un kernel thread (ksoftirq) que ejecuta con
prioridad estática mínima (19)
• Esto permite que, ante un potencial ráfaga de interrupciones,
los procesos de usuarios puedan ejecutar
• Por cada procesador se dispone de un ksoftirq (ksoftirq/n)
• El kernel thread verifica si existen softirq pendientes, en cuyo
caso invoca a la rutina do_softirq
• Si no hay pendientes, se bloquea e invoca al planificador para
que asigne a otra tarea
79. Kernel thread ksoftirq
static int ksoftirqd(void * __bind_cpu) {
set_user_nice(current, 19);
set_current_state(TASK_INTERRUPTIBLE);
while (!kthread_should_stop()) {
preempt_disable();
if (!local_softirq_pending()) {
preempt_enable_no_resched();
schedule(); preempt_disable();
}
__set_current_state(TASK_RUNNING);
while (local_softirq_pending()) {
do_softirq();
preempt_enable_no_resched();
cond_resched(); preempt_disable();
}
preempt_enable(); set_current_state(TASK_INTERRUPTIBLE);
}
80. Tasklets
• Son construidas sobre los softirq
• Son softirq dinámicas
• Se utilizan para tareas que no requieren una urgencia de tiempo
• Son representadas por HI_SOFTIRQ y TASKLET_SOFTIRQ en los tipos de
softirq
• Su estructura se define como:
struct tasklet_struct {
struct tasklet_struct * next; // Próximo de la lista
unsigned long state; // Estado (SCHED, RUN)
atomic_t count; // (<> 0 deshabilitada, 0 para ejecutar
void (*func) (unsigned long); // Puntero a función
unsigned long data; // argumento
}
81. Planificación de Tasklets
• Las Tasklets planificadas están en dos estructuras por procesador (tasklet_vec y
tasklet_hi_vec)
• La rutina que planifica es task_schedule:
local_irq_save(flags);
t->next = __get_cpu_var(tasklet_vec).list;
__get_cpu_var(tasklet_vec).list = t;
raise_softirq_irqoff(TASKLET_SOFTIRQ);
local_irq_restore(flags);
• Deshabilita interrupciones locales para asegurarse que ejecuta sola
• Planifica la tarea (agrega a la estructura del procesador)
• Habilita el TASKLET_SOFTIRQ o HI_SOFTIRQ para ser ejecutado
• Restaura las interrupciones y finaliza
82. Ejecución de Tasklets
• Las Tasklets se ejecutan a través de la rutina do_softirq
• La rutina task_action invoca a todas las rutinas pendientes:
- Deshabilitar las interrupciones
- Obtener el número de CPU de ejecución
- Cargar el vector en una variable local
- Dejar el vector vacío
- Habilitar las interrupciones
- Para cada descriptor de tasklet hacer
-Verificar si la tasklet está ejecutando en otro procesador
-Si está, cargarla nuevamente para una futura ejecución
-Si no está, marcar el estado como ejecutando para que no se pueda
ejecutar en otro procesador
- Verificar si la tasklet está habilitada
- Ejecutar la tasklet correspondiente
83. Ejecución de Tasklets
local_irq_disable();
list = __get_cpu_var(tasklet_vec).list; __get_cpu_var(tasklet_vec).list = NULL;
local_irq_enable();
while (list) {
struct tasklet_struct *t = list;
list = list->next;
if (tasklet_trylock(t)) {
if (!atomic_read(&t->count)) {
if (!test_and_clear_bit(TASKLET_STATE_SCHED, &t->state)) BUG();
t->func(t->data); tasklet_unlock(t); continue;
}
tasklet_unlock(t);
}
local_irq_disable();
t->next = __get_cpu_var(tasklet_vec).list;
__get_cpu_var(tasklet_vec).list = t;
__raise_softirq_irqoff(TASKLET_SOFTIRQ);
local_irq_enable();
}
84. Work Queues
• Las work queues se diferencian con los softirq y tasklets en:
• Ejecutan en el contexto de un proceso, por lo tanto, pueden bloquearse
• Son ejecutadas a través de un worker thread
• Linux provee la creación de nuevos worker thread (uno por procesador o uno
único)
• El worker thread por defecto es el event, y existe uno por procesador en el
sistema: event/0, event/1 …
• Son bastante útiles cuando la atención consume bastante tiempo y el trabajo
se puede diferir bastante en el tiempo
• Ejemplos:
• Reiserfs
• xfslogd, xfsdatad
85. Work Queues
• La estructura workqueue_struct contiene los descriptores
cpu_worqueue_struct para cada procesador
• La razón de implementar un thread por CPU es con fines de
eficiencia (sobre todo por la memoria cache)
• En cada descriptor se tiene una lista de las funciones pendientes a
realizar por el work_queue (lista de tipo work_struct)
• Además, contiene un campo para que el worker thread espere
mientras espera por trabajo y otro para que los procesos que esperan
por la realización del trabajo esperen
• La estructura work_struct contiene el puntero a función
• que realiza la tarea
86. Primitivas para administración
• Para manipular una work queue se tienen disponibles las siguientes
primitivas:
• create_workqueue: Recibe como parámetros el nombre y si se crea un
solo thread
• global o uno por procesador
• destroy_workqueue: Destruye la workqueue
• queue_work:
• Agrega una función en la work queue
• Verifica si ya está en la work queue. Si es así, retorna
• Se agrega al final de la lista de pendientes de la work_struct
• Si el worker thread está “durmiendo” para la CPU local, entonces se lo
despierta
87. Work Queues – 2.6.36
• Las work queues fueron modificadas a partir del kernel 2.6.36 para
disminuir la cantidad de thread del kernel en ejecución (y memoria
utilizada por las estructuras)
• Se sustituyo por un conjunto de kernel thread kworker/0:0
• Las tareas diferidas son asignadas a los thread a través de un
algoritmo que intenta mantener un tarea ejecutando por procesador
• Para crear una workqueue se sustituye la función create_workqueue
(deprecada) por la función: alloc_workqueue
• Recibe como parámetros el nombre, tipo (REENTRANT,
UNBOUND,etc.) y el limite del número de tareas que pueden ejecutar
en paralelo.
88. Medición de tiempo en PC
En una Pc se puede medir tiempos de cuatro maneras:
• chip timer
• reloj de tiempo real.
• registro TSC (Time Stamp Counter)
• hpet (High Precision Event Timer)
89. Chip Timer
• Actualmente disponible por virtualización a través de rutinas
del BIOS en conjunto con HPET
• Envía un pulso 18,2 veces por segundo
• Activa la interrupción 8 cuyo manejador actualiza la hora en el
BIOS en el área de datos en 4 bytes a partir de 0040:006C.
• Esta actualización es la misma en todas las maquinas no
importando cuan rápida o lenta es.
• Solo si reprogramamos dicha interrupción no se actualizara
dicha rutina.
90. Chip timer programable 8253
• Tiene tres canales, cada uno es un timer.
• Hay también chips de cuatro canales.
• Se accede a ellos a través de los port 40h, 41h, 42h y
44h.
• En cada canal hay tres registros, que se acceden a través
del mismo port 43h.
91. Programación del 8253
• Para programar un canal se envía un número a ese port
en 2 bytes seguidos, primero la parte baja del número.
• Este número se almacena en el registro latch y en el
registro contador, el cual se decrementa de a uno a
medida que le ingresan pulsos por la entrada, hasta llegar
a 0, momento en el que da un pulso por la salida y vuelve
a copiar el número del latch, para comenzar una nueva
cuenta regresiva.
• Por lo tanto, cada n pulsos de entrada da uno de salida,
siendo n el número del latch.
92. Uso de los canales
• Canal 0 para el reloj de hora del día. Esta inicializado al máximo número
(en 16 bits, 2 elevado a la 16 , menos 1).
• Cada pulso de salida activa la INT 8 del PIC.
• Podría ser reprogramado por pequeños periodos ya que no se
actualizará la hora de la máquina.
• Canal 1 controla el refresco de las memorias. No puede ser
reprogramado sin que falle el funcionamiento de la máquina.
• Canal 2 esta conectado al parlante de la Pc. Produce el Beep del
parlante. También puede ser usado para otros fines.
• Canal 3 es el timer del watchdog.
• El manejador de la INT 8 llama la interrupción de software INT 1Ch
• El manejador de esta interrupción solo tiene un IRET, se puede
reemplazar
93. Cálculo de tiempos
• El chip recibe una entrada de 1.193.800 pulsos por
segundo. Como el máximo numero a almacenar en el
latch es FFFFh (16 bits)
2 exp16 – 1= 65.535
la frecuencia mas baja a obtener es 1193800/65535 =
18,2 veces por segundo
(frecuencia = 1.193.800/n).
94. Modos de operación
• El 8253 tiene seis modos de operación para cada canal.
• Por lo general se usa el modo 3, que carga en el latch y en el contador el mismo
número, cuenta hacia abajo hasta cero y al llegar vuelve a cargar el contador con
el valor del latch y reinícia.
• La elección del modo se realiza para los 3 o 4 canales a través del port 43h.
• Un byte en este port especifica que canal se programa, en que modo y si va uno
o ambos bytes del latch al contador.
• También si los números van en binario o BCD. Los bits de dicho registro son:
0 para Binario, 1 para BCD.
1 a 3 Modo, de 0 a 5.
4 y 5 Tipo de operación:
00 = pasa el valor del latch al contador.
01 = lee y escribe solo el byte alto.
10 = lee y escribe el byte bajo
11 = lee y escribe primero el byte alto, luego el bajo.
95. Programación del chip 8253
• Tres etapas para programar el chip. Una vez implementadas,
el chip funciona en la nueva configuración.
1. Enviar un byte al registro d comandos en el port 43h,
seleccionando canal, modo y tipo de numero.
2. Si es el canal 2, habilitar la entrada de clock enviando un 0 al
port 61h. Cuando este bit es 1, el canal 2 se conecta al
parlante, con lo que los valores de latch darán la frecuencia
de sonido a salir en modo astable (autodisparo del contador
al mismo valor). En 0 se habilita como timer.
3. Calcular el n para el contador de acuerdo a la frecuencia
necesaria de salida, y enviar primero el byte bajo y luego el
alto al I/O registro en el port correspondiente al canal.
96. Registro TSC
• Es un registro de 64 bits presente a partir del Pentium
• También existe en otras arquitecturas
• Se actualiza a partir del tic del reloj de la CPU y cuenta los
ciclos desde el arranque
• Se lée a través de la instrucción RDTS (ReaD TSC)
• No genera interrupciones, consulta por encuesta (polling)
• Tamaño del registro acumulador es crucial
• En combinación con la frecuencia del oscilador, para saber
cuánto es el tiempo máximo a partir del cual rebasará el
registro y comenzará la cuenta de 0
• En algunos procesadores es de 32 bits, en Intel es de 64 bits,
lo que le permite a un procesador con frecuencia de oscilador
de CPU del orden de Ghz contabilizar tiempos del orden de
años sin rebasar
97. Registro TSC
• Un ejemplo de consulta de tiempo mediante RDTSC en una máquina con
procesador Intel:
static __inline__ unsigned long long rdtsc(void)
{
unsigned long long int x;
__asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
return x;
}
• TSC como fuente de referencia de tiempo tiene ventajas:
• No uso de e/s (no sobrecarga de tiempo para lectura)
• Lectura con una instrucción de código de máquina (procesamiento mínimo)
• Resolución de frecuencia de reloj del procesador
• Con procesadores con relojes del orden del Gigahertz se obtienen resoluciones del
orden del nanosegundo (10 e -9 seg).
• Es imposible disponer en una computadora de un reloj de mayor resolución
cuya lectura se realice en una sola instrucción de código de máquina.
• Tiene el inconveniente de no generar interrupciones.
98. Relojes de software
• Son dispositivos de software que, tomando señales de los diferentes
dispositivos de hardware, elaboran algún tipo de contabilidad de dichas
señales
• Ejemplo, la llamada a gettimeofday() de C
• Da como resolución 1 microsegundo, haciendo una interpolación entre la
consulta a time of day y TSC
• Esta resolución puede comprobarse ejecutando el siguiente código
(seudocódigo):
gettimeofday(t1);
Repetir
gettimeofday(t2);
Mientras(t1 = t2)
Imprimir (t2-t1)}
• Al poder cambiar su frecuencia de actualización y diferencia horaria inicial
(variables de software) son ideales para ser sincronizados
• No requieren operaciones de entrada y salida, solo operaciones en memoria.
• Limitación: nunca tendrán mejor resolución que la del reloj de hardware del
que derivan
99. IA-PC HPET (High Precision Event Timer)
• Es una especificación desarrollada en la década del 2000
por Intel y Microsoft.
• La última versión de Oct/2004.
• Tiene por misión suplementar y eventualmente
reemplazar al 8254 Programmable Interval Timer y el
Real Time Clock Periodic Interrupt
100. IA-PC HPET (High Precision Event Timer)
• Define un conjunto de timers que pueden ser usados por el
sistema operativo
• Cada block de timer tiene un contador y 32 comparadores y
match registers
• El comparador compara el match register con el valor del
contador ascendente monotónico
• Cuando la salida del contador es igual al match register se
genera una interrupción
• Cada comparador puede dar una salida de interrupción
• Un maximo de 8 blocks de timer soportan 8x32 = 256 timers
• Cada block de timer puede tener diferentes atributos de reloj
• Algunas especificaciones pueden incluir solo un subset de
timers
• Un mínimo de 3 timers son requeridos
103. Lectura de variables físicas
• Se utilizan transductores
• Son dispositivos que transforman una magnitud física tal
como temperatura o presión en una magnitud eléctrica
• Estos dispositivos se conectan a una computadora digital
a través de placas capaces de manejar señales digitales
y analógicas y convertirlas a binario (placas conversoras
A/D)
• Como hay infinidad de transductores con diferente salida
se utiliza normalización para poder utilizar siempre la
misma placa A/D
• Una vez que las señales son eléctricas pueden ser
transformadas y amplificadas
104. Ley de Ohm
• V = I x R
• V es voltaje o tensión, es una medida de la capacidad de
mover cargas eléctricas que posee una fuente de energía
con unidad Volt
• I es la intensidad de corriente eléctrica, medida en
Amperes (1 coulomb por segundo)
• R es la resistencia al pasaje de electrones a través del
material al que se le aplica V para que circule I.
105. Señales
• Analógico y digital
• Una señal estará representada analógicamente
cuando es convertida a otra magnitud que tiene
igual variación de amplitud en el tiempo,
manteniendo el estado de continuidad de la señal
original.
• Una señal estará representada digitalmente
cuando es transformada a números.
109. Calidad de señal
• Audición humana 16 ó 17 KHz hasta 15-20 KHz
• Equipos se extiende más allá: mejor calidad
• Frecuencia de muestreo (del convertidor) debe ser de
más del doble que la banda que se pretende utilizar
(teorema de Nyquist en la práctica).
• Cantidad de bits:
cantidad de escalones da la resolución
Resolución = valor analógico / (2^8)
Ej: Resolución = 5 V / 256
• 8 bits:256 (2 exp8)
• 12 bits: 4096 (placa adq12)
• En cd:
16 bits
44110 hz
• Grabación profesional
24 o 32 bits
Frecuencia 48, 96, 192,… khz,
111. Sensores y detectores
• Un detector tiene 2 estados de salida
• Alcanzado un umbral en la variable física que mide,
pasa su salida de falso a verdadero, por lo general
con un contacto que se opera
• Un sensor da en su salida una señal analógica
eléctrica de la señal física de su entrada. Se trata de
un transductor.
• Normalización de señales
• Las salidas de los sensores están normalizadas a
valores de corriente o de tensión varios
• Algunas de ellas: +/-5V, +/-10V, 4-20 mA
112. ADQ12
• Placa conversora analógico digital 12 bits
• Entradas analógicas y digitales
• Salidas digitales
• Pacer y timer
114. ADQ12: Sección analógica
• MUX: Multiplexor analógico de 16/8 canales (balanceado:8-
desbalanceado:16): toma 1 de 8/16 entradas de acuerdo a la
selección en registro CTREG. Balanceado es de mas “calidad”
• PGA: Amplificador de ganancia programable por software de
acuerdo a valor de CTREG. Su ganancia es precisa (amp. de
instrumentación)
• S/H: Etapa de muestreo y retención: memoriza un valor
instantáneo para permitir la lectura de un valor constante
• A/D: Conversor analógico a digital (A/D): contador de 12 bits
mas generador de rampa hasta igualar el valor de la muestra.
El valor del contador será igual al valor de la muestra.
• VREF: Tensión de referencia para las comparaciones
115. ADQ12: Sección digital
• OUTBR es un port de salida de 8bits
Programación de salida en forma individual, bit a bit
Siete salidas, OUTB0 enmascara entrada de interrupción In0
Control de bits: se envia a dirección de OUTBR un byte con las características
siguientes:
b2, b1, b0 señalan uno de los 8 bits de salida, bit 3 el valor colocado en salida
Los restantes mantienen su valor
Los bits 7 a 4 no desempeñan función alguna.
• STINR, port de entrada y registro de status:
5 bits de menor peso: ingreso de señales digitales
IN0 tiene capacidad de interrupción
Los tres bits de mayor peso revelan el estado de salida del conversor A/D, pacer y
contador (Bit 5 End Of Conversion, 1 fin de conversion, 0 en curso)
116. ADQ12: Sección digital
• CTREG, registro de control para las funciones programables
• Modo diferencial:
• bits 2 a 0 seleccionan uno entre 8 de los canales analógicos (el bit 3 no cumple
función alguna)
• Modo desbalanceado
• los bits 3 a 0 seleccionan 1 entre 16 canales analógicos
• El registro de control es forzado a cero luego de un encendido ó un
reset del computador (ALT-CTRL-DEL no fuerza un reset)
118. ADQ12: Sección digital
• Utiliza un INTEL 8253, de tres temporizadores programables de 16
bits y un registro de control
• Cada timer cuenta con:
Entrada de disparo G0, G1 y G2
Entrada de reloj CLK0, CLK1 y CLK2
Salida OUT0, OUT1 y OUT2.
• Cada timer esta conformado por un contador (CONT0, CONT1 y
CONT2) de 16 bits
• Contador se carga (soft) a valor inicial y tras un disparo inicia una
cuenta descendente, al ritmo de señal del reloj
• Cuando la cuenta arriba a cero OUTn toma el estado alto
• Lectura de los contadores al “vuelo” o transfiriendo previamente sus
valores a registros internos de la unidad 8253
119. ADQ12: Sección digital
• Cada timer puede operar en seis modos, seleccionables mediante el
registro de control, COWOR
• Según el modo elegido el disparo será por software ó hardware (G0,
G1, G2)
• Timer 2 : aplicaciones generales, timers 1 y 0 conforman pacer de 32
bits
• Timer 2:
La señal de reloj puede ser interna (15.625KHz, 62.5KHz ó 250KHz.) ó externa (se
deja libre puentes de selección)
Es posible sensar el estado de la salida OUT2 sobre el bit 7 de STINR
120. ADQ12: Sección digital
• PACER: Timer 1 y 0 conforman un PACER de 32 bits
• Mide tiempos entre 16mseg y 2 horas 23 minutos
• Timer 1: divisor de frecuencia programable (modo operación 3)
Señal de reloj de 500KHz del oscilador interno
OUT1 se conecta a la entrada de reloj del timer cero
• Timer 0 podrá programarse en los seis modos
Entrada de disparo, G0, controlada por bit 6 del reg. (GTP)
Estado salida: bit 6 de STINR (OUTP)
OUT puede activar interrupción de PC: IRQ5, 4, 3 ó 2 (XT) IRQ9 (AT)
Interrupción : flanco ascendente en OUTP
Enmascarada vía bit 7 de CTREG (MSKP) PACER, temporizador de precisión, 32
bits. Capacidad de interrupción.
• DX, decodificador de direcciones.
• OSCIL, base de tiempo con frecuencias seleccionables
121. ADQ12: Sección digital
• PACER:
• demoras programables en amplio rango de tiempos
• Fraccionar el tiempo del procesador entre diversas rutinas (multitask), (usa
interrupciones)
• Adquisición/ generación de datos mediante subrutinas en background (por
interrupciones)
• Medición de tiempo entre dos eventos
• Generar demoras:
• Timer 1 en modo 3
• Opera como divisor de frecuencia programable
• El período de la señal de salida (OUT1) será: (N:cargado en CONT1) multiplicado por el
período de la señal de reloj
• T(OUT1) = N * 2mSeg (N mínimo: 4. N máximo: 65535)
• Timer 0 en modo 1: Se carga CONT0 con valor M
• Al dispararse timer 0, OUTP toma estado bajo, en tanto se inicia una cuenta descendente
• Cuando llega a cero la salida OUTP toma el estado alto
• El intervalo de tiempo que media entre el disparo y el fin de cuenta será:
• T (OUT) = M * T (OUT1) (M mínimo 2 M máximo 65535)
• T(OUTP) = M * N * 2mSeg
• Se podrán programar intervalos, con resolución de 4mSeg, comprendidos entre los
valores mínimos y máximos de:
• T(OUTP) mínimo = 2 * 4 * 2mSeg = 16mSeg
• T(OUTP) máximo = 65535 * 65535 * 2mSeg = 8590 Seg.
122. ADQ12: Sección digital
• Base de tiempos :
ADQ12-B utiliza oscilador de cristal (4 MHz) y divisor
PACER utiliza 50KHZ
Derivación de 62.5KHz
CONT2 utiliza 15.625KHz, 62.5KHz ó 250KHz (selección JCK).
• INTERRUPCIONES:
Dos alternativas:
vía PACER (IRQ5, RIQ4, IRQ3, IRQ2(XT) IRQ9(AT ó superior))
Entrada IN0: IRQ7, IRQ4, IRQ5
124. Planificación de procesos - Tareas
• Tres tipos de tareas, según sus características temporales:
- Tareas periódicas. Ejecutan periódicamente en un periodo constante. Supondremos que
todas las tareas con restricciones temporales son periódicas.
- Tareas esporádicas. Tienen plazo de finalización estricto, pero se ejecutan esporádicamente.
Se tratan como tareas periódicas suponiendo que existe un tmín entre dos activaciones
consecutivas. Este tiempo se tomará como el periodo “equivalente” de la tarea.
- Tareas aperiódicas. No tienen plazo de finalización, o si lo tienen, no es de obligado
cumplimiento.
Otra clasificación de las tareas de TR en base a características semánticas:
- Tareas críticas. El fallo de una de estas tareas (por no ejecutarse a tiempo) puede ser
catastrófico para el sistema.
- Tareas opcionales. Si se retrasa su ejecución no afecta a la seguridad del sistema.
Realizan:
- Monitorización del sistema
- Tareas de mantenimiento
- Refina el resultado obtenido por tareas críticas
Las tareas opcionales se pueden dividir en dos grupos:
- Opcionales con plazo (hard aperiodic). Disponen de un tiempo de ejecución recomendado.
- Opcionales sin plazo (soft aperiodic).
Algunas políticas de planificación tienen en cuenta esta distinción e intentan cumplir los plazos
de las tareas opcionales con plazo, siempre que no haya sobrecarga de tareas críticas o
por el resto de tareas opcionales con plazo.
125. Parámetros
N: Número de tareas en el sistema
Pi: Periodo de activación
Ci: Tiempo máximo de ejecución
Di: Plazo máximo de terminación.
Ri: Tiempo de respuesta máximo. Es el tiempo desde que la tarea se
activa hasta que termina realmente a ejecutarse.
Pri: Prioridad de la tarea (convenio: mayor valor, menor prioridad)
Si: Desfase respecto al momento inicial
126. Tiempo real crítico y opcional
• Tardanza de una tarea: diferencia entre el tiempo de respuesta
y el plazo de ejecución de una tarea.
ti = Ri – Di
• Una tarea se ejecuta de forma tardía si su tardanza se hace
positiva. O sea finaliza su ejecución después de haber vencido
su plazo de ejecución.
• En los STR opcional un resultado puede ser útil, aunque sea
tardío. Pero su utilidad decae.
• En tareas de tiempo real crítico la utilidad se hace 0 cuando la
tardanza se hace positiva.
• La utilidad se expresaría en forma de un valor de la
probabilidad de que el tiempo de respuesta sea menor o igual
a la cota temporal.
• Un STR crítico sería aquel en que la probabilidad de que se
cumplan las cotas temporales sea 1.
127. Tiempo real crítico y opcional
Teniendo en cuenta todos estos criterios, en los sistemas de tiempo real
las restricciones temporales se pueden expresar en varios términos, por
ejemplo:
1. Restricciones deterministas. Por ejemplo, el resultado que
proporciona
una tarea se debe obtener siempre antes de 50 ms.
2. Restricciones probabilísticas. Por ejemplo, la probabilidad de que el
tiempo de respuesta exceda de 50 ms. debe ser inferior a 0.2.
3. Restricciones en términos de una función de utilidad. Por ejemplo,
la utilidad de los resultados que proporciona una tarea debe ser 0.8 o
superior.
Las restricciones temporales críticas raramente se expresan en los dos
últimos términos, mientras que las restricciones temporales opcionales si
suelen expresarse en términos de probabilidad o de utilidad.
Ejemplo: sistema telefónico, tras marcar el nro., la conexión se debe
establecer en un tiempo que no sea excesivo, antes de 10 seg. en el 95%
de los casos y antes de 20 seg. en el 99.95% de las llamadas
128. Tiempo de ejecución
• Tiempo de ejecución de una tarea variará entre un valor
máximo y un mínimo, dependiendo de
saltos condicionales que se activen
iteraciones en bucles.
• Otros factores:
• Uso de recursos compartidos (comunicación, memoria virtual)
• Evitar uso de estructuras dinámicas que introducen variación
en cantidad de memoria utilizada y tiempo para operar con
estas estructuras.
• Es común que sólo una parte del sistema requiera
comportamiento temporal estricto, y el resto opcional.
• Se puede considerar las tareas de tiempo real crítico, dejando
el tiempo sobrante para el resto de tareas
• Se supone que el número de taras de tiempo real crítico en el
sistema es constante y conocido.
129. Tareas periódicas
• Para aumentar determinismo, se supone todas las tareas
periódicas con un periodo de activación rigurosamente
exacto, o el menor de los posibles
• También se pueden considerar como periódicas las
tareas esporádicas, siempre que se pueda determinar un
valor mínimo del tiempo entre dos activaciones
consecutivas. Este valor mínimo será el que se toma
como su periodo.
130. Factor de utilización
• Es la fracción de la CPU que se utiliza en el sistema
• O sea la suma de las fracciones de CPU utilizado por el
total de las tareas.
• Es necesario que el factor de utilización sea menor o
igual que uno.
N
i Pi
Ci
U
1
131. Hiperperiodo
• Es el mínimo común múltiplo de los periodo de todas las
tareas
• A partir de este valor el sistema se repite, si se determina
que un sistema es planificable en la duración de un
hiperperiodo, lo será también durante toda la vida del
sistema
• Con un número elevado de tareas el valor del
hiperperiodo se dispara (en el caso más desfavorable es
el producto de todos los periodos). Hay que tener en
• cuenta que la probabilidad de que dos números elegidos
al azar sean primos es del 60%
132. Dependencia entre tareas
• Precedencia: una tarea no puede continuar hasta que otra la active
explícitamente.
• Dependencia en datos: varias tareas utilizan datos que no pueden ser
compartidos (exclusión mutua)
• Dependencia temporal relativa: Varias tareas debe finalizar sus trabajos en
un instante que no puede distar más de una cantidad. El plazo no es absoluto
sino relativo a otra tarea (videoconferencia en la que se quiere que la voz
acompañe al movimiento de los labios)
• Restricciones de precedencia AND / OR: Es una relación entre tareas similar
a la restricción de precedencia, pero cuando una tarea debe esperar a que
finalicen varias predecesoras (AND), o sólo alguna de ellas (OR)
• Ejecución condicional: una tarea se ejecuta o no dependiendo del resultado
de otra
• Relación de cauce: Es la relación típica del tipo productor / consumidor. El
consumidor debe esperar a tener datos para continuar y el productor debe
detenerse si el medio de comunicación se colapsa debido a que el productor
envía información más rápido de lo que la lee el consumidor
• En el caso de que entre dos tareas exista una relación de precedencia, se
supone ambas tareas como periódicas independientes con el mismo periodo
igual al de la tarea que precede a la segunda
133. Parámetros funcionales
• Trabajos interrumpibles: pueden ser interrumpidos para ejecutar tareas
más urgentes. La interrupción de un trabajo se llama preempción
(preemption en inglés).
• No interrumpibles: ejecutar sin interrupción desde que comienza hasta que
termina.
• Cuando se interrumpe tarea, el sistema debe guardar su estado (cambio
de contexto). En el análisis se considera nulo el tiempo de cambio de
contexto
• Importancia de los trabajos: El planificador para decidir el orden en que se
ejecutan las tareas deberá tener en cuenta su importancia a través de una
prioridad a las tareas
• Ejecución opcional: Si aparece sobrecarga se configuran tareas como
opcionales, que podrán descartarse
• Si un trabajo de una tarea opcional se ejecute fuera de plazo, o no se
ejecuta, producirá un funcionamiento degradado del sistema, pero seguirá
ofreciendo un comportamiento satisfactorio
• Los trabajos obligatorios deben ejecutarse completamente dentro de sus
plazos
• Se tendrá que utilizar un parámetro funcional que indique si un trabajo es
obligatorio u opcional
134. Planificación
• Trabajos deben ser asignados a procesadores en un orden determinado
• Esto lo hace el planificador: decide que trabajos ejecuta cada procesador y en que orden
• Planificación es una asignación de recursos y tiempo a actividades de forma que se
cumplan determinados requisitos de eficiencia.
– Estáticos sin tiempo real: minimizar tiempo de ejecución.
– Dinámicos sin tiempo real: minimizar tiempo de respuesta y maximizar uso de recursos.
– Sistemas de tiempo real: cumplir los límites temporales.
• 5 tareas pueden realizarse de 5!=120 ordenes diferentes
• Pero debo elegir una que cumpla restricciones temporales!
• En particular, el recurso que se planifica es el uso de procesador/es disponibles
• Un planificador debe producir planificaciones válidas, de forma que satisfagan las
siguientes condiciones:
• Cada procesador debe estar asignado como máximo a un solo trabajo en cada instante.
• Cada trabajo está asignado como máximo a un solo procesador en cada instante
• La cantidad total de tiempo asignada a c/trabajo debe ser igual a su t. de ejecución máximo o a su actual t.de
ejecución
• Se satisfacen todas las restricciones de precedencia y uso de recursos para acceder a los datos
• Con estas condiciones se da por supuesto que un trabajo no se ejecuta en paralelo en
más de un procesador, o se consideran como trabajos distintos los que se ejecuten en
procesadores distintos, aunque colaboren para realizar una función en conjunto
136. Planificación
• Una planificación válida es posible si cada trabajo finaliza antes de su límite temporal
• Un conjunto de tareas es planificable de acuerdo con un algoritmo de planificación si cuando
utiliza este algoritmo el planificador siempre produce planificaciones posibles
• Rendimiento de un algoritmo de planificación: habilidad de encontrar planificaciones posibles
• Algoritmo de planificación óptimo: siempre produce planificaciones posibles cuando existen en
el conjunto de trabajos dados
• Si un planificador óptimo falla al encontrar una planificación posible, el conjunto de tareas no
puede ser planificada con ningún otro algoritmo de planificación
• Puede ocurrir que un planificador no consiga encontrar una planificación posible para un
conjunto de tareas porque no exista
• Puede ser aceptable que para algunos procesos (opcionales) no se cumplan sus restricciones
temporales (trabajos que finalizan fuera de plazo, o no lleguen a ejecutarse)
• En este caso, un planificador elige entre minimizar la tardanza de los trabajos que se ejecutan
fuera de plazo, o minimizar el número de tareas que no se ejecutan para que las que lo hacen
si cumplan los plazos
• Estos dos criterios son opuestos: completar más trabajos aumentará la tardanza total y
disminuir la tardanza dejará sin ejecutar más trabajos
• Una medida del rendimiento que tiene en cuenta ambos criterios es la razón de invalidez, que
contempla el total de los trabajos inválidos, los que no se ejecutan y los que no terminan en
plazo
• Por lo general, un planificador que admita trabajos opcionales debe minimizar la razón de
invalidez
137. Planificación
• tareas : sucesión de trabajos que se repiten. Cuando la
tarea comienza a ejecutarse comenzará a ejecutarse su
primer trabajo y, cuando el último trabajo finalice,
terminará la ejecución de la tarea.
• Un método de planificación tiene dos aspectos:
– Algoritmo de planificación, que determina el orden de
acceso de las tareas a los recursos.
– Un método de análisis que permite calcular el
comportamiento temporal del sistema:
• Se pueden comprobar si requisitos temporales están
garantizados en todos los casos posibles.
• En general se estudia el peor comportamiento posible.
– Los algoritmos pueden ser estáticos y dinámicos.
138. Planificación
• Planificación Estática:
– Los requisitos temporales se analizan antes de la ejecución y
se determina el orden en que estas se ejecutarán.
– Minimiza la sobrecarga en tiempo de ejecución.
– Menos flexible.
• Planificación dinámica:
– El orden de las tareas se decide durante la ejecución.
– El análisis también se realiza durante la ejecución.
• Prioridades Fijas y Procesos Totalmente Interrumpibles.
– La prioridad es un parámetro relacionado con la urgencia o la
importancia de la tarea.
– Siempre se ejecuta la tarea lista con mayor prioridad.
• Es el algoritmo de mejor comportamiento en SOTR crítico,
sobre todo en sobrecarga.
139. Planificación
• Modelo de tareas, de mas simple a mas complejo:
– El conjunto de tareas es estático.
– Todas las tareas son periódicas
– Las tareas son independientes
– Los límites de tiempo de todas las tareas son iguales a su periodo.
– El tiempo de ejecución máximo es conocido.
140. Ejecutivos cíclicos
• Si todas las tareas son periódicas, se puede confeccionar un plan de
ejecución fijo en una tabla.
• Los ejecutivos cíclicos son la aproximación más tradicional a la construcción
de sistemas de tiempo real.
• No se utiliza la concurrencia. Las distintas tareas se simulan en un programa
secuencial, sin soporte del lenguaje o sistema operativo.
• Se trata de un esquema que se repite cada:
Tm=mcm(Ti) (ciclo principal)
• El ciclo principal se divide en ciclos secundarios, con período.
Ts | Tm=k·Ts
• En cada ciclo secundario se ejecutan las actividades correspondientes a
determinadas tareas
• En el planificador solo consulta tabla y el procesador ejecute las tareas
siempre en el mismo orden.
• Se coloca “a mano” el orden de ejecución de los trabajos durante un
hiperperiodo fuera del tiempo de ejecución.
141. Ejecutivos cíclicos
• Tabla de llamadas a procedimientos (T
periodo y C tiempo ejecución peor
caso)
• Cada procedimiento representa parte
del código de un proceso
• El ciclo principal dura 16ms
• Hay 4 ciclos secundarios de 4ms.
• Cada 4ms. hay una interrupción y el
planificador pone en ejecución la
tarea correspondiente hasta recorrer
la tabla
• Será planificable si la suma de los
tiempos da menor a 16.
Tarea T C
A 4 0.5
B 4 1.5
C 8 1
D 16 2
143. Ejecutivos cíclicos
• Los procesos no existen en tiempo de ejecución: cada ciclo
secundario es una secuencia de llamadas a procedimientos.
• Comparten un espacio de direcciones, por lo que pueden
pasar datos entre ellos.
• Datos compartidos no necesitan ser protegidos (con un
semáforo, por ejemplo), porque es imposible el acceso
concurrente.
• Todos los periodos de los procesos deben ser múltiplos del
tiempo del ciclo secundario
144. Ejecutivos cíclicos - Desventajas
• Esta última propiedad representa uno de los principales inconvenientes del
enfoque del ejecutivo cíclico, junto a:
• La dificultad para incorporar procesos esporádicos.
• La dificultad procesos con periodos grandes; el tiempo del ciclo principal es
el máximo periodo acomodable sin planificación secundaria (un
procedimiento en el ciclo principal que llame a un proceso secundario cada N
ciclos secundarios).
• La dificultad a la hora de construir el ejecutivo cíclico.
• Cualquier proceso con un tiempo de cálculo notable podrá tener que ser
dividido en un número fijo de procedimientos de tamaño fijo (lo que podría
romper la estructura del código desde una perspectiva de la ingeniería de
software, y por lo tanto ser propenso a error).
• Si puede construirse el ejecutivo cíclico, no será necesario ningún test de
• planificabilidad más.
• Sin embargo, en sistemas de alta utilización la construcción del ejecutivo es
problemática. En sistemas periódicos simples el ejecutivo cíclico se mantiene
como una estrategia de implementación apropiada.
145. Planificadores basados en prioridades
• En tiempo de ejecución se ejecuta la tarea de más prioridad activa
La asignación de prioridades puede ser:
• Estática: Prioridad de cada tarea constante durante toda la vida del sistema
que se calcula antes de su ejecución. Se ejecutan por su prioridad. La
prioridad de un proceso se deriva de sus requisitos de temporización, no de
su importancia para el correcto funcionamiento o para la integridad del
sistema.
• Dinámica: Las prioridades varían con el tiempo según unas determinadas
reglas. El planificador puede ser expulsivo (apropiativo , preemtive) o no
expulsivo. Será expulsivo si una tarea de más prioridad, al activarse, puede
quitarle la CPU a otra de menor prioridad. Si el planificador es no expulsivo,
cuando una tarea toma la CPU no la deja hasta que termine o la cede
voluntariamente.
• En general, los esquemas apropiativos mejoran la reacción de los procesos
de alta prioridad, y por lo tanto se les prefiere.
• En la planificación por prioridades, las tareas alternarán entre distintos
estados según el control que tengan de la CPU.
146. Planificación con prioridades
• Sistema será planificable (planificación posible) si cada trabajo finaliza antes de su
límite temporal
• Un conjunto de tareas es planificable de acuerdo con un algoritmo de planificación si
cuando utiliza este algoritmo el planificador siempre produce planificaciones posibles
• La forma que tenemos de medir el rendimiento de un algoritmo de planificación en
las aplicaciones de tiempo real es por su habilidad de encontrar planificaciones
posibles en una determinada aplicación cuando estas existen.
• Un algoritmo de planificación es óptimo si utilizando este algoritmo el planificador
siempre produce planificaciones posibles cuando existen en el conjunto de trabajos
dados.
• Puede ocurrir que un planificador no consiga encontrar una planificación posible para
un conjunto de tareas. Tal vez porque esta no exista.
Planificadores con prioridades estáticas:
• Rate Monotonic (RM).
• Deadline Monotonic (DM).
Planificadores con prioridades dinámicas:
• Earliest Deadline First (EDF)
• Least Laxity First (LLF).
147. Rate Monotonic
• Es un esquema óptimo de asignación de prioridades (tasa
monotónica)
• A cada proceso se le asigna una única prioridad basada en su
periodo: mayor prioridad para periodos menores
• Es óptima porque si un conjunto de procesos puede ser
planificado con un esquema de prioridades estático (utilizando
una planificación apropiativa basada en prioridades), entonces
el conjunto dado también se puede planificar con un esquema
de planificación de tasa monotónica.
• Prioridad al más frecuente => Plazo = periodo.
• La asignación de prioridades más altas a las tareas más
frecuentes ( período máscorto) es óptima entre todas las
asignaciones con prioridades fijas (Liu & Layland,1973).
148. Deadline Monotonic
• Extensión de Rate Monotonic (DM) donde las tareas pueden tener un
plazo relativo menor que superíodo.
• Idéntica a la Rate Monotic, pero ahora los plazos de finalización pueden
ser distintos a los periodos (menores o iguales):
Di <=Ti
• La asignación de prioridades se hace en orden inverso al plazo de
finalización, de forma que la tarea con plazo de finalización más breve
tenga mayor prioridad.
• Prioridad al más urgente => Plazo ≤ periodo.
• La asignación de prioridades más altas a las tareas más urgentes (plazo
de respuesta más corto) es óptima
• DM es óptimo, esto es si un algoritmo de planificación con prioridad
estático puede planificar un conjunto de tareas con plazos diferentes a
sus periodos, entonces DM también planificara este conjunto de tareas.
• La factibilidad de un conjunto de tareas con plazo menor a su plazo
puede ser garantizada usando el algoritmo de planificación Rate-
Monotonic, reduciendo los periodos de las tareas a su plazo relativo.
149. POSIX 1003.1b
• Estándar para introducir características de tiempo real en UNIX
• Las tareas pueden ser periódicas o no.
• Las tareas se programan de acuerdo a la prioridad y a la política de las
tareas.
• La prioridad es estática.
• La política puede ser SCHED_RR, SCHED_FIFO o SCHED_OTHERS
• Describe cómo el planificador elige una tarea cuando varias tareas
tienen el mismo nivel de prioridad.
• Tareas SCHED_RR y SCHED_FIFO debe tener prioridades que
oscilan entre 255 y 1
• Nivel de prioridad 0 se reserva para tareas SCHED_OTHERS.
• El nivel de prioridad más alto es 255.
• En esta política cada tarea tiene una prioridad asignada, y el
planificador elige para ejecutar aquella tarea que tiene mayor prioridad,
de entre los que están listos para ejecutar.
• Cuando hay tareas que tienen el mismo nivel de prioridad el
planificador utiliza una política para elegir que tarea ejecutar.
150. Políticas implementadas
SCHED_FIFO: Este es el nombre de la política de planificación
expulsora con prioridades que usa orden FIFO para determinar
el orden en el que se ejecutan las tareas de la misma prioridad.
SCHED_RR (Round - Robin (turno rotatorio): Este es el nombre
de la política de planificación expulsora con prioridades que usa
un esquema cíclico para planificar tareas de la misma prioridad.
Un proceso o hilo se ejecuta hasta que acaba o es bloqueado o
hasta que su quantum de tiempo ha expirado; si un proceso/hilo
es expropiado por un proceso de mayor prioridad, es colocado a
la cabeza de la cola de ejecución para esa prioridad sin
embargo, si su quantum expira, será colocado al final.
(SCHED_OTHER) : tiene un comportamiento definido por la
implementación, que se definió para permitir la compatibilidad
con implementaciones preexistentes
151. Test de planificabilidad (factor de
utilización)
• Planificadores con prioridades estáticas,
• Si se cumple la siguiente condición, todos los N procesos cumplirán
sus tiempos límite
• Un conjunto de n tareas será planificable bajo el Rate-Monotonic si
se cumple:
• La sumatoria calcula el factor de utilización
• El test es suficiente pero no necesario. Si un conjunto de procesos
pasa el test, entonces cumplirá todos los tiempos límite; si lo falla,
puede o no fallar en tiempo de ejecución.
• Sólo aporta una respuesta del tipo sí/no. No da ninguna indicación
sobre los tiempos de respuesta de los procesos.
152. Planificadores con prioridades dinámicas.
Earliest Deadline First (EDF)
• Asignar en cada instante la prioridad más alta al proceso cuyo
plazo de respuesta está más. Se asignan las prioridades
dando preferencia a las tareas con plazo de finalización más
próximo.
• La prioridad de una tarea se calcula en tiempo de ejecución.
• La prioridad de una tarea puede cambiar a lo largo de su
ejecución y en diferentes activaciones.
• Prioridades dinámicas
Earliest Deadline First es un método de planificación óptimo bajo
las siguientes restricciones:
• Tareas independientes
• Planificación expulsiva
• Sistemas monoprocesador
153. Least Laxity First (LLF)
• Se asignan las prioridades dando preferencia a las tareas
con menor holgura, (plazo menos tiempo de
procesamiento restante) de la tarea.
156. Microcontroladores - Introducción
• Un microcontrolador es un microprocesador
especializado en el control de dispositivos o equipos
electrónicos.
• Integra memoria de datos y programa, y módulos de
hardware que le permiten “sensar,” controlar y
comunicarse con otros dispositivos.
• Existe en el mercado una gran cantidad de
microcontroladores de muchas empresas: Atmel,
Freescale (Motorola), Hitachi, Intel, National
Semiconductor, Microchip, NEC, Parallax, ST
Microelectronics, Texas Instruments
157. Microprocesador vs. Microcontrolador
Microprocesador Microcontrolador
Alto nivel de generalización Alto nivel de especialización
No integra periféricos dentro del mismo chip Integra periféricos dentro del chip
Alto Costo Bajo Costo
Velocidades de reloj altas Velocidades de reloj medianas/bajas
Consumo de energía medio/alto Consumo de energía bajo/medio
Generalmente son CISC Generalmente son RISC
Tiempo de ejecución variable entre instrucciones Tiempo de ejecución constante entre instrucciones
Se utiliza para procesar información Se utiliza para controlar dispositivos electrónicos
Necesita de gran cantidad de componentes
externos para funcionar
Necesita de pocos componentes externos para
funcionar
Memorias de datos y programa externas Memorias de datos y programa internas
159. Microcontroladores - Aplicaciones
• Control de motores: continuos, PWM, etc.
• Biometría: Reconocimiento huellas digitales y voz
• Telefonía: detección de DTMF, identificadores de
llamadas
• Aparatos electrónicos: impresoras, scanners, módems,
microondas, etc.
• Mediciones en general: temperatura, humedad, señales
biológicas.
• Procesamiento de señales: reducción de ruidos.
• Automotriz: airbag, frenos ABS.
• Juguetes y Robótica.
160. Microcontroladores - Características
• Arquitectura Harvard.
• Memoria de programa reducida:
• Unos pocos Kbytes.
• suelen ser ROM (una grabación) o EEPROM (muchas grabaciones).
• Memoria de datos reducida:
• Desde unos bytes a Kbytes.
• Conjunto Reducido de Instrucciones (RISC).
• Salvo líneas de altas prestaciones y DSP, no tienen soporte para
multiplicaciones y/o divisiones.
• Integra temporizadores, conversores A/D, dispositivos de
comunicación.
161. Microcontroladores - Arquitectura
Arquitectura Von Neumann
Memoria
de
Datos
+
Programa
CPU
Memoria
de
Datos
CPU
Memoria de
Programa
• Flexibilidad para
almacenar datos y
programas.
Arquitectura Harvard
• Independencia de tamaños
de buses de memoria y
datos.
• Simplificación de la
electrónica de control.
• Acceso simultaneo a
memoria de datos y
programa.
162. Microcontroladores - Dispositivos
• Entrada / salida digital.
• Comunicación :
• SPI, I2C, UART, CAN, USB, SPP.
• Temporizadores.
• Comparadores de salida.
• Capturadores de entrada.
• Conversores analógico/digital.
• Control por PWM (Modulación de ancho de pulso)
• Codificadores de cuadratura.
163. Microcontroladores - Comunicación
SPI, Serial Peripherical Interface:
• Líneas de comunicación :
• SDI / MOSI: entrada de datos serie (serial data input).
• SDO / MISO: salida de datos serie (serial data output).
• SCK / SCLK: señal reloj para E/S (serial clock).
• SS / SSx: selección de esclavo (slave select).
• Características:
• Comunicación sincrónica full-duplex.
• Transmisión y recepción de flujos de 8/16 bits, 1 ciclo/bit.
• Maestro/esclavo, el maestro genera señal SCK y activa señal SS.
• Requiere de una línea SS por dispositivo esclavo.
• Capacidad de interrumpir al transmitir/recibir.
• Velocidades de transferencia entre 1Mhz y 100Mhz.
165. Microcontroladores - Comunicación
I2C, Inter-Integrated Circuit:
• Líneas de comunicación:
• SDA: entrada/salida de datos serie (serial data).
• SCL : señal reloj para E/S (serial clock).
• Características:
• Comunicación sincrónica half-duplex.
• Modos Maestro, esclavo, o multi-maestro con detección de
colisiones y arbitraje.
• El maestro transmite número de dispositivo e información de la
operación a realizar . El dispositivo esclavo responde .
• Comunicación con tantos dispositivos como direcciones pueda
codificar.
• Capacidad de interrumpir al transmitir/recibir.
• Velocidades de transferencia de 100Khz y 400Khz.
167. Microcontroladores - Comunicación
USART, Universal Synchronous/Asynchronous
Receiver/Transmiter:
• Características:
• Comunicación sincrónica/asincrónica full-duplex de 8 o 9
bits.
• Opciones de paridad par, impar o ninguna. 1 o 2 Bits de
parada.
• Detección de errores de paridad y desbordamiento de
buffers.
• Capacidad de interrumpir al transmitir/recibir.
• Velocidades de transferencia de 29 bps hasta 1,875 Mbps.
168. Microcontroladores - Comunicación
CAN, Control Area Network:
• Sistema de comunicación orientado al mensaje. El
mensaje corre por la red y cada dispositivo filtra los de su
interés.
• Diseñado para entornos ruidosos.
• Longitud de datos entre 0 y 8 bytes.
• Tipos de Tramas:
• Estándar: transmisión de datos.
• Extendida: extender transmisión normal.
• Remota: para que algún nodo responda a un pedido.
• Error: transmitida por un nodo cuando detecta un error.
• Capacidad de interrumpir al transmitir/recibir.
• Velocidades de transferencia de 1 Mbps.
169. Microcontroladores - Comunicación
CAN – Esquema de conexión
Ejemplo:
Device 1
TX RX
CAN
Controller
CAN
Transeiver
Device 3
TX RX
CAN
Controller
CAN
Transeiver
Device 2
TX RX
CAN
Controller
CAN
Transeiver
170. Microcontroladores - Dispositivos
Temporizadores (Timers)/Contadores:
• Registros para contar (“tiempo” o eventos)
• Resolución: 8bits, 16bits, 32 bits.
• Para contar tiempos “largos” se combinan con:
• Otros contadores: 2 de 8 bits o 2 de 16 bits.
• Divisores de frecuencia:
• Prescaler: cuando esta como entrada del contador.
• Postscaler: cuando esta como salida del contador.
• Fuentes de entrada, controla cuando cuenta:
• interna: reloj interno, prescaler, contador.
• externa: señal externa que entrada desde un pin del micro.
• Generan eventos por desborde o por comparación con
registros programables:
• Interrupciones.
• Disparan conversiones A/D.
• Cambio en un pin de salida.
171. Microcontroladores - Dispositivos
Comparadores:
• Permite comparar dos valores analógicos a
través de 2 pines de entrada.
• Puede realizar una acción sobre un pin de salida:
• Cambiar su estado.
• Generar un pulso
• Generar un tren de pulsos.
• Tienen capacidad de interrumpir.
172. Microcontroladores - Dispositivos
Capturadores de entrada:
• Permite detectar un cambio en un pin de entrada.
• Cuando registra el evento almacena el valor de un
temporizador en un registro
• Útil para medir frecuencias.
• Tienen capacidad de interrumpir.
173. Microcontroladores - Dispositivos
Conversores Analógico/Digital:
• Permiten convertir una entrada analógica en un valor digital.
• Resolución comunes de 8, 10, 12 y 16 bits.
• Normalmente tienen un conversor A/D y un multiplexor para
seleccionar canales.
• Los micros de alto rendimiento normalmente pueden programarse
para muestreo secuencia de canales.
• Tienen capacidad de interrumpir al finalizar la conversión.
• Tipo de conversiones:
• Manual: cuando se lo indica.
• Automática: dispara una nueva conversión al terminar la actual.
• Automática por evento: se dispara la conversión al producirse un evento
asociado a un dispositivo (ej: timer).
174. Microcontroladores - Dispositivos
Codificadores de Cuadratura:
• son codificadores incrementales para detectar la posición
y velocidad de rotación de movimiento
• Tiene 3 señales: Fase A (QEA), Fase B(QEB) e índice
(INDX).
• Con estas señales e incrementa o decrementa un
contador según la dirección de giro.
• Este dispositivo cuenta con:
• Contador de posición de 16 bits.
• Cuenta, con estado de dirección.
• Resolución de cuenta por dos (x2) y por cuatro (x4).
• Interrupciones generadas por INDX o por eventos del contador.
176. Microcontroladores – Microchip PIC
• Son populares:
• Hay muchas herramientas para desarrollo.
• Es posible conseguir muchos de los modelos con facilidad.
• Es posible adquirir dispositivos para grabar los programas
(“programadores”) fácilmente y a bajo costo.
• Muchas “familias” de microcontroladores:
• Datos de 8 bits
• Datos de 16 bits
• Datos de 32 bits
• Procesamiento Digital de Señales (DSP ).
177. Microcontroladores – Microchip PIC
En la práctica usaremos:
• Microcontroladores de 8 bits PIC 16F84A (básico) y PIC
16F877 (completo).
• Entorno Isis – Proteus (versión demo) que permite
simular circuitos electrónicos , inclusive
microcontroladores.
• Compilador C, PICC (versión “lite”).
179. Microchip PIC - Arquitectura
• Arquitectura Harvard.
• Núcleo RISC.
• Cauce (Pipeline) de 4 etapas: fetch, decode, execute,
write-back.
• 35 instrucciones de 14 bits.
• Ejecución de instrucciones en 1 ciclo de instrucción (4 de
reloj). 2 ciclos para saltos.
• Velocidades de reloj de hasta 20 MHz (5 MIPS).
• Una única interrupción para varias fuentes.
• Memoria EEPROM que permite mantener datos
persistentes al estar apagado.
180. PIC – Memoria de Programa
• Hasta unos Kbytes de palabras.
• Vector de inicio en la posición 0: instrucción de salto a la
primera línea del programa.
• Vector de interrupción en posición 4: instrucción de salto
a la primera línea de rutina de interrupción única.
• Programa a partir de la posición 5, la capacidad depende
del modelo del microcontrolador.
• Pila para subrutinas de 8 niveles.
182. PIC – Memoria de Datos
• Memoria paginada (bancos), basada en banco de
registros: posición de memoria = registro.
• Siempre hay una pagina activa, para acceder a
posiciones fuera de la actual hay que cambiar de página
(si usamos C esto lo hace el compilador).
• Por razones de rendimiento algunos registros que se
usan frecuentemente (ej: para direccionamiento o estado
de ALU) se mapean en todas las páginas o bancos.
183. PIC – Memoria de Datos - Registros
• Propósito especial:
• Asociados al estado y control de dispositivos.
• reciben nombres según su función, incluso su bits.
• En general se ubican en las posiciones iniciales.
• Propósito general:
• RAM normal, se ubican después de los de propósito
especial.
184. BANCO DE REGISTROS 0 BANCO DE REGISTROS 1
Dir Nombre Descripción Dir Nombre Descripción
00h INDF*
Contenido apuntado por el registro FSR (no
es un registro físico)
80h INDF*
Contenido apuntado por el registro FSR (no
es un registro físico)
01h TMR0 Contador de 8 bit 81h OPTION Configuración asociada a TMR0
02h PCL* 8 bit bajos del Contador de Programa 82h PCL* 8 bit bajos del Contador de Programa
03h STATUS* Estado de operaciones aritméticas 83h STATUS* Estado de operaciones aritméticas
04h FSR*
Puntero indirecto de direccionamiento de
datos
84h FSR*
Puntero indirecto de direccionamiento de
datos
05h PORTA Puerto de entrada/salida A 85h TRISA Configuración del puerto A
06h PORTB Puerto de entrada/salida B 86h TRISB Configuración del puerto B
07h -- No implementada, se lee como "00" 87h -- No implementada, se lee como "00"
08h EEDATA Registro de datos EEPROM 88h EECON1 Registro de control de EEPROM
09h EEADR Registro de direcciones EEPROM 89h EECON2 Registro de control de EEPROM
0Ah PCLATH* Bits más significativos del PC 8Ah PCLATH* Bits más significativos del PC
0Bh INTCON* Registro de control de interrupciones 8Bh INTCON* Registro de control de interrupciones
0Ch
a
4Fh
--
68 registros de propósito general
(SDRAM)*
8Ch --*
Mapeados al Banco 0, es decir que la
lectura/escritura de estos registros se hace
sobre los registros del Banco 0
50h
A
7Fh
-- No implementados
D0h
A
FFh
-- No implementados
Registros de PIC 16F84A. * registros de bancos diferentes mapeados físicamente a un mismo registro.
185. PIC – Memoria de EEPROM
• Memoria de tipo flash, normalmente de hasta 256
bytes, algunos micros almacenan algunos kbytes. De
necesitar más se apoyan en dispositivos externos
con comunicación I2C o SPI.
• No es accesible directamente, se utilizan registros de
funciones especiales:
• Dirección: posición que se quiere acceder.
• Datos: registro donde se lee/escribe el valor.
• Generan interrupción al finalizar la operación.
186. PIC – Entrada/Salida
• Permiten a través de un registro (puerto) enviar/recibir
una señal digital al exterior
• La cantidad de puertos depende del modelo del
microcontrolador.
• Se nombra al registro que permite el acceso como
PORT{X} donde X es una letra, “A” para el 1º, “B” para el
2º, etc.
• Un registro PORT{X} tiene asociado otro de control
TRIS{X} que configura el hardware para controlar el
sentido de cada bit:
• “1” en bit de TRIS{X}, bit de PORT{X} es entrada.
• “0” en bit de TRIS{X}, bit de PORT{X} es salida.
187. PIC – Entrada/Salida
• Cada bit del registro PORT{X} también recibe un
nombre R{X}{Y} donde X es el nombre del puerto
que pertenecen e Y es el número de bit
Bit 2 (3er bit) del Puerto A
TRISA = 4 (00000100b)
Configura el Bit 2 como
entrada y el resto como
salida
Variable = PORTA AND 4