TEMA
14. INTERRUPCIONES.
1.- Introduccion
Es la detencion de la ejecucion
de un programa antes de que concluya. Cuando se procesa la interrupcion,
volvemos al programa.
A la rutina que se ejecuta para
la interrupcion se le llama rutina de servicio de interrupcion.
Tipos:
- Interrupciones
externas: desde un controlador de E/S.
- Interrupciones
internas: desde la CPU (procesador). Ocurren cuando hay sucesos excepcionales:
-
Division por 0.
-
Desbordamiento (cuando el resultado de una operacion se sale del rango de
representacion).
-
Violacion de la proteccion de memoria: cuando un programa invade la porcion de
memoria donde se encuentra otro.
Jerarquia
de interrupciones
Identifica que interrupciones
son mas importantes.
- Interrupcion no
enmascarable: cuando no puede ser ignorada, bien porque provocaria daños o
porque tiene una prioridad alta.
- Interrupcion
enmascarable: sí se puede ignorar. A traves de instrucciones, podemos inhibir
que ocurra.
2.- Reconocimiento de interrupciones (Cómo adivina la CPU qué o quién provocó la interrupcion).
A.- Interrupciones multinivel:
Cada dispositivo que puede provocar interrupcion tiene una entrada de
interrupcion conectada a la CPU. Es muy sencillo, pero muy caro.
B.- Linea de interrupcion
unica. Una unica entrada de interrupcion a la que estan conectados todos
los dispositivos. Tiene que “preguntar” a cada dispositivo si ha producido la
interrupcion (tecnica Polling).
C.- Interrupciones
vectorizadas. El dispositivo que quiere pedir interrupcion pone en el bus
de datos un identificador (vector),
ademas de la señal de interrupcion. Lo puede poner el periferico directamente,
o bien un controlador de interrupciones (que se ocupa de todo)


CPU
Bus
de datos
Los dispositivos estan ordenados
por orden de importancia, siendo el mas cercano el que tiene prioridad. Si pone
su vector, los demas ya no pueden ponerlo. (tecnica Daisy Chaining).
3.- Procesamiento de interrupciones.
- Se recibe una peticion de
interrupcion.
- Se termina de ejecutar la
instruccion actual.
- La CPU acepta o rechaza la
peticion de interrupcion.
- Se almacena el estado actual
de ejecucion (contenido del contador de programas y del registro de estado)
para poder volver.
- El contador de programas pasa
a tomar el valor de la direccion de la 1ª instruccion de la rutina del servicio
de interrupcion.