Interrupciones en IA32/IA32e - Universidad Tecnológica Nacional

Anuncio
Interrupciones en IA32/IA32e
Técnicas Digitales III
Ing. Gustavo Nudelman
2013
Universidad Tecnológica Nacional - Facultad Regional Buenos Aires
Introducción
•
Definiremos como interrupción a un evento que interrumpe el flujo
normal del programa, continuando con un “manejador” que podrá
luego devolver el control al flujo inicial.
•
Tipos de Interrupción
• Hardware –> Producidas por señales eléctricas que
diferentes dispositivos pueden enviar a un controlador, para
que este organice (en base a sus políticas) la manera de
interrumpir al procesador. Son asíncronas, y se asocian al
máximo nivel de privilegio en cuanto a protección
•
Software Se produce cuando el software ejecuta la
instrucción INT. Son determinísticas, y puede controlarse el
nivel de privilegio.
•
Internas  Conocidas como “Excepciones” y son eventos
generados por la propia CPU ante diferentes situaciones que
impidan la ejecución de la instrucción en curso.
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Interrupciones en modo protegido
•
Tanto el procedimiento inicial, como la cantidad de interrupciones
a vectorizar, es la misma en todos los modos de trabajo.
• Notificación del evento (entrada INT, instrucción o evento
anormal).
• Acuse de recibo
• Notificación del TIPO
• Cambio del flujo de ejecución.
•
La diferencia se encuentra en la manera de armar las estructuras
de los vectores de interrupción.
•
En el caso de modo protegido se dispone de una tabla llamada
IDT (Interrupt descriptor table) que contiene un descriptor de 8
bytes para cada TIPO.
•
Al igual que la GDT, se dispone de un registro especial del
procesador que apunta a la base de la misma y contiene el
tamaño. IDTR
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Interrupciones en modo protegido
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Descriptores de la IDT
Descriptor de sistema
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Acceso al handler de la interrupción
“Tipo n” (provisto por el PIC)
Pto de entrada del
handler
n+1
+
Espacio
lineal
n
4
3
CPU
2
1
0
IDTR
IDT
GDT
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Tipos de eventos de interrupción
•
•
Interrupciones: Comprende a las interrupciones provocadas por los
diferentes dispositivos de hardware a través de las líneas de IRQ y a las
instrucciones de procesador tipo INT. Son direccionadas en la IDT por
descriptores de del tipo:
•
“Interrupt gate”  Direccionan hacia el handler de atención
correspondiente pudiendo existir cambio de nivel de privilegio
•
“Task Gate”  Provocan un cambio de contexto completo –
Conmutación de tarea
Excepciones: Comprende las anomalías ocurridas dentro del propio
procesador (división por 0, violación del mecanismo de protección, etc).
Pueden ser del tipo:
• Fault: Puede corregirse y se retorna para volver a ejecutar la misma
instrucción. Ej: “Segmento no presente”
• Trap: Invocada luego de ejecutar una instrucción – Se retorna a la
instrucción siguiente. Ej. Trap de depuración
• Abort: Fallas graves. (Ej hardware) No se suele continuar con la
ejecución del programa.
•
Algunas excepciones producen “Error Code”
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Comportamiento de la pila sin cambio de
nivel de privilegio
EFLAGS
ESP
CS
EIP
Error code
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Error Code
Es el último elemento que se almacena en la pila cuando ocurre una
interrupción
Similar para todas las excepciones (que generan error code) excepto
para la 14
Si bien es de 32 bits, la parte baja se asemeja a un selector de
segmento (obsérvese que se indica el index) excepto por los 3 bits
menos significativos
•
EXT –> Evento externo al programa (Ej. una interrupción de hardware
mal vectorizada)
•
IDT  Indica que index se refiere a la IDT
•
TI  Si el flag IDT es 0, indica que se trata de una LDT
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Lista de excepciones IA32/32e
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Lista de excepciones IA32/32e
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Algunas Excepciones Importantes
•
Excepción 8 -- Doble falta
• En caso de producirse se termina en una situación de “Abort”
•
Una Doble falta puede ocurrir si se produce una excepción
durante la vectorización de otra excepción.
•
Dependiendo de la clase de las excepciones, y de la
secuencia, las mismas podrán ser serializadas o se incurrirá
en una doble falta
•
En caso de ocurrir una doble falta, si ocurre otra excepción
durante dicha vectorización, el procesador entrara en modo
Universidad Tecnológica Nacional - Facultad
“ShutDown”
Regional Buenos Aires
Algunas Excepciones Importantes (2)
•
Excepción 13 – General Protection
•
Utilizado para violaciones al sistema de protección.
•
Vista en “Blue Screens” de Windows cuando falla el manejo
de la misma
•
Si la violación al esquema de protección se produce en un
intento de cambio de segmento, el error code contendrá el
campo Index del descriptor de segmento al que se quiso
acceder
•
Como en toda excepción tipo fault, los valores de CS:EIP
puestos en la pila, apuntan a la instrucción que genero la
excepción.
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Algunas Excepciones Importantes (3)
•
Excepción 14 – Page fault
•
Ocurre ante situaciones de la CPU que involucran a la unidad
de paginación
•
•
•
Acceso a una página no presente
Intento de acceso con un nivel de privilegio inadecuado
Intento de escribir en una página “read only”
• Al ser tipo fault, el handler puede corregir la situación luego
retornar a la instrucción que la provoco para que pueda ser
ejecutada.
• El procesador nos brinda 2 elementos de información para
que el handler los analice a fin de corregir la situación
•
•
La dirección lineal en donde se generó la excepción dentro del
registro CR2
El código de error (Error code) que posee un formato diferente al
resto de las excepciones
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Código de error de un fallo de página
P
0 si fue generada por una página no presente
1 si fue generada por una violación al sist. de protección de páginas
WR 0 si la excepción ocurrió durante una lectura
1 si la excepción ocurrió durante una escritura
U/S 0 Si la excepción fue generada ejecutando en modo Supervisor
1 Si la excepción fue generada ejecutando en modo Usuario
RSVD 0 si no fue generada por utilizar bits reservados en las estructuras
1 si fue generada por utilizar bits reservados en las estructuras
I/D 0 La excepción no ha ocurrido en la búsqueda de una instrucción
1 La excepción ha ocurrido en la búsqueda de una instrucción
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Reprogramación de los pics para manejo de
excepciones
pic_reprogramming:
;-----------------------------------------------------------------------------; Inicialización PIC #1
mov al,11h
;ICW1: IRQs activas por flanco, Modo cascada, ICW4 Si.
out 20h,al
mov al,32
;ICW2: INT base para el PIC N#1 Tipo IRQ0_Base_interrupt
out 21h,al
mov al,04h
;ICW3: PIC N#1 Master, tiene un Slave conectado a IRQ2 (0000 0100b)
out 21h,al
mov al,01h
;ICW4: Modo No Buffered, Fin de Interrupción Normal, procesador 8086
out 21h,al
; Antes de inicializar el PIC #2, deshabilitamos las Interrupciones del PIC #1
mov al,0FFh
;OCW1: Set o Clear el IMR
out 21h,al
; Inicialización PIC #2
mov al,11h
;ICW1: IRQs activas por flanco, Modo cascada, ICW4 Si.
out 0A0h,al
mov al,40
;ICW2: INT base para el PIC N#1 Tipo IRQ0_Base_interrupt + 8h.
out 0A1h,al
mov al,02h
;ICW3: PIC N#2 Slave, IRQ2 es la línea que envía al Master (010b)
out 0A1h,al
mov al,01h ;ICW4: Modo No Buffered, Fin de Interrupción Normal, procesador 8086
out 0A1h,al
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Lab 1
Ejemplo de interrupciones
Subtitulo o nombre del
capitulo
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Universidad
Tecnológica
Nacional
Descargar