Você está na página 1de 8

1/8

INTERRUPCIONES

CONCEPTO DE INTERRUPCIONES

Una interrupcin es una operacin del hardware que indica a la CPU que detenga la ejecucin
de lo que estaba haciendo, conserva la situacin del proceso y enva a la CPU a una direccin
determinada en la que tiene un programa de control de interrupcin o de servicio de interrupciones.

CAUSAS DE INTERRUPCIONES

* Error de mquina detectado
* Error de programa
* Interrupcin externa (el operador pide una determinada funcin)
* Interrupcin de entrada/salida (el dispositivo de E/S pide atencin o hace una indicacin de que ha
iniciado una operacin)
* Llamada al supervisor por el programa


NECESIDAD DE UN SISTEMA DE INTERRUPCIONES

Surge de la sincronizacin entre CPU y los dispositivos. Dado que los componentes
mecnicos no cumplen con la exactitud de tiempos de ejecucin que se da en la CPU, y puede
averiguar:
- Si el dispositivo est preparado
- Si una operacin E/S se est ejecutando
- Si una operacin ha terminado
Cuando se trata de perifricos resulta eficiente la modalidad de interrupcin para la atencin de estos
=>atiende al perifrico cuando lo solicite y puede utilizar el resto de tiempo disponible en ejecutar
otro proceso (p.e. la atencin de otro perifrico)

EJEMPLO:

La interrupcin desde un perifrico se inicia, cuando tiene informacin para entregar, a travs
del envo de una seal a la CPU para solicitar atencin conocida como IRQ (Interrupt Request)
Si la interrupcin est enmascarada la CPU hace caso omiso de la solicitud. Si la interrupcin
no est enmascarada el computador responde al perifrico, que recibir la informacin, por medio de
una seal IACK (Interrupt Acknowledge).
Luego el perifrico o manejador de interrupciones enva una direccin de memoria a la CPU.
Esta direccin de memoria contiene a su vez la direccin de la rutina que efectivamente administra la
recepcin de la informacin.
La CPU hace una salto a la posicin de memoria indicada en la celda correspondiente a la de
la interrupcin y la rutina contenida a partir de all toma el control del sistema. El "PROGRAM
COUNTER" (contiene la direccin de memoria de la prxima instruccin a ejecutar) y el registro de
status son empujados al stack (pila).
Una vez finalizada la ejecucin de la interrupcin, devuelve el control a la CPU que puede
continuar con el proceso interrumpido o iniciar otro nuevo.

2/8

TIPOS DE INTERRUPCIONES
(1) Interrupcin por errores o por daos en la mquina =>fallo en la alimentacin elctrica; error de
paridad en memoria.
(2) Interrupcin por causa del programa (o desvo) =>instruccin o direccin incorrecta; operaciones
imposibles; desbordamiento de capacidad; divisin por cero, etc; intentos de ejecucin de
instrucciones o de escritura en memoria no permitidos por el estado de la mquina.
(3) Interrupcin por entrada/salida =>generada por el canal para avisar fin de una operacin E/S o de
una falla ocurrida en el transcurso de E/S.
(4) Interrupcin externa =>utilizada para avisar a la mquina acerca de cualquier modificacin
interesante del medio exterior, especialmente en control de procesos industriales.
(5) Interrupcin de recuento =>para contar impulsos procedentes de un reloj.

Determinados procesadores presentan una sola posibilidad de interrupcin, en cuyo caso se
pasarn todas las causas de interrupcin a travs de un OR lgico y el programa de interrupcin
deber comenzar por comprobar un conjunto de indicadores, para detectar cual puede ser la causa de
la misma.

Programa de interrupcin
Interrupcin
OR Prueba de los estados
Causas de in-
terrupcin

Subprogramas de tratamiento
de causa de interrupcin


Fin programa de interrupcin

Interrupcin Tratada


EJ EMPLO: INTERRUPCIONES DEL SISTEMA EN IBM-PC 8086.

Existen dos entradas de interrupciones
NMI (no enmascarables)
INTR (enmascarables)
Esta clasificacin viene dada por su ejecucin.
Interrupciones no enmascarables son aquellas que debern ejecutarse obligatoriamente sin
tener que esperar, estn ligados a tareas en el sistema que no se pueden retrasar como son las rutinas
de bajada del sistema por corte de energa, chequeo de la integridad de memoria, etc.
Interrupciones enmascarables se ejecutan a solicitud del perifrico correspondiente siempre
que en el registro de status (FLAGS REGISTER) del procesador las interrupciones estn habilitadas.
En el caso de no estarlo la solicitud ser ignorada y la CPU continuar con lo que estaba realizando.

3/8
En nuestro ejemplo las fuentes de las interrupciones no enmascarables son 3, y pueden
provenir del coprocesador matemtico INTEL 8087, falla en la paridad de memoria RAM o falla en
algn canal de E/S. Aunque en la prctica se los puede enmascarar por Software =>usa una
compuerta AND para habilitar la solicitud.

MICRO PROCESADOR 8086
8087
OR Chequeo paridad
AND memoria

Chequeo canal E/S
NMI
INTR Mscara por software


8259A Controlador de
Interrupciones

7 6 5 4 3 2 1 0

Contador de Tiempo

Teclado

Sin uso
Sin uso
Puerta serial
Sin uso
Interfaz drive
diskette
Interfaz conexin
impresora

Las interrupciones enmascarables son manejadas por el controlador de interrupciones 8259A.
Es el encargado de priorizar las solicitudes mediante lgica propia. De esta forma ejecutar primero
las de alta prioridad independientemente del orden de llegada, se llega al caso de que una
interrupcin puede ser interrumpida a su vez por otro de mayor prioridad.
El 8259A es programable y puede administrar hasta 8 interrupciones. Cuando esta pastilla
recibe la seal "IACK" del procesador procede a entregar una direccin de 10 BITS de largo que
corresponde a la posicin en la tabla de interrupciones donde se encuentra la direccin de la rutina
que atender al perifrico.
La direccin entregada a la CPU tiene el siguiente formato.

Fijos por
Programables Interrupcin Hardware


4/8

A9 A8 A7 A6 A5 L3 L2 L1 F1 F2

X X X X X X X X 0 0



Los BITS F1 y F2 fijados por Hardware en cero con el objeto de asegurar un espacio de 4 Byte por
interrupcin.
Esto se necesita para especificar la direccin dentro de la IBM-PC que son 2 palabras de 16
bits; una para la direccin de segmento y la segunda para la direccin de desfase.
Los Bits L3, L2, L1 asumen un valor de 0 a 7 correspondiente a la interrupcin solicitada. Los
Bits A9, A8, A7, A6 y A5 son fijadas por software al inicializar el 8259A. Para la PC corresponde al
valor 00001 y es ledo al momento de Bootstrap o partida del equipo. Las interrupciones provenientes
del 8259 son enmascarables por software directamente, las instrucciones en el INTEL 8086/88 son
las instrucciones STI y CLI, la primera habilita las interrupciones y la segunda las deshabilita.
El Concepto de interrupcin en IBM es extensible al software. Tal que muchas rutinas del
sistema operativo funcionan en base a interrupciones. La ventaja es que siendo la interrupcin una
llamada indirecta a una rutina, es posible cambiar la extensin y ubicacin de la rutina en la memoria
y esta modificacin ser transparente al usuario.
Este llamar siempre a la misma interrupcin, buscando en la misma entrada de tabla de
interrupciones pero el contenido de sta podr variar direccionando a distintas reas de la memoria
segn sea el deseo del usuario.

Interrupcin

Chequeo paridad memoria RAM en tablero madre
NMI Chequeo canales E/S
Interrupcin procesador 8087

IRQ0 Salida contador de tiempo 8253-5, canal 0
IRQ1 Teclado
IRQ2 No se usa
IRQ3 No se usa
INTR IRQ4 Puerta serial RS-232
IRQ5 No se usa
IRQ6 Drive diskette (Status)
IRQ7 Puerta paralela (BIOS no la usa)


Las instrucciones por software se ejecutan utilizando la instruccin INT XX. "XX" es un
nmero hexadecimal que multiplicado por 4 nos entrega la direccin de la entrada de la interrupcin
en la tabla correspondiente. El segmento de la direccin por definicin es cero. De tal manera que si
la CPU se encuentra con la instruccin INT 20H esta va a la direccin 0000:0080 (20x4=804) y
desde all obtiene la direccin de la rutina a ejecutar.

5/8
Por otra parte la instruccin "CALL" se caracteriza porque el program counter salta en forma
directa a la rutina mencionada.
Es decir si encuentra la instruccin CALL xxxx (xxxx =nmero hexadecimal de 4 cifras) la
prxima instruccin a ejecutar estar contenida en la direccin CS:xxxx (CS: REGISTRO DE
SEGMENTO DE CDIGO) como CALL es un salto directo, no es posible ejecutar cambios en la
posicin de memoria de la rutina de llamada, pues la CPU siempre intentar ejecutar desde la
direccin original, razn por la cual los sistemas operativos utilizarn poco la modalidad CALL.






0000:003F Interrupciones por Software
Celdas utilizadas por BIOS
Sistema Operativo Basic y
algunas disponibles para
el usuario

IRQ7
Interrupciones
IRQ6
Enmascarables

IRQ0

Reservado Ulizadas
exclusivamente
Impresin Pantalla por Bios
contenido

INTQ
Interrupciones de
INT
Uso Especfico
MNI

Ejec.1 intrucc.

Divisin por 0
0000:0000


0000:0080 BBBB:CCCC 20Hx4

Programa CALL AAAA
ejecutndose
6/8


INT 20H
Cuerpo de
CS:AAAA la rutina

BBBB:CCCC
Cuerpo de IRET
la rutina

IRET

(b) Ejecucin de Rutina por
instruccin CALL.
(a) Ejecucin de Rutina en Modalidad
de interrupcin por software.

Efecto de la jerarquizacin de un sistema de interrupciones

Jerarquizados =>cada interrupcin tiene asignada una prioridad para su ejecucin. En este
tipo de sistema una rutina de interrupcin puede ser interrumpido por una demanda de interrupcin
clasificada con un nivel de prioridad superior.
El programa interrumpido pasa a un estado de espera. Ejemplo de un sistema de interrupcin
de 8 niveles. El nivel "0" es el de ms alta prioridad y el "7" de ms baja
Vemos como los programas se interrumpen por uno de mayor jerarqua.

Nivel
IT5 IT 4 IT 1 IT 3 IT 0

0
1
2
3
4
5
6
7

Esquema de un sistema jerarquizado de interrupciones prioritarias. Cada nivel de interrupcin
tiene asociados cuatro biestables que definen los diferentes estados posibles del nivel.

ESTADO DESACTIVADO: El nivel no acepta ninguna demanda de interrupcin.

7/8
ESTADO ACTIVADO: El nivel acepta y memoriza una demanda de interrupcin. Un nivel de
interrupcin puede ser activado o desactivado por programa.

ESTADO DE ESPERA: El nivel pasa al estado de espera si recibe una seal de demanda de
interrupcin.

ESTADO DE ESPERA INHIBIDO: el nivel ha resultado inhibido por programa, de tal
manera que la interrupcin ha podido ser memorizada pero no tomada en cuenta por el ordenado =>
enmascarada.

ESTADO DE ESPERA AUTORIZADO: La interrupcin puede ser tomada en cuenta por el
ordenador, si se han satisfecho las siguientes condiciones:
(1) No existe ningn nivel de prioridad superior en el estado autorizado de espera;
(2) la unidad central se encuentra en una fase interrumpible (generalmente al final de
instruccin).
El nivel entonces pasa al estado activo.

ESTADO ACTIVO: Implica que la unidad central tome en cuenta la interrupcin y se mantiene
durante toda la ejecucin del programa de interrupcin.
Este esquema asocia a cada seal de interrupcin dos seales: una impulsional desde el exterior (pide
interrupcin) y otra de larga duracin que l deja activada hasta tanto no se
haya tratado la interrupcin es decir hasta que el nivel sea capaz de aceptar una nueva demanda de
interrupcin.


Nivel de espera *Fase interrumpible
AND *No hay niveles de prio-
ridad superior en espera
AND autorizados
Q Programa de
I2 interrupcin
S R AND
Q NOT
Interrup- I3 I4
cin S R Q
AND
R S
Q
I1
S R ltima instruccin

Desactivacin Inhibicin

Activacin Autorizacin


Interrupciones
8/8

EFECTO DE UNA INTERRUPCIN SOBRE LAS INSTRUCCIONES
Existen instrucciones interrumpibles y no interrumpibles. La ejecucin del servicio de interrupcin
espera al final de las segundas.
Una interrupcin E/S externa, o error de mquina no grave, no afecta la instruccin, si el error est en
la propia instruccin puede ocurrir que la instruccin sea:
SUPRIMIDA (no se puede realizar)
ANULADA (se inicia pero se trunca)
COMPLETADA
TERMINADA ANORMALMENTE

La gestin de errores del usuario deber considerar el resultado que ocaciona la instruccin errnea.

INTERRUPCIONES DE ERROR DE PROGRAMA - EMULACIN
Cuando se tiene un programa adquirido (cdigo de mquina) que tiene instrucciones que no figuran
en nuestro ordenador. Sera necesario producir una rutina del supervisor que las emulase (realice la
misma operacin). Son interrupciones dentro del programa.


INTERRUPCIONES PROGRAMADAS (Control del SPD)
Instruccin SVC sirve para introducir interrupciones programadas. Esta permite solicitar al
supervisor determinado servicio. Entonces aquellas operaciones que no puedan ser realizadas por el
programa deben ser realizadas por el supervisor que toma el control gracias a una SVC del programa.
SVC no es una interrupcin E/S (estas son producidas por los canales de E/S).
Formato SVC n
(donde n es el operando que sirve de identificador para saber a donde bifurca hacia la rutina de
tratamiento que corresponda)
Cuando el supervisor termina sus operaciones devuelve la ejecucin al programa a continuacin del
ltimo elemento de la lista o va a una direccin especificada como argumento.

SERVICIOS DEL SUPERVISOR:

SVC 0 ejecutar un programa de canal (EXCP)
SVC 1 carga una fase en memoria y la ejecuta (FETCH)
SVC 4 carga una fase en memoria (LOAD)
SVC 6 cancelar tarea (CANCEL)
SVC.7 espera una interrupcin (WAIT)
SVC.10 iniciar cronometrador de intervalos (SET TIME)
SVC.14 cancelar programa (EOJ )
SVC.18 crear rutina para interrupciones de reloj (STX IT operando IT)
SVC.19 efectuar regreso al programa despus de una interrupcin de reloj (EXIT operando IT)
SVC.34 obtener hora del da (GET TIME)

Você também pode gostar