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