![Page 1: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/1.jpg)
UPV / EHU Programación Concurrente
en Linux
1 Alberto Lafuente, Dep. KAT/ATC de la UPV/EHU, bajo Licencia Creative Commons
Eventos e interrupciones
![Page 2: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/2.jpg)
UPV / EHU
2
Contenido
1. Interacción en un programa: entrada/salida
2. Eventos en la ejecución del programa: interrupciones y excepciones
3. Tratamiento de eventos por el sistema operativo.
![Page 3: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/3.jpg)
UPV / EHU
3
1. Interacción en un programa: entrada/salida
![Page 4: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/4.jpg)
UPV / EHU
4
Ejecución de un programa
• Básicamente el programa ejecuta un flujo de instrucciones máquina • La mayoría acceden a registros del procesador o
a direcciones de memoria
• Algunas de estas instrucciones acceden a los dispositivos controlados por el sistema operativo • Por ejemplo, para entrada/salida
• También suceden eventos asíncronos a la ejecución del programa • Por ejemplo, una interrupción del reloj
![Page 5: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/5.jpg)
UPV / EHU
Entrada/salida
• Los dispositivos de entrada/salida son muy heterogéneos: • Velocidad • Representación de los datos • Protocolos • Operaciones • Unidad de transferencia (bloques, caracteres…) • Tipos de errores • Modo de tratar la E/S
• Homogeneizar el acceso a los dispositivos: • los controladores de E/S como interfaz hardware
unificada
![Page 6: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/6.jpg)
UPV / EHU
Entrada/salida Interfaz hardware
Controlador
Reg. Datos Reg. Control Reg. Estado
Memoria
Procesador
Dispositivo Dispositivo
Controlador
Reg. Datos Reg. Control Reg. Estado
Dispositivo
![Page 7: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/7.jpg)
UPV / EHU
Entrada/salida Interfaz hardware
• Elementos de la interfaz: • Espacio de direcciones de E/S, que puede ser
• Memory-mapped • Independiente del de memoria
• Operaciones de E/S mediante instrucciones máquina
• Memory-mapped: LOAD/STORE • Espacios independientes: IN/OUT
![Page 8: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/8.jpg)
UPV / EHU
Entrada/salida Modos de operación
• Encuesta 1. Espera activa sobre Registro de Estado 2. Acceso a Registro de Datos
• Interrupciones • El dispositivo cuenta con una línea de interrupción • Cuando se activa la interrupción, se ejecuta la Rutina de
Servicio que gestiona la E/S: 1. Comprobación sobre Registro de Estado 2. Acceso a Registro de Datos
• Acceso Directo a Memoria (DMA) • Los dispositivos de bloques no involucran a la CPU en el
acceso a cada byte 1. Se programa la operación de DMA 2. Se ordena su inicio sobre un Registro de Control 3. El fin de la operación se anuncia mediante una interrupción 4. La Rutina de Servicio a la Interrupción de DMA comprueba sobre
un Registro de Estado.
![Page 9: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/9.jpg)
UPV / EHU
Gestión de la entrada/salida Manejadores de dispositivos (drivers)
• Driver: código que monopoliza el acceso al dispositivo.
• El resto del sistema operativo es independiente del dispositivo.
• Un modelo de entrada/salida: cliente-servidor • Las rutinas de E/S son clientes del driver.
![Page 10: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/10.jpg)
UPV / EHU
Gestión de la entrada/salida Interfaz del sistema operativo
• El sistema operativo ofrece una interfaz unificada para las operaciones de E/S: las llamadas al sistema.
• En Linux: • open(), close(), read(), write()
• El programador de aplicaciones no tiene que estar pendiente de cómo se implementa la rutina de E/S o el driver del dispositivo concreto.
• Las funciones de biblioteca (por ejemplo de C: printf(), scanf()…) usan estas llamadas al sistema.
![Page 11: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/11.jpg)
UPV / EHU
11
2. Eventos en la ejecución del programa: interrupciones y
excepciones
![Page 12: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/12.jpg)
UPV / EHU
Interrupciones y excepciones
• Excepción: • Evento que, producido durante la ejecución de un
programa, provoca que el procesador ejecute un código especial para tratarla.
• También llamadas interrupciones internas. • Ejemplo: intento de dividir por cero.
• Interrupción: • Condición asíncrona provocada por un dispositivo
externo. • También llamadas excepciones asíncronas. • Se tratan de la misma forma que las
excepciones. • Ejemplos: reloj, teclado, DMA…
![Page 13: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/13.jpg)
UPV / EHU
Hardware para interrupciones
• En un sistema puede haber diferentes fuentes de interrupción, con diferentes prioridades: • Sensores • Reloj • Dispositivos de E/S
• Al procesador del sistema le llega una única línea de interrupción.
• Controlador Programable de Interrupciones (PIC): • Prioriza y selecciona las interrupciones.
![Page 14: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/14.jpg)
UPV / EHU
Controladores de interrupciones (PIC)
PIC CPU
Acelerómetro
Reloj
Teclado
Sensor de posición
VI
Interrupción
+ PRIORIDAD -
![Page 15: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/15.jpg)
UPV / EHU
• En la CPU, las interrupciones pueden • Inhibirse (todas ellas) • Enmascararse (selectivamente), excepto las No
Enmascarables • Tanto interrupciones como excepciones
generan una dirección de entrada a una tabla que contiene las direcciones de comienzo de las Rutinas de Servicio (ISR). • Atención a la terminología: a esta dirección
también se le suele llamar “vector de interrupción”.
Software para manejar interrupciones
![Page 16: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/16.jpg)
UPV / EHU
Manejo de interrupciones Esquema de direccionamiento de la ISR
PIC
Memoria
Interrupción externa
ISRi
ISRn
ISR1
Tabla de VIs
CPU
Excepción
@ VI
![Page 17: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/17.jpg)
UPV / EHU
Mecanismo de ejecución de una interrupción
• La interrupción/excepción requiere su propio contexto de ejecución (pila).
• Debe guardarse el contexto del programa que se está ejecutando para recuperarlo tras la ejecución.
![Page 18: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/18.jpg)
UPV / EHU
Ejecución de interrupciones. Ejemplo
![Page 19: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/19.jpg)
UPV / EHU
1. Se está ejecutando una tarea.
CPU
SP Pila
Ejecución de interrupciones. Ejemplo
![Page 20: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/20.jpg)
UPV / EHU
20
1. Se está ejecutando una tarea.
2. Se produce una interrupción de prioridad baja.
CPU
SP Pila
Ejecución de interrupciones. Ejemplo
![Page 21: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/21.jpg)
UPV / EHU
21
1. Se está ejecutando una tarea.
2. Se produce una interrupción de prioridad baja.
Estado del procesador
3. Se guarda el estado de procesador en la pila del programa.
CPU
SP Pila
Ejecución de interrupciones. Ejemplo
![Page 22: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/22.jpg)
UPV / EHU
22
1. Se está ejecutando una tarea.
2. Se produce una interrupción de prioridad baja.
Estado del procesador
3. Se guarda el estado de procesador en la pila del programa.
CPU
SP Pila
Ejecución de interrupciones. Ejemplo
4. Se ejecuta la rutina de servicio ISRL.
![Page 23: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/23.jpg)
UPV / EHU
23
1. Se está ejecutando una tarea.
2. Se produce una interrupción de prioridad baja.
Estado del procesador
3. Se guarda el estado de procesador en la pila del programa.
5. Se produce una interrupción de prioridad alta.
4. Se ejecuta la rutina de servicio ISRL.
CPU
SP Pila
Ejecución de interrupciones. Ejemplo
![Page 24: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/24.jpg)
UPV / EHU
24
1. Se está ejecutando una tarea.
2. Se produce una interrupción de prioridad baja.
Estado del procesador
3. Se guarda el estado de procesador en la pila del programa.
5. Se produce una interrupción de prioridad alta.
4. Se ejecuta la rutina de servicio ISRL.
CPU
SP Pila
Ejecución de interrupciones. Ejemplo
Estado del procesador
6. Se guarda el estado de procesador.
![Page 25: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/25.jpg)
UPV / EHU
25
1. Se está ejecutando una tarea.
2. Se produce una interrupción de prioridad baja.
Estado del procesador
3. Se guarda el estado de procesador en la pila del programa.
5. Se produce una interrupción de prioridad alta.
4. Se ejecuta la rutina de servicio ISRL.
CPU
SP Pila
Ejecución de interrupciones. Ejemplo
Estado del procesador
6. Se guarda el estado de procesador.
7. Se ejecuta la rutina de servicio ISRH.
![Page 26: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/26.jpg)
UPV / EHU
26
1. Se está ejecutando una tarea.
2. Se produce una interrupción de prioridad baja.
Estado del procesador
3. Se guarda el estado de procesador en la pila del programa.
5. Se produce una interrupción de prioridad alta.
4. Se ejecuta la rutina de servicio ISRL.
CPU
SP Pila
Ejecución de interrupciones. Ejemplo
Estado del procesador
6. Se guarda el estado de procesador.
7. Se ejecuta la rutina de servicio ISRH.
8. Termina ISRH. Se vuelve a ISRL.
![Page 27: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/27.jpg)
UPV / EHU
27
1. Se está ejecutando una tarea.
2. Se produce una interrupción de prioridad baja.
Estado del procesador
3. Se guarda el estado de procesador en la pila del programa.
5. Se produce una interrupción de prioridad alta.
4. Se ejecuta la rutina de servicio ISRL.
CPU
SP Pila
Ejecución de interrupciones. Ejemplo
6. Se guarda el estado de procesador.
7. Se ejecuta la rutina de servicio ISRH.
8. Termina ISRH. Se vuelve a ISRL.
![Page 28: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/28.jpg)
UPV / EHU
28
1. Se está ejecutando una tarea.
2. Se produce una interrupción de prioridad baja.
Estado del procesador
3. Se guarda el estado de procesador en la pila del programa.
5. Se produce una interrupción de prioridad alta.
4. Se ejecuta la rutina de servicio ISRL.
CPU
SP Pila
Ejecución de interrupciones. Ejemplo
6. Se guarda el estado de procesador.
7. Se ejecuta la rutina de servicio ISRH.
8. Termina ISRH. Se vuelve a ISRL.
9. Termina ISRL. Se vuelve al punto de ejecución de la tarea.
![Page 29: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/29.jpg)
UPV / EHU
29
1. Se está ejecutando una tarea.
2. Se produce una interrupción de prioridad baja.
3. Se guarda el estado de procesador en la pila del programa.
5. Se produce una interrupción de prioridad alta.
4. Se ejecuta la rutina de servicio ISRL.
CPU
SP Pila
Ejecución de interrupciones. Ejemplo
6. Se guarda el estado de procesador.
7. Se ejecuta la rutina de servicio ISRH.
8. Termina ISRH. Se vuelve a ISRL.
9. Termina ISRL. Se vuelve al punto de ejecución de la tarea.
![Page 30: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/30.jpg)
UPV / EHU
30
3. Tratamiento de eventos por el sistema operativo
![Page 31: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/31.jpg)
UPV / EHU • Recordemos que el sistema operativo ofrece al programador una interfaz unificada de llamadas al sistema para tratar eventos de E/S (p.ej., read() en Linux).
• Para los eventos de tiempo un sistema operativo ofrece dos servicios: • Un reloj software
• En Linux, gettimeofday() • Temporización (programar evento de tiempo)
• En Linux, alarm()
Tratamiento de eventos por el sistema operativo
Ejemplo: el reloj
![Page 32: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/32.jpg)
UPV / EHU
Relojes
• Reloj de tiempo real (RTC) • Siempre en funcionamiento. Requiere
alimentación propia. • Reloj Hardware
• Se carga con el RTC al arrancar el sistema. • Produce las interrupciones de reloj. • Suele ser programable (PIT, p. ej., Intel 8253). • Puede tener otras funciones (p. ej., refresco de la
DRAM). • Reloj del sistema
• Es un reloj software implementado a partir de la rutina de interrupción del reloj hardware. • Por ejemplo, si el reloj hw interrumpe con una frecuencia
f, cada f interrupciones incrementa un contador de segundos.
![Page 33: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/33.jpg)
UPV / EHU
Reloj del sistema
Reloj Hw
/sbin/hwclock
Hw
SO
date adjtimex
gettimeofday() settimeofday()
Relojes en Linux
![Page 34: Eventos e interrupciones - ocw.ehu.eus · Modos de operación • Encuesta 1. ... Controladores de interrupciones (PIC) PIC CPU Acelerómetro Reloj Teclado Sensor de posición VI](https://reader031.vdocuments.co/reader031/viewer/2022021805/5baa829909d3f221798ca6df/html5/thumbnails/34.jpg)
UPV / EHU #include <sys/time.h>
struct timeval t0, t1;
gettimeofday(&t0, NULL);
/* aquí, el código a cronometrar */
gettimeofday(&t1, NULL);
printf("Duracion: %d,%d segundos\n", t1.tv_sec-t0.tv_sec, t1.tv_usec-t0.tv_usec);
Relojes en Linux Ejemplo: cronómetro de alta resolución