interrupciones en ia32/ia32egnudelman/interrupciones.pdf · “tipo n” (provisto por el pic)...

17
Interrupciones en IA32/IA32e Universidad Tecnológica Nacional - Facultad Regional Buenos Aires Técnicas Digitales III Ing. Gustavo Nudelman 2013

Upload: truongthuy

Post on 14-Oct-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

Interrupciones en IA32/IA32e

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Técnicas Digitales III Ing. Gustavo Nudelman 2013

Introducción

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

• 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.

Interrupciones en modo protegido

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

• 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

Interrupciones en modo protegido

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Descriptores de la IDT

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Descriptor de sistema

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Acceso al handler de la interrupción

4

3

2

1

0

n+1

n

IDTR

+

IDT GDT

“Tipo n” (provisto por el PIC)

Espacio lineal

CPU

Pto de entrada del handler

Tipos de eventos de interrupción

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

• 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”

Comportamiento de la pila sin cambio de nivel de privilegio

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

ESP EFLAGS

CS

EIP

Error code

Error Code

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

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

Algunas Excepciones Importantes

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

• 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

“ShutDown”

Algunas Excepciones Importantes (2)

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

• 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.

Algunas Excepciones Importantes (3)

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

• 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

Código de error de un fallo de página

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

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

Subtitulo o nombre del capitulo

Universidad Tecnológica

Nacional

Ejemplo de interrupciones