U8 - Interrupciones y excepciones Flashcards
Quienes las causan en general?
Acontecimientos causados tanto por los dispositivos de E/S como por el programa que se ejecuta en el microprocesador
Interrupciones internas/software.
CARAC
Suspensión momentánea que bifurca el servicio.
Ejecuta tabla IDT y retoma el programa interrumpido
Convocadas por el programa
Interrupciones externas/hardware
CARAC
Residentes en memoria principal
No dependen del programa
INT EXTERNA NO ENMASCARABLE
Asociada por la señal de control NMI, la patita activa la entrada 2 de la IDT
Atendidas siempre, máxima importancia
INT EXTERNA ENMASCARABLE
Avisada por la señal INTR
No debe ser siempre atendida, se consulta la bandera de habilitación de interrupción
IF = 0 -> Sigue
IF =1 -> CPU suspende de forma momentánea la ejecución del programa y ejecuta la interrupción
INT INTERNA (NO ENMASCARABLE)
Se producen por la ejecución de una instrucción especifica dentro de un programa para solicitar una interrupción que limpia una función determinada.
INT #
Excepciones
DEFINICIÓN
Anomalías que se producen y detectan durante la ejecución del programa y a causa de ella
Excepciones
TIPOS
- Faltas/errores: Se pueden detectar y corregir antes de que se produzca la ejecución de una instrucción determinada
- Trampas: Se detectan una vez ejecutada la instrucción que las provoca
- Aborto: Se detectan sin localizar la instrucción que las provocan abortando la ejecución del programa
Tres pasos luego de que se detecte la interrupción
CUALES SON
- Programa en ejecución
- Presentación de la interrupción: Resguardo de contexto de la CPU en la pila. Ejecución del servicio de atención de interrupción y restauración del contexto de CPU.
- Programa nuevamente en ejecución
Con que se manejan las interrupciones?
La IDT, tabla de vectores de interrupción, posee la información en cada entrada de vector.
Entrada de vector:
Cuantos bytes tiene?
4 bytes para encontrar la dirección de memoria que corresponde a la interrupción Driver.
IDT
Que es y cuales son sus características?
Es una tabla para manejar las interrupciones u excepciones
*256 entradas donde especifica la dirección de comienzo de la rutina que atiende la causa que la provocó y soluciona el problema
Puede estar en cualquier sitio del espacio de dir. lineales
Se la localiza mediante el IDTR
IDT
Que numero de vectores pertenecen a cada sección?
0-19: Intel
20-31: CPU
Resto: usuario
IDTR
Que es?
En modo protegido
La tabla IDT ocupa un segmento cuya base y limite están contenidos en el Registro de Tabla de Descriptores de Interrupciones
32 bits base y 16 limite.
Instrucciones de la IDTR
LIDT -> Carga la base y limite ejecutada cuando el CPL= 0
SIDT -> Hace copia en memoria de la base y limite almacenado en la IDTR