SlideShare una empresa de Scribd logo
1 de 189
Descargar para leer sin conexión
PROGRAMACIÓN EN
TIEMPO REAL
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.
Índice
• Clase 1................................................4
• Clase 2..............................................48
• Clase 3............................................102
• Clase 4............................................155
INTRODUCCIÓN A
SISTEMAS DE TIEMPO
REAL
Clase 1
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.
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
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
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
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
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
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.
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.
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
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)
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.
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.
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
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)
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
Generalidades STR y SDTR - Procesos
• Tenemos clases de Procesos
Periódicos - Aperiódicos
Dinámico – Estáticos
Crítico
Esencial
No-Esencial
Concurrente/paralela
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
Ejecución de una tarea de tiempo real
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
Diferencia con los SistemasTradicionales
• Mejorar
Utilización de recursos
Tiempos de respuesta
Prioridades
• Dispositivos externos
• Mensajes a intervalos irregulares
• Modelar procesos concurrentes
Diferencia con los Sistemas Tradicionales - 2
• Comunicaciones entre procesos
• Testing
• Construcción de simuladores
• Ejecución
Continua
Automática
Segura
Ejemplos de STR -1
• Procesos de control
Asegurar flujo controlando la válvula sin que se
sobrecargue el pipe
Ejemplos de STR -2
Procesos de control
Rol en un ambiente completo de control
Ejemplos de STR -3
• Manufacturas
Incremento en la productividad y bajos costos
Ejemplos de STR -4
• Comunicaciones, Comando y Control
similares aTermino militar pero tiene características
reservaciones de pasajes, cajeros, etc.
Ejemplos de STR -5
• Sistemas Embebidos Generalizados
Computadora enlazada directamente en equipos físicos.
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.
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
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 .
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
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.
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)
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)
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
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
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
Hardware – SistemasMulti-procesador
• Aplicaciones
Sistemas de adquisición
Hardware –Sistemas Multi-procesador- 2
• Aplicaciones
Robótica
Hardware –Sistemas Multi-procesador- 3
• Aplicaciones
E/S intensiva
Sistema tolerantes a fallas
Hardware – Comunicacióninterprocesadores
• Concurrencia y Abstracción de Procesos
• Como se comunican
• LAN
• WAN
• bus
Hardware – Comunicación interprocesadores- WAN-
LAN
• Características de comunicación
• Enlaces físicos
• Protocolos
• Software
• Hardware
• Topología de Red
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
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
PROGRAMACIÓN EN
TIEMPO REAL
Clase 2
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
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
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).
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
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.
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.
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.
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.
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.
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.
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
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 );
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
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.
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
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
Excepciones
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
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
Camino de una interrupción
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;
}
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)
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)
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
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
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
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)
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)
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();
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
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);
}
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
}
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
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
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();
}
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
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
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
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.
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)
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.
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.
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.
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
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).
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.
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.
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
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.
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
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
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
Diagrama en bloques HPET
PROGRAMACIÓN EN
TIEMPO REAL
Clase 3
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
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.
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.
Señales analógicas
• Frecuencia
• Señales compuestas: Fourier
• Digitalización
• Frecuencia de muestreo?
Fourier
Conversor analógico-digital
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,
Hardware
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
ADQ12
• Placa conversora analógico digital 12 bits
• Entradas analógicas y digitales
• Salidas digitales
• Pacer y timer
Diagrama en bloques
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
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)
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)
Registro de control (CTREG)
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
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
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
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.
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
Conversión A/D. Conexión unipolar.
Lenguaje C
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.
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
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.
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
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.
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.
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
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%
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
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
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
Planificación
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
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.
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.
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.
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.
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
Ejecutivos cíclicos
El seudo código será:
Loop
espera_interrupción;
procedimiento_para_a;
procedimiento_para_b;
procedimiento_para_c;
espera_interrupción;
procedimiento_para_a;
procedimiento_para_b;
procedimiento_para_d;
espera_interrupción;
procedimiento_para_a;
procedimiento_para_b;
procedimiento_para_c;
espera_interrupción;
procedimiento_para_a;
procedimiento_para_b;
End loop;
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
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.
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.
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).
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).
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.
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.
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
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.
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
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.
PROGRAMACIÓN EN
TIEMPO REAL
Clase 4
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
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
Microprocesador vs. Microcontrolador
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.
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.
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.
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.
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.
Microcontroladores - Comunicación
SPI – Esquema de conexión
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.
Microcontroladores - Comunicación
I2C - Esquema de conexión
I2C - Lectura de dispositivo de memoria EEPROM
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.
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.
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
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.
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.
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.
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).
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.
Microcontroladores - Dispositivos
• Codificadores de Cuadratura
Detección
de
dirección
Detección
de cambio
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 ).
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”).
Microcontroladores – Microchip PIC
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.
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.
PIC – Memoria de Programa
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.
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.
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.
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.
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.
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
PIC – Entrada/Salida
• La programación del 2º puerto (PORTB) puede realizarse:
Microcontroladores – Desarrollo
• Microchip MPLAB: www.microchip.com
• CMX System: www.cmx.com
• IAR Systems : www.iar.com
• Hi-Tech Software : www.htsoft.com
• Atmel: www.atmel.com
• Arduino: arduino.cc

Más contenido relacionado

La actualidad más candente

Sistemas operativos - Sistemas De Archivos - reporte unidad 5
Sistemas operativos - Sistemas De Archivos - reporte unidad 5Sistemas operativos - Sistemas De Archivos - reporte unidad 5
Sistemas operativos - Sistemas De Archivos - reporte unidad 5Dj Mada - Tres Valles, Veracruz
 
Mapa conceptual sobre
Mapa conceptual sobre Mapa conceptual sobre
Mapa conceptual sobre Juan Anaya
 
Software en reporte y bitacora
Software en reporte y bitacoraSoftware en reporte y bitacora
Software en reporte y bitacoraCECyTEO
 
Power designer-presentación
Power designer-presentaciónPower designer-presentación
Power designer-presentaciónskrapy95
 
Modelo requisitos UML
Modelo requisitos UMLModelo requisitos UML
Modelo requisitos UMLramirezjaime
 
Requerimientos Funcionales y No Funcionales
Requerimientos Funcionales y No FuncionalesRequerimientos Funcionales y No Funcionales
Requerimientos Funcionales y No FuncionalesCarlos Macallums
 
Desarrollo de sistemas en tiempo real
Desarrollo de sistemas en tiempo realDesarrollo de sistemas en tiempo real
Desarrollo de sistemas en tiempo realLuis Palacios Tafur
 
Recursividad
RecursividadRecursividad
Recursividadbetzy
 
Diagramas De Casos De Uso
Diagramas De Casos De UsoDiagramas De Casos De Uso
Diagramas De Casos De Usonahun1385
 
Análisis de requerimientos
Análisis de requerimientosAnálisis de requerimientos
Análisis de requerimientosGustavo Araque
 
Ingenieria de requerimientos 1
Ingenieria de requerimientos 1Ingenieria de requerimientos 1
Ingenieria de requerimientos 1jmpov441
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Osiris Mirerus
 

La actualidad más candente (20)

Sistemas operativos - Sistemas De Archivos - reporte unidad 5
Sistemas operativos - Sistemas De Archivos - reporte unidad 5Sistemas operativos - Sistemas De Archivos - reporte unidad 5
Sistemas operativos - Sistemas De Archivos - reporte unidad 5
 
Casos De Uso
Casos De UsoCasos De Uso
Casos De Uso
 
Mapa conceptual sobre
Mapa conceptual sobre Mapa conceptual sobre
Mapa conceptual sobre
 
Software en reporte y bitacora
Software en reporte y bitacoraSoftware en reporte y bitacora
Software en reporte y bitacora
 
Power designer-presentación
Power designer-presentaciónPower designer-presentación
Power designer-presentación
 
UNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR
UNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADORUNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR
UNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR
 
Modelo requisitos UML
Modelo requisitos UMLModelo requisitos UML
Modelo requisitos UML
 
Requerimientos Funcionales y No Funcionales
Requerimientos Funcionales y No FuncionalesRequerimientos Funcionales y No Funcionales
Requerimientos Funcionales y No Funcionales
 
Desarrollo de sistemas en tiempo real
Desarrollo de sistemas en tiempo realDesarrollo de sistemas en tiempo real
Desarrollo de sistemas en tiempo real
 
Diagramas uml
Diagramas umlDiagramas uml
Diagramas uml
 
Examen complexivo sql resuelto
Examen complexivo sql resueltoExamen complexivo sql resuelto
Examen complexivo sql resuelto
 
Recursividad
RecursividadRecursividad
Recursividad
 
Diagramas De Casos De Uso
Diagramas De Casos De UsoDiagramas De Casos De Uso
Diagramas De Casos De Uso
 
Formato ieee830(srs lleno)
Formato ieee830(srs lleno)Formato ieee830(srs lleno)
Formato ieee830(srs lleno)
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Dígitos de verificación
Dígitos de verificaciónDígitos de verificación
Dígitos de verificación
 
Diagrama de casos de usos
Diagrama de casos de usosDiagrama de casos de usos
Diagrama de casos de usos
 
Análisis de requerimientos
Análisis de requerimientosAnálisis de requerimientos
Análisis de requerimientos
 
Ingenieria de requerimientos 1
Ingenieria de requerimientos 1Ingenieria de requerimientos 1
Ingenieria de requerimientos 1
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1
 

Similar a Programación en tiempo real

Similar a Programación en tiempo real (20)

Conceptos
ConceptosConceptos
Conceptos
 
Apuntes SITR
Apuntes SITRApuntes SITR
Apuntes SITR
 
Sistemas en tiempo real.
Sistemas en tiempo real.Sistemas en tiempo real.
Sistemas en tiempo real.
 
Sistemas tiempo-real
Sistemas tiempo-realSistemas tiempo-real
Sistemas tiempo-real
 
Software en tiempo real
Software en tiempo realSoftware en tiempo real
Software en tiempo real
 
Software en tiempo real
Software en tiempo realSoftware en tiempo real
Software en tiempo real
 
Mantenimiento de Pc
Mantenimiento de PcMantenimiento de Pc
Mantenimiento de Pc
 
Sistemas de tiempo real
Sistemas de tiempo realSistemas de tiempo real
Sistemas de tiempo real
 
Planificador del procesador
Planificador del procesadorPlanificador del procesador
Planificador del procesador
 
Sistema operativo de tiempo real
Sistema operativo de tiempo realSistema operativo de tiempo real
Sistema operativo de tiempo real
 
Sistema operativo de tiempo real
Sistema operativo de tiempo realSistema operativo de tiempo real
Sistema operativo de tiempo real
 
Fiabilida.tolerancia
Fiabilida.toleranciaFiabilida.tolerancia
Fiabilida.tolerancia
 
dra. Adela mendoza Confiabilidad equipo 3 topicos 2
dra. Adela mendoza Confiabilidad equipo 3 topicos 2dra. Adela mendoza Confiabilidad equipo 3 topicos 2
dra. Adela mendoza Confiabilidad equipo 3 topicos 2
 
mantenimiento preventivo y correctivo.pptx
mantenimiento preventivo y correctivo.pptxmantenimiento preventivo y correctivo.pptx
mantenimiento preventivo y correctivo.pptx
 
Sistemas en tiempo real
Sistemas en tiempo realSistemas en tiempo real
Sistemas en tiempo real
 
Bloque 1
Bloque 1  Bloque 1
Bloque 1
 
Maneja diferentes sistemas operativos
Maneja diferentes sistemas operativosManeja diferentes sistemas operativos
Maneja diferentes sistemas operativos
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Arquitectura de referencia para sistemas en tiempo real
Arquitectura de referencia para sistemas en tiempo realArquitectura de referencia para sistemas en tiempo real
Arquitectura de referencia para sistemas en tiempo real
 

Último

Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 

Último (7)

Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 

Programación en tiempo real

  • 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.
  • 3. Índice • Clase 1................................................4 • Clase 2..............................................48 • Clase 3............................................102 • Clase 4............................................155
  • 4. INTRODUCCIÓN A SISTEMAS DE TIEMPO REAL Clase 1
  • 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
  • 20. Generalidades STR y SDTR - Procesos • Tenemos clases de Procesos Periódicos - Aperiódicos Dinámico – Estáticos Crítico Esencial No-Esencial Concurrente/paralela
  • 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
  • 22. Ejecución de una tarea de tiempo real
  • 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
  • 41. Hardware – SistemasMulti-procesador • Aplicaciones Sistemas de adquisición
  • 42. Hardware –Sistemas Multi-procesador- 2 • Aplicaciones Robótica
  • 43. Hardware –Sistemas Multi-procesador- 3 • Aplicaciones E/S intensiva Sistema tolerantes a fallas
  • 44. Hardware – Comunicacióninterprocesadores • Concurrencia y Abstracción de Procesos • Como se comunican • LAN • WAN • bus
  • 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
  • 68. Camino de una interrupción
  • 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.
  • 106. Señales analógicas • Frecuencia • Señales compuestas: Fourier • Digitalización • Frecuencia de muestreo?
  • 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
  • 123. Conversión A/D. Conexión unipolar. Lenguaje C
  • 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
  • 142. Ejecutivos cíclicos El seudo código será: Loop espera_interrupción; procedimiento_para_a; procedimiento_para_b; procedimiento_para_c; espera_interrupción; procedimiento_para_a; procedimiento_para_b; procedimiento_para_d; espera_interrupción; procedimiento_para_a; procedimiento_para_b; procedimiento_para_c; espera_interrupción; procedimiento_para_a; procedimiento_para_b; End loop;
  • 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.
  • 154.
  • 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.
  • 164. Microcontroladores - Comunicación SPI – Esquema de conexión
  • 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.
  • 166. Microcontroladores - Comunicación I2C - Esquema de conexión I2C - Lectura de dispositivo de memoria EEPROM
  • 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.
  • 175. Microcontroladores - Dispositivos • Codificadores de Cuadratura Detección de dirección Detección de cambio
  • 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.
  • 181. PIC – Memoria de Programa
  • 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
  • 188. PIC – Entrada/Salida • La programación del 2º puerto (PORTB) puede realizarse:
  • 189. Microcontroladores – Desarrollo • Microchip MPLAB: www.microchip.com • CMX System: www.cmx.com • IAR Systems : www.iar.com • Hi-Tech Software : www.htsoft.com • Atmel: www.atmel.com • Arduino: arduino.cc