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

Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

Oct 14, 2018

Download

Documents

truongthuy
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

Interrupciones en IA32/IA32e

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Técnicas Digitales III Ing. Gustavo Nudelman 2013

Page 2: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

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.

Page 3: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

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

Page 4: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

Interrupciones en modo protegido

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Page 5: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

Descriptores de la IDT

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Descriptor de sistema

Page 6: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

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

Page 7: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

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”

Page 8: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

Comportamiento de la pila sin cambio de nivel de privilegio

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

ESP EFLAGS

CS

EIP

Error code

Page 9: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

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

Page 10: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Lista de excepciones IA32/32e

Page 11: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Lista de excepciones IA32/32e

Page 12: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

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”

Page 13: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

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.

Page 14: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

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

Page 15: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

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

Page 16: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

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

Page 17: Interrupciones en IA32/IA32egnudelman/Interrupciones.pdf · “Tipo n” (provisto por el PIC) Espacio lineal CPU ... Antes de inicializar el PIC #2, deshabilitamos las Interrupciones

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Lab 1

Subtitulo o nombre del capitulo

Universidad Tecnológica

Nacional

Ejemplo de interrupciones