PDF de programación - Master en Computación - Plataformas de Tiempo Real - POSIX Avanzado y Extensiones - Tema 2. Gestión de Interrupciones en MaRTE OS

Imágen de pdf Master en Computación - Plataformas de Tiempo Real - POSIX Avanzado y Extensiones - Tema 2. Gestión de Interrupciones en MaRTE OS

Master en Computación - Plataformas de Tiempo Real - POSIX Avanzado y Extensiones - Tema 2. Gestión de Interrupciones en MaRTE OSgráfica de visualizaciones

Publicado el 14 de Enero del 2017
849 visualizaciones desde el 14 de Enero del 2017
112,1 KB
10 paginas
Creado hace 9a (07/05/2014)
Master en Computación

Plataformas de Tiempo Real

POSIX Avanzado y Extensiones

Tema 1. Ficheros y entrada/salida

Tema 2. Gestión de Interrupciones en MaRTE OS

Tema 3. Monitorización y control del tiempo de ejecución
Tema 4. Planificación EDF
Tema 5. Planificación a Nivel de Aplicación

Plataformas de Tiempo Real

Tema 2. Gestión de Interrupciones en MaRTE OS

© M. Aldea, M. González

Mayo-2014

Tema 2. Gestión de Interrupciones en

MaRTE OS



1



Interrupciones

2.1.
2.2. Modelos de gestión de interrupciones en MaRTE OS
2.3.
2.4. Ejemplo: Espera de interrupción
2.5. Ejemplo: Sincronización con semáforos

Interfaz para la gestión de interrupciones

Plataformas de Tiempo Real

Tema 2. Gestión de Interrupciones en MaRTE OS

© M. Aldea, M. González

Mayo-2014

2

2.1 Interrupciones
Interrupción: mecanismo mediante el cual es posible interrumpir
la ejecución del programa ejecutado por la CPU

2.1 Interrupciones

La mayoría de los dispositivos utilizan interrupciones para
notificar a la CPU que se ha producido un evento:

• nuevo dato disponible
• posibilidad de enviar nuevo dato
• cambio en una línea de estado
• error
• etc.

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014

3

Tema 2. Gestión de Interrupciones en MaRTE OS

Conceptos fundamentales

2.1 Interrupciones

Tras la interrupción el programa permanece suspendido mientras
se ejecuta la rutina de servicio de interrupción (ISR) (también
denominada manejador de la interrupción)

Ejecución secuencial
del programa

Interrupción

Continua la
ejecución secuencial
del programa

...
a = b + 4;
c := 2 * PI * r;
if (a > 0)
a = 0;
else
b = b + 1;
...

manejador()
{
código del
manejador;
}

Plataformas de Tiempo Real

Tema 2. Gestión de Interrupciones en MaRTE OS

© M. Aldea, M. González

Mayo-2014

4

2.1 Interrupciones

Conceptos fundamentales (cont.)

Las distintas interrupciones que se pueden producir en un
computador se identifican mediante un número (tipo de la
interrupción)
La tabla de vectores de interrupción establece el enlace entre cada
tipo de interrupción y su ISR asociada

Manejador1
begin
...;
end Manejador1;

Manejador2
begin
...;
end Manejador2;

Tabla de vectores
de interrupción
0

tipo de

1
2
interrupción
3

4

5

...

1

Plataformas de Tiempo Real

Tema 2. Gestión de Interrupciones en MaRTE OS

© M. Aldea, M. González

Mayo-2014

2.1 Interrupciones

Ciclo de atención a interrupción
1. Se genera una interrupción, el procesador termina la

instrucción ensamblador que estaba ejecutando

Interrupción

PCPC

Flags

...
mov 0x80616d3,%eax
movl $0xf,0x4(%esp)
mov %eax,(%esp)
sub $0x4,%esp
mov 0x4(%ebp),%edx
...

2. Se salva en el stack el estado del procesador (contador de

programa y registro de estado)

PCPC

Flags

stack

PC
Flags
XX
XX

© M. Aldea, M. González

Mayo-2014

Plataformas de Tiempo Real

5

6

Tema 2. Gestión de Interrupciones en MaRTE OS

2.1 Interrupciones

Ciclo de atención a interrupción (cont.)

3. La CPU lee el tipo de interrupción y obtiene la dirección de su

ISR utilizando la tabla de vectores de interrupción

Tipo de

interrupción

5

Bus de datos

PCPC

Flags

Tabla de vectores
de interrupción

4

5

6

Manejador5
begin
...;
end Manejador5;

4. Se carga la dirección de comienzo de la ISR en el PC y se

deshabilitan nuevas interrupciones

Deshabilita

interrupciones

PCPC

Flags

Manejador5
begin
...;
end Manejador5;

Plataformas de Tiempo Real

Tema 2. Gestión de Interrupciones en MaRTE OS

© M. Aldea, M. González

Mayo-2014

7

2.1 Interrupciones

Ciclo de atención a interrupción (cont.)

5. Se ejecuta la ISR hasta llegar a la instrucción de retorno de

interrupción (RTI)

PCPC

Flags

Manejador5
begin
...;
RTI;
end Manejador5;

6. La instrucción RTI recupera del stack el estado original de la

CPU, con lo que el procesador continua la ejecución del
programa interrumpido

stack

PC
Flags
XX
XX

PCPC

Flags

...
mov 0x80616d3,%eax
movl $0xf,0x4(%esp)
mov %eax,(%esp)
sub $0x4,%esp
mov 0x4(%ebp),%edx
...

Plataformas de Tiempo Real

Tema 2. Gestión de Interrupciones en MaRTE OS

© M. Aldea, M. González

Mayo-2014

Controlador de interrupciones

2.1 Interrupciones



r
o
d
a
l
o
r
t
n
o
C

s
e
n
o
i
c
p
u
r
r
e
t
n

i

e
d

Temporizador

Líneas de requerimiento
de interrupción

Las líneas de requerimiento
de interrupción de cada
dispositivo no se conectan
directamente al procesador,
si no que lo hacen a través
del Circuito Controlador de
Interrupciones

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014

8

9

Tema 2. Gestión de Interrupciones en MaRTE OS

Tabla de vectores de interrupción de un PC

2.1 Interrupciones

Tipo de

interrupción

0

1

2

3

4

5

6

7

Temporizador

Teclado

PIC esclavo

COM2

COM1

Paral. 2/tarj. sonido

Disquete

Paralelo 1

8

9

10

11

12

13

14

15

RTC

Reservada

Reservada

Reservada

Ratón PS/2

Coprocesador

Disco Duro

Reservada

...

...

Plataformas de Tiempo Real

Tema 2. Gestión de Interrupciones en MaRTE OS

© M. Aldea, M. González

Mayo-2014

10

Configuración de las interrupciones hardware en

2.1 Interrupciones

un PC estándar



C
P

I

)
r
e
t
s
a
M

(

IRQ0

IRQ1

IRQ2

IRQ3

IRQ4

IRQ5

IRQ6

IRQ7

Temporizador

Serie 2

Paralelo 2

Serie 1

Paralelo 1

C
P

I

)
e
v
a
S

l

(

IRQ8

IRQ9

IRQ10

IRQ11

IRQ12

IRQ13

IRQ14

IRQ15

Reloj

Reservada

Reservada

Reservada

Ratón PS/2

Coprocesador

Reservada

Plataformas de Tiempo Real

Tema 2. Gestión de Interrupciones en MaRTE OS

© M. Aldea, M. González

Mayo-2014

11

2.2 Modelos de gestión de interrupciones en

2.2 Modelos de gestión de interrupciones en MaRTE OS

MaRTE OS

MaRTE OS permite dos modelos de gestión de interrupciones:
• Thread asociada con ISR

- utilizado cuando el driver tiene un thread dedicado (es el

único thread que accede directamente al dispositivo)

 más sencillo y eficiente
 sólo puede haber un thread asociado con cada interrupción

• Sincronización por semáforos

- utilizado cuando varios threads de usuario acceden

directamente al dispositivo

 un thread puede esperar a la vez a varias interrupciones
 varios threads pueden esperar a la misma interrupción

- los threads se encolan en el semáforo y son atendidos por prioridad

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014

12

Tema 2. Gestión de Interrupciones en MaRTE OS

Thread asociada con ISR

Aplicación

2.2 Modelos de gestión de interrupciones en MaRTE OS

Driver

Thread

posix_intr_timedwait

Procesa dato

Thread
dedicado

Thread

Mutex y CV

Interrupción

Lee dato del
dispositivo
Manejador

Thread

Buffer

Buffer

Plataformas de Tiempo Real

Tema 2. Gestión de Interrupciones en MaRTE OS

Sincronización por semáforo

© M. Aldea, M. González

Mayo-2014

13

2.2 Modelos de gestión de interrupciones en MaRTE OS

Aplicación

Thread

Driver

Interrupción

wait

post

Semáforo

Lee dato del
dispositivo
Manejador

Thread

Buffer

Plataformas de Tiempo Real

Tema 2. Gestión de Interrupciones en MaRTE OS

© M. Aldea, M. González

Mayo-2014

14

2.3 Interfaz para la gestión de interrupciones

2.3 Interfaz para la gestión de interrupciones
La gestión de interrupciones no está estandarizada en POSIX
MaRTE OS proporciona una interfaz no estándar (en <intr.h>)
que permite:

• instalar y desinstalar manejadores de interrupción
- posix_intr_associate() y
posix_intr_disassociate()
• bloquear y desbloquear interrupciones
- posix_intr_lock() y posix_intr_unlock()
• esperar interrupciones (Thread asociada con ISR)
- posix_intr_timedwait()

(los nombres comienzan por "posix_" porque la interfaz fue
propuesta para una futura ampliación del estándar POSIX)

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014

15

Tema 2. Gestión de Interrupciones en MaRTE OS

2.3 Interfaz para la gestión de interrupciones

Fuentes de interrupción
En <intr.h> se define el tipo intr_t para identificar las fuentes
de interrupciones existentes en el sistema
Además se proporcionan valores constantes de este tipo para las
distintas fuentes. Por ejemplo, en un PC:

TIMER_HWINTERRUPT
KEYBOARD_HWINTERRUPT
SERIAL1_HWINTERRUPT
PARALLEL1_HWINTERRUPT
DISKETTE_HWINTERRUPT
COPROCESSOR_HWINTERRUPT
...

temporizador
teclado
Puerto serie 1
Puerto paralelo 1
Disquete
Coprocesador matemático
Resto de interrupciones

Plataformas de Tiempo Real

Tema 2. Gestión de Interrupciones en MaRTE OS

© M. Aldea, M. González

Mayo-2014

16

2.3 Interfaz para la gestión de interrupciones

Manejadores de interrupción
Los manejadores de interrupción son funciones con el siguiente
prototipo

int intr_handler (void * area, intr_t intr)
• area permite identificar una región de memoria mediante la
cual el manejador y la aplicación pueden compartir datos
• intr identifica la fuente de interrupción que ha provocado la
invocación del manejador (útil cuando se utiliza el mismo
manejador para varias interrupciones)

Un manejador puede sincronizarse con los threads de la
aplicación utilizando semáforos definidos en area
• el manejador podrá invocar sem_post() sobre esos semáforos

Plataformas de Tiempo Real

Tema 2. Gestión de Interrupciones en MaRTE OS

© M. Aldea, M. González

Mayo-2014

17

2.3 Interfaz para la gestión de interrupciones

Manejadores de interrupción (cont.)

Un manejador debe retornar uno de los valores siguientes:
• POSIX_INTR_HANDLED_NOTIFY: el manejador ha atendido la
interrupción y, si hay algún thread esperando, deberá ser
activado por el sistema operativo
• POSIX_INTR_HANDLED_DO_NOT_NOTIFY: el manejador ha
atendido la interrupción pero el thread NO debe activarse
• POSIX_INTR_NOT_HANDLED: el manejador NO ha atendido la
interrupción; si hay otros manejadores asociados el sistema
operativo deberá invocar al siguiente

ISR1

ISR2

ISR3

ISR4

POSIX_INTR_NOT_HANDLED

POSIX_INTR_NOT_HANDLED

POSIX_INTR_HANDLED_NOTIFY o
POSIX_INTR_HANDLED_DO_NOT_NOTIFY

No es invocado

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014

1
  • Links de descarga
http://lwp-l.com/pdf1128

Comentarios de: Master en Computación - Plataformas de Tiempo Real - POSIX Avanzado y Extensiones - Tema 2. Gestión de Interrupciones en MaRTE OS (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad