0% encontró este documento útil (0 votos)
75 vistas25 páginas

03 Interrupciones

El documento describe el proceso de interrupciones en las computadoras. Explica que una interrupción causa una transferencia impredecible del control de ejecución a una rutina de atención de interrupciones. Detalla las 4 etapas de una interrupción: solicitud, reconocimiento, atención y retorno. Además, describe el vector de interrupciones que contiene las direcciones de memoria de las rutinas de atención de interrupciones para cada dispositivo.

Cargado por

Eiden
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
75 vistas25 páginas

03 Interrupciones

El documento describe el proceso de interrupciones en las computadoras. Explica que una interrupción causa una transferencia impredecible del control de ejecución a una rutina de atención de interrupciones. Detalla las 4 etapas de una interrupción: solicitud, reconocimiento, atención y retorno. Además, describe el vector de interrupciones que contiene las direcciones de memoria de las rutinas de atención de interrupciones para cada dispositivo.

Cargado por

Eiden
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Arquitectura de Computadoras

Unidad nro 3
Interrupciones

Jorge Echevarría
Interrupciones
 Una interrupción es un procedimiento desencadenado por un evento externo que
produce una transferencia impredecible del control de ejecución, desde el programa
o rutina que es interrumpida hacia otra rutina (denominada de atención de la
interrupción)

 Una interrupción se compone de 4 etapas

 Solicitud: a través de una señal asincrónica de entrada a la CPU, INTR

 Reconocimiento: dadas ciertas condiciones temporales y lógicas, la CPU


reconoce el pedido, INTA y comienza con la atención de la interrupción. La
transferencia del control de ejecución no es inmediata ni incondicional.

 Atención o ejecución de la rutina: se ejecuta la rutina (programa) de atención al


dispositivo llamada ISR (Interrupt Service Routine)

 Retorno: Finalizada la ejecución de la rutina de atención, se produce el retorno


del control de ejecución a la rutina que fue interrumpida, permitiendo al
microprocesador continuar con la ejecución de la misma.

Jorge Echevarría
Resumen introductorio
 Una vez que el CPU reconoce que dispositivo solicito la interrupción se ejecuta la
rutina correspondiente a dicha interrupción. Para ello debe conocer la dirección de
memoria donde esta la rutina.

 Direccionamiento fijo: La rutina siempre se carga en memoria a partir de la misma


dirección. Ej: el dispositivo que interrumpe envía a la CPU la dirección donde está la
rutina.

 Interrupciones vectorizadas: El dispositivo manda una identificación al CPU que


corresponde a la dirección de un vector de interrupciones donde están todas las
direcciones de las rutinas. Es decir le manda un puntero índice al vector.

 Las rutinas pueden ejecutarse en serie. Atendiendo y ejecutando las interrupciones


en secuencia.

 Las rutinas pueden ejecutarse en forma anidada. Comienza a ejecutar una


interrupción. Si llega otra señal debe ser de mayor prioridad. Se detiene la primera
interrupción y se pasa a ejecutar la segunda.

Jorge Echevarría
Interrupciones
 Luego de que una instrucción termina su ciclo de instrucción ( Ej: búsqueda,
decodificación, ejecución y escritura) el procesador o CPU sensa si algún
dispositivo le ha mandado un requerimiento de interrupción, INTR (Interrupt
request). Como si le tocaran timbre a su puerta.

 El CPU responde con un reconocimiento de la interrupcion o INTA (Interrupt


acknoledge). Como si preguntara quien es.

 Al recibir el INTA, el dispositivo le manda el dato. El CPU hace una lectura del bus
de datos para que entre el “tipo” o dispositivo que quiere ser leído. El dato posee 8
bits, por lo que puede reconocer 256 dispositivos diferentes. El CPU va a tener
asociada una rutina, driver o controlador para atender a dicho dispositivo que se
denomina ISR, Interrupt service request. En la memoria principal va a estar cargada
la rutina de interrupción que sabrá manejar al dispositivo.

 El CPU hace un push de los flags. Guarda en la pila el segmento de codigo CS, el
puntero contador de programa IP y los flags o banderas y carga el segmento de
código e IP con el puntero donde esta el driver. El puntero apuntará a la primera
instrucción del programa de interrupción. Tanto el CS como el IP tienen 16 bits
(2bytes). Guarda 4 bytes en la memoria principal.

Jorge Echevarría
Interrupciones
 La rutina de interrupción se ejecuta hasta que encuentra la instrucción IRET. En ese
momento hace el pop de la pila del code segment, del IP y de los Flags. Allí vuelve
al punto donde estaba.

 En la memoria principal hay un espacio de memoria manejado por el BIOS que es


el vector de interrupciones. Este espacio de memoria se encuentra siempre en el
mismo lugar. Cuando el CPU lee el código de dispositivo lo copia en un registro
desplazado 2 lugares, es decir, lo multiplica por 4. Así el vector de interrupciones
tiene 256 celdas de memoria x 4, 1024 Bytes.

 La interrupción se desencadena fuera del CPU, es impredecible.

 El CPU en realidad no habla directamente con los dispositivos sino que se


comunica con un PIC que se encarga de indicarle quien interrumpe y maneja las
prioridades.

Jorge Echevarría
Interrupciones - Clasificación
 Interrupciones Enmascarables
 Una máscara de interrupción es un bit que condiciona el reconocimiento de la
interrupción

 Es el flag IF (interrupt Flag)


 Si IF=0, la solicitud es ignorada. Si en el debug seteo IF en 0 el CPU no atiende a
las interrupciones y el flag aparece como DI. Si IF=1, el pedido es aceptado,
aparece como EI y se inicia el ciclo de reconocimiento. IF permite habilitar o no la
escucha de interrupciones.

Flag IF=1

Flag IF=0

 Las solicitudes se realizan a través de la señal INTR (Interrupt Request)


 Se censa en el último ciclo de reloj de la instrucción en curso

 Si es INTR=1, la CPU emite la señal INTA (Interrupt Acknowledge) como


reconocimiento

Jorge Echevarría
Interrupciones - Clasificación

 Interrupciones No Enmascarables

 Las interrupciones no enmascarables no se pueden ignorar. Son como una alarma


de incendio, la atención es incondicional.

 La solicitud se realiza a través de la entrada NMI (Non Maskable Interrupt,


interrupción no enmascarable) del CPU. Es una entrada asincrónica activa por
flanco ascendente.

 No es necesaria la señal de INTA, no hace todo el ciclo.

 Es siempre la interrupción más prioritaria ya que puede interrumpir la ejecución de


cualquier servicio generado por INTR. Ejecuta el tipo 2, Ej: Error de memoria,
pantalla azul.

 NMI, se usa para situaciones graves que requieran atención incondicional de la


CPU.

Jorge Echevarría
Interrupciones – Anidamiento
 Una interrupción se anida en otra, cuando esta
interrumpe la ejecución de la ISR (Interrupt Service
Rutine) en curso.
 Antes de ejecutar la primera instrucción de la ISR, el
CPU coloca el IF=0

 Esto puede evitarse mediante el flag IF


 Deseo anidamiento
 La primera instrucción de atención a la
interrupción es la habilitación de la CPU a
atender nuevas interrupciones (STI)
 La última instrucción de atención a la
interrupción devuelve la posibilidad a la CPU
para atender interrupciones (CLI)

 No deseo anidamiento
 No modifico el flag IF, pongo en el programa
la instrucción CLI, pero antes de volver con
el IRET debo volver a activar el interrupt flag
STI
Jorge Echevarría
Interrupciones – Atención de dispositivos, repaso.

 Reconocimiento: Secuencia de eventos

 Luego de haber finalizado la instrucción en curso, la CPU se dispone a


reconocer al dispositivo solicitante

 El dispositivo solicitante, coloca en el bus de datos 1 byte correspondiente a su


identificación. A ese byte se lo llama “tipo” (Interrupt Type)

 La CPU efectúa un ciclo de lectura y toma el “tipo” y con él tiene que


determinar en que dirección de MP está la ISR para comenzar a ejecutarla

 Como una dirección de memoria se forma con 2 registros de 16 bits


(SEGMENT:OFFSET), necesita un puntero de 4 bytes para ubicar la ISR en la
MP. En nuestro caso, los registros son CS:IP

 Con 1 byte puedo tener 256 “tipos” o dispositivos distintos

 Si necesito 4 bytes de puntero para cada uno de ellos  Tendré un espacio en


MP de 1024 bytes (1K) con todos los punteros. Este espacio de 1K se llama
Vector de Interrupciones (IVT)

Jorge Echevarría
Interrupciones – Atención de dispositivos
 Vector de interrupciones (IVT)

 Se encuentra en los primeros 1024 bytes del mapa de memoria. Va desde la


dirección: 00000h a la 003FFh
 Como se ubica en la MP puede ser modificado durante la ejecución de cualquier
programa
 El tipo 0 es el error de división por 0, se llama a la rutina que atiende el caso.
 Del tipo 1 al 5 son dedicados. Ej: Cuando hay overflow llama al tipo 4.
 Del 6 al 35 no se utilizan.
 Del 36 al 255 son libres para usarse con cualquier dispositivo.
 Entradas del vector de interrupciones (4 bytes cada una)

• Está compuesta por dos bytes para alojar el IP y dos para el CS

• El sentido es:
• LSB – IP
• MSB – IP
• LSB – CS
• MSB – CS.

Jorge Echevarría
Interrupciones – Atención de dispositivos

IVT=Interrupt Vector Table

Jorge Echevarría
Interrupciones por Software
 Interrupciones por Software
 Son instrucciones que provocan que la CPU ejecute alguna de las rutinas de
atención de interrupciones del “tipo” que se indique. Finalizada la ejecución de la
rutina de atención, la CPU continúa ejecutando la instrucción posterior a la
instrucción de interrupción

 No son interrupciones propiamente dichas ya que al ser instrucciones, son


predecibles, las provoca el programador. Ej: int 21.

 Como son instrucciones, no respetan ningún esquema de prioridades y se anidan


siempre que se incluyan dentro de una rutina de atención de interrupción.
Obviamente no son enmascarables.

 Estas instrucciones pueden usarse para transferir el control a rutinas que son
reubicables en memoria (en las que el programa que las llama no conoce la
dirección de inicio de las mismas)
 Salvan en el stack el registro de banderas
 No ejecutan el ciclo de INTR, INTA, pero si inhiben Single Step y IF durante su
ejecución
Jorge Echevarría
Interrupciones por Software

 Instrucciones de interrupciones por SW


 INT3
 1 byte de longitud
 Interrupción de “tipo”=3
 Se utiliza para insertar puntos de ruptura en rutinas que están siendo
depuradas, para hacer debug.

 INT Xh
 Ejecuta el servicio de la interrupción del “tipo”=n
 Ocupa dos bytes, uno para el código de operación y otro para el para
el dato del “tipo”
 Se pude usar para simular cualquier tipo de interrupción y para
depuración
 Como puede manejar varios servicios una rutina ISR?
• El tipo de servicio es pasado como parámetro
• Los parámetros son pasados por registros, no por el stack.
• El valor de retorno, depende del parámetro de código de
servicio.

Jorge Echevarría
Interrupciones por Software

 Instrucciones de interrupciones por SW


 INTO
 “Tipo”=4
 Interrumpe el programa si existe un overflow indicado por la activación del flag
OF. Si OF = 0 la instrucción no ejecuta nada (se comporta como un NOP)
 Esta instrucción permite corregir errores en el caso de overflow

 EJ: Add Ax, Bx


INT 0. (Tipo4) Si se provoca un overflow ejecuta la rutina que lo
atiende.

Jorge Echevarría
Interrupciones por Software
 Ejemplos de interrupciones por SW

 Funciones de DOS: (Int 21H)

 Imprimir un mensaje: DS:DX = dir. Mensaje; AH = 9; int 21h


 Salir AH = 4C; int 21h
 Leer un carácter AH = 1; int 21h --> AL =caracter ASCII
 Imprimir un carácter DL = caracter ASCII ; AH = 2; int 21h
 Salida a Impresora DL = caracter ASCII ; AH = 5; int 21h

 Servicios del BIOS


 Display (Int 10H)
 Funciones de E/S a discos (Int 13H)
 Teclado (Int 16H) [Lectura AH=0]
 Impresoras (Int 17H) para funciones de impresora

Jorge Echevarría
Interrupciones por Software

 Interrupciones de error

 Se producen por lo general por un error de software

 No respetan esquema de prioridades

 En el 8086 hay solo una: “Tipo”=0 – Error al dividir

 Ocurre cuando se intenta dividir por 0


 La dirección de retorno de la rutina de atención de este tipo apunta a la misma
instrucción que se terminó de ejecutar antes de producirse este error
 Permite corregir el error que provocó la interrupción en la rutina de atención y
volver a empezar
 No es enmascarable.

Jorge Echevarría
Interrupciones por Software

 Interrupciones de Trampa (Modo paso a paso)

 Si el bit TF (Trap Flag) está activo, después de la ejecución de cada instrucción se


produce una interrupción “tipo”=1. Ejecuta la instrucción y para.

 Al aceptar esta interrupción, se borra el TF de manera de ejecutar la rutina de


atención en forma normal

 Se setea el flag de trampa muchas veces.

 Se usa para implementar una rutina para el monitoreo durante la depuración de


programas

 Comienza a ejecutarse una instrucción después de que se activó el bit TF

 No es enmascarable

Jorge Echevarría
Interrupciones – Secuencia

 Cada vez que la CPU finaliza la ejecución de una instrucción, comprueba:


 Si está activa la trampa (TF=1)
 Si hubo pedido NMI
 Si hay overflow
 Si la próxima es una instrucción INT
 Si se da alguna de estas condiciones, entonces se produce la siguiente
secuencia:
 Si hay un INTR, se realiza la secuencia de reconocimiento de interrupción
 Se salvan los flags en la pila
 Se desactivan la máscara de interrupción IF y el TF
 Se salva el CS en la pila
 Se salva el IP en la pila
 Se recupera el contenido del vector de interrupción y se carga el CS y el IP
en con su contenido
 la CPU continúa ejecutando en la atención de la interrupción

Jorge Echevarría
Controlador de Interrupciones

 Intel 8259A (PIC = Programmable Interrupt Controller) - Chipset


 Amplía la estructura de interrupciones del 8086
 Es configurable y programable
 Se lo considera como un dispositivo más del chipset
 Conectándolo 8 8259A en cascada (8+1)  maneja 64 interrupciones
 Durante el booteo, la BIOS programa mapea las IR0 a IR7 a los tipos 08h
a 0Fh. La IR0 tiene la mayor prioridad
 Se puede enmascarar cada una de las IR por separado

Jorge Echevarría
Controlador de Interrupciones
 Prioridad de Interrupción
 Que rutina ISR se ejecuta si dos interrupciones ocurren al mismo tiempo

 Si la CPU esta ejecutando una rutina ISR y un segundo dispositivo (de mayor
prioridad) interrumpe, ¿que ISR sigue ejecutando?

 El controlador intentará permitir a una interrupción de mayor prioridad interrumpir


otra de menor. La segunda interrupción no será reconocida por el procesador sino
hasta que IF=1 (habiliten las interrupciones)

Jorge Echevarría
Controlador de Interrupciones

 Prioridad de Interrupción
 Si una interrupción de baja prioridad sucede a otra de alta prioridad, el controlador
mantiene la prioridad.

 El controlador recuerda la interrupción de baja prioridad hasta que la de alta


prioridad haya terminado
 Cuando terminó, el controlador genera otra interrupción a favor del dispositivo lento
 ¿Cuantas interrupciones puede recordar el controlador?
 ¿Como sabe el controlador que la interrupción de alta prioridad terminó?

Jorge Echevarría
Interrupciones de la BIOS

 Las Interrupciones de la BIOS

 INT 10h: Servicios de Vídeo (texto y gráficos).


 INT 11h: Informe sobre la configuración del equipo.
 INT 12h: Informe sobre el tamaño de la memoria convencional.
 INT 13h: Servicios de disco (muy elementales: pistas, sectores, etc.).
 INT 14h: Comunicaciones en serie.
 INT 15h: Funciones casette (PC) y servicios especiales del sistema (AT).
 INT 16h: Servicios de teclado.
 INT 17h: Servicios de impresora.
 INT 18h: Llamar a la ROM del BASIC (sólo máquinas IBM).
 INT 19h: Reinicialización del sistema.
 INT 1Ah: Servicios horarios.
 INT 1Fh: Apunta a la tabla de los caracteres ASCII 128-255 (8x8 puntos).

Jorge Echevarría
Lista de Interrupciones

 Las cinco Interrupciones dedicadas (0 a 4)

 Interrupción 0 (división por cero)


 Invocada por la CPU despues de un DIV o IDIV, si el divisor es 0 o el resultado
no entra en el destino

 Interrupción 1 (paso a paso)


 Usado por los debuggers para soportar pasos simples

 Interrupción 2 (no enmascarable)


 Interrupciones x hardware que no puede ser deshabilitada

 Interrupción 3 (breakpoint)
 Usado por los debuggers para establecer puntos de detención en el programa

 Interrupción 4 (overflow)
 Usado en librerías numéricas para atrapar errores de overflow

Jorge Echevarría
Lista de Interrupciones

 Las Interrupciones de Hardware

 INT 8h: Se produce con una frecuencia periódica determinada por el IR0 del chip
temporizador 8253/8254 (en la práctica, unas 18,2 veces por segundo).

 INT 9h: Generada al pulsar o soltar una tecla

 INT 0Ah, 0Bh, 0Ch, 0Dh, 0Eh, 0Fh: Puertos serie, impresora y controladores de
disquete

 INT 70h, 71h, 72h, 73h, 74h, 75h, 76h, 77h: Generadas en los ATs y maquinas
superiores por el segundo chip controlador de interrupciones.

Jorge Echevarría
Interrupciones del DOS
 Las Funciones del DOS
 INT 20h: Terminar programa (tal vez en desuso).
 INT 21h: Servicios del DOS. (devuelve acarreo si hay error)
 INT 22h: Control de finalización de programas.
 INT 23h: Tratamiento de Ctrl-C.
 INT 24h: Tratamiento de errores críticos.
 INT 25h: Lectura absoluta de disco (sectores lógicos).
 INT 26h: Escritura absoluta en disco (sectores lógicos).
 INT 27h: Terminar dejando residente el programa (en
desuso).
 INT 28h: Idle (ejecutada cuando el ordenador está
inactivo).
 INT 29h: Impresión rápida en pantalla (no tanto).
 INT 2Ah: Red local MS NET.
 INT 2Bh-2Dh: Uso interno del DOS.
 INT 2Eh: Procesos Batch.
 INT 2Fh: Interrupción Multiplex.
 INT 30h-31h: Compatibilidad CP/M-80.
 INT 32h: Reservada.
Jorge Echevarría

También podría gustarte