Вы находитесь на странице: 1из 30

A

INTERRUPCIONES
INTERRUPCIONES
Concepto de interrupcin

Una interrupcin se genera cuando se quiere que la CPU deje de


ejecutar el proceso en curso y ejecute una funcin especfica de quien
produce la interrupcin.

Cuando se ejecuta esta funcin especfica decimos que la CPU est


atendiendo la interrupcin. Podemos realizar una clasificacin de las
interrupciones, atendiendo a la fuente que las produce.

Segn Morris Mano (1994), La interrupcin de programa se refiere a la


trasferencia del control de un programa que corre en cierto momento
a otro de servicio, como resultado de una solicitud generada en forma
extrema o interna. El control retorna al programa original despus de
que se ejecuta el programa de servicio.
INTERRUPCIONES
Manejadores de interrupciones
Un manejador de interrupciones, tambin conocido como ISR (interrupt service
routine o rutina de servicio de interrupcin), Segn Carter (2006) un manejador de
interrupciones son rutinas que procesan las interrupciones.

Los manejadores de interrupciones son una parte crucial de los sistemas. Podra
decirse que son responsables de la sincronizacin de proceso. Una computadora
personal cuenta con 256 interrupciones y manejadores de interrupciones, a los
que se tiene acceso por medio de la tabla de vectores de interrupciones residente
en los bytes inferiores de la memoria (direcciones 0000h a 0400h).
INTERRUPCIONES
TIPOS DE INTERRUPCIONES

FALLO DE
PROGRAMA TEMPORIZACIN E/S
HARDWARE

Generadas por
Generadas por alguna Generadas por
un controlador
condicin que se un
produce como resultado de E/S, para Generadas por
de la ejecucin de una temporizador
indicar la un fallo, como
instruccin, tal como interno al
desbordamiento finalizacin la falta de
aritmtico (overflow), procesador.
normal o con potencia de
divisin por cero, Esto permite al
intento de ejecutar una problemas de alimentacin o
instruccin mquina sistema
una operacin un error de
inexistente e intento de operativo
acceder fuera del o para avisar de paridad en la
espacio de memoria realizar ciertas
ciertas memoria
permitido para el funciones de
usuario condiciones de
manera regular
error
INTERRUPCIONES
CLASIFICACIN DE INTERRUPCIONES

Existen tres tipos principales de interrupciones que producen una


detencin en la ejecucin normal de un programa. Se clasifican de
la manera siguiente :

Interrupciones por hardware


Interrupciones por software
Excepciones
INTERRUPCIONES
CLASIFICACIN DE INTERRUPCIONES

1. Interrupciones de hardware:
Estas son asncronas a la ejecucin del procesador, es decir, se pueden producir
en cualquier momento independientemente de lo que est haciendo el CPU en
ese momento. Las causas que las producen son externas al procesador y a
menudo suelen estar ligadas con los distintos dispositivos de E/S.

Interrupcin enmascarable significa que, bajo control del software, el


procesador puede aceptar o ignorar (enmascarar) la seal de
interrupcin.

Interrupcin no enmascarable significa que la interrupcin no puede


ser deshabilitada por software. Se reservan para casos en que es
crtica la respuesta, por ejemplo que se detecte un error de paridad
en la memoria. Adems son de prioridad ms alta que las
enmascarables.
INTERRUPCIONES
CLASIFICACIN DE INTERRUPCIONES
2. Interrupciones por software:

Las interrupciones por software son aquellas generadas por un programa en


ejecucin. Para generarlas, existen distintas instrucciones en el cdigo
mquina que permiten al programador producir una interrupcin, las cuales
suelen tener nemotcnicos tales como INT (por ejemplo, en DOS se realiza la
instruccin INT 0x21 y en Unix se utiliza INT 0x80 para hacer llamadas de
sistema).

Por ejemplo:
INT 19h - reinicio del sistema.
INT 20h - Salida para sistema operativo.
INT 21h - Interrupcin DOS.
INT 21h / AH = 9 - Salida de una cadena en DS: DX . Cadena debe
terminar con ' $ '.
INTERRUPCIONES
CLASIFICACIN DE INTERRUPCIONES

3. Excepciones:

Son aquellas que se producen de forma sncrona a la ejecucin del procesador


y por tanto podran predecirse si se analiza con detenimiento la traza del
programa que en ese momento estaba siendo ejecutado en la CPU.
Normalmente son causadas al realizarse operaciones no permitidas tales como
la divisin entre 0, el desbordamiento, el acceso a una posicin de memoria no
permitida, etc.

En el caso de la divisin por cero el nmero asociado es cero. Este era el nico
tipo de excepcin de procesador prevista en el 8088, pero en los modelos
sucesivos de la saga x86 y Pentium esta posibilidad fue amplindose poco a
poco o paulatinamente.
INTERRUPCIONES
Ejemplo interrupciones
Ejemplo, ya sabemos que la mayora de los dispositivos externos son mas lentos
que la CPU, imaginemos la CPU imprimiendo un documento.

Un procesador que opera a 200 MHz (tiempo 1 ciclo reloj = 5ns;Asumiendo que los ciclos por
instruccin CPU = 2 ciclos en promedio).
Una instruccin tarda en promedio 2 x 5ns = 10ns en ejecutarse.
La computadora puede ejecutar hasta 100 Mips.

Queremos imprimir un archivo de 10 Kbytes en una impresora lser de 20 pginas por minuto:

1 pgina = 3,000 caracteres (1 carcter = 1 byte).


La impresora imprime 60,000 caracteres por minuto = 1 Kbyte/s.

Hasta hora lo nico que podamos hacer era que la CPU enve los datos que pudiera recibir la
impresora y esperar que termine de imprimir o que solicite mas datos.

INTERRUPCIONES
Ejemplo interrupciones
Sin interrupciones:

La CPU entra en un bucle y enva un byte cada vez que la impresora est
preparada para recibirlo.
La impresora tarda 10 segundos en imprimir 10 Kbytes.
La CPU est ocupada con la operacin de E/S durante 10 seg. (en ese
tiempo la CPU podra haber ejecutado 1000 millones de instrucciones)

Con el uso de interrupciones la CPU no tiene que esperar, mandara los datos
a la impresora y seguira haciendo alguna tarea productiva.
INTERRUPCIONES
Ejemplo interrupciones
Con interrupciones:

La impresora genera una interrupcin cada vez que est preparada para recibir un
nuevo byte.
Suponiendo que la gestin de interrupcin (RTI = Retorno de interrupcin) consume
10 instrucciones. (salvar contexto, comprobar estado, transferir byte, restaurar
contexto, Retorno de instruccin (RTI)).
Para transferir 10 Kbytes tenemos que ejecutar 10.000 veces la RTI
ejecutar 100.000 instrucciones para atender al perifrico
la CPU tarda 0,001 seg .
La CPU est ocupada con la operacin de E/S durante 0,001 seg.
La E/S por interrupciones reduce en 10.000 veces el tiempo que la CPU est ocupada
gestionando la impresora.

Esta diferencia es tan marcada porque el perifrico es realmente muy lento, con
perifricos rpidos, solo con las interrupciones no alcanza para solucionar el problema.
INTERRUPCIONES
Control de Flujo del Programa sin interrupciones
En la siguiente imagen se muestra el tiempo que
utiliza la CPU en un perifrico, la lnea punteada nos
marca en que se estara utilizando el CPU.

Cuando se atiende, un perifrico el procesador


ejecuta un programa que atiende al modulo de
entrada/salida, este programa se carga, prepara lo
necesario para que se pueda realizar la operacin
requerida con el perifrico, seguido a esto se
ejecuta la instruccin solicitada, cuando termina el
perifrico su tarea, en algunos casos el programa
cargado puede realizar alguna otra tarea
relacionada, para el lado del perifrico o para el lado
de los buses, por ejemplo mandar informacin de
algn error que se halla detectado en el perifrico,
para luego proseguir con la ejecucin del programa
original.
INTERRUPCIONES
Control de Flujo del Programa sin interrupciones y con ellas.
Sin interrupciones
En al siguiente imagen se puede ver, en la
primera seccin, que mientras esta
funcionando el perifrico (entre los
crculos 4 y 5) el CPU no hace nada, solo
espera que termine.

En cambio se puede apreciar en la


segunda seccione de la imagen, que luego
de que el programa que atiende la E/S
pone en funcionamiento el perifrico, el
procesador dedica su tiempo en procesar
el programa original hasta que reciba una
nueva interrupcin, las 2 cruces
identifican las interrupciones.
Con interrupciones
INTERRUPCIONES
Transferencia de Control va Interrupciones

Manejador de
Interrupciones
Programa

Interrupcin
INTERRUPCIONES
Ciclo de Interrupciones
Para tratar las interrupciones , se agrega al ciclo de instruccin una fase de interrupcin.

Ciclo Fetch Ciclo de Ciclo de


(Captura) ejecucin interrupcin

Interrupciones
inhabilitadas

Captura
INICIO Ejecuta Comprobacin de interrupcin;
siguiente interrupcin del proceso
instruccin Interrupciones
instruccin
habilitadas

PARADA

En la fase de interrupcin el procesador comprueba si se a producido cualquier interrupcin.


Indicado por una seal de interrupcin

Si no hay interrupcin, el procesador continua con la fase de bsqueda de prxima instruccin de programa que
esta en proceso.

Si hay una interrupcin pendiente:


Suspender ejecucin del programa corriente
Salvar contexto
Hace que PC apunte a la direccin de inicio del
manejador de la interrupcin
Procesar interrupcin
Restaurar contexto y continuar el programa interrumpido
INTERRUPCIONES
MLTIPLES Interrupciones

1. Definir prioridades
Los manejadores de interrupciones de baja prioridad pueden
ser interrumpidos por interrupciones de mayor prioridad.
Una vez que se ha procesado la interrupcin de mayor
prioridad, se retorna al manejador de la interrupcin previa

2. Deshabilitar interrupciones
El procesador ignorar las interrupciones mientras se procesa
otra interrupcin.
Las interrupciones quedan pendientes y son atendidas una
vez que la primera interrupcin ha sido procesada.
Las interrupciones son manejadas en secuencia.
INTERRUPCIONES
Mltiples Interrupciones - Secuencial

Que sucedera si ocurre una interrupcin


mientras se esta ejecutando una
interrupcin?

Hay 2 alternativas, la primera es que mientras


se esta atendiendo una interrupcin se
desactivan las dems, luego que se termina
de atender la interrupcin el procesador,
antes de proseguir con la ejecucin del
programa principal, chequea si hay alguna
interrupcin pendiente, y as las va
ejecutando secuencialmente.

La desventaja es que no se tiene en cuenta


ninguna prioridad, y es necesario porque hay
peticiones que en la que es importante
atenderlas rpidamente y hay otras que no.
INTERRUPCIONES
Mltiples Interrupciones - Anidadas

La segunda alternativa es que las


interrupciones tengan prioridad,
entonces, si una interrupcin es
interrumpida por otra que posee
mayor prioridad, se almacena el
contexto de ejecucin de la
interrupcin en curso, se carga el PC
con la nueva direccin y se empieza a
ejecutar las instrucciones del
programa que atiende la nueva
interrupcin, al terminar se continua
atendiendo la interrupcin anterior, y
cuando se termina de atender esta, se
vuelve a la ejecucin del programa
principal.
INTERRUPCIONES
Orden de prioridad de las Interrupciones

Las interrupciones tienen un orden de prioridad, de forma que si ocurren dos


de forma simultnea es atendida la de prioridad ms alta. El orden en que se
atienden es el siguiente:

1 . Excepciones del procesador.


2 . Interrupciones software.
3 . Interrupciones hardware no enmascarables.
4 . Interrupciones hardware enmascarables.
INTERRUPCIONES
TABLA DE INTERRUPCIONES DEL SISTEMA (BIOS-DOS)
INT 00: Divisin por cero
INT 01: Ejecucin paso a paso
INT 02: No Enmascarable (NMI)
INT 03: Puntos de ruptura
INT 04: Desbordamiento (INTO)
INT 05: Volcar pantalla por impresora (BIOS)
INT 06: Cdigo de operacin incorrecto
INT 07: Reservada
INT 08: IRQ 0: Contador de hora del sistema (BIOS)
INT 09: IRQ 1: Interrupcin de teclado (BI0S)
INT 0A: IRQ 2: canal E/S, segundo 8259 del AT
INT 0B: IRQ 3: COM2
INT 0C: IRQ 4: COMl
INT 0D: IRQ 5: disco duro XT, LPT2 en AT, retrazo vertical PCjr
INT 0E: IRQ 6: Controlador del disquete
INT 0F: IRQ 7: LPT1
INT 10: Servicios de video (BIOS)
INT 11: Listado del equipo (BIOS)
INT 12: Tamao de memoria (BIOS)
INT 13: Servicios de disco (BIOS)
INT 14: Comunicaciones en serie (BIOS)
INT 15: Servicios del sistema (BIOS)
INT 16: Servicios de teclado (BIOS)
INT 17: Servicios de impresora (BIOS)
INTERRUPCIONES
TABLA DE INTERRUPCIONES DEL SISTEMA (BIOS-DOS)
INT 18: IBM Basic (ROM Del BASIC)
INT 19: Arranque del sistema (BIOS)
INT lA: Fecha/hora del sistema
INT lB: Accin de CTRL-BREAK (BIOS)
INT lC: Proceso peridico del usuario (Usuario)
INT ID: Parmetros de video (BIOS)
INT lE: Parmetros del disquete (BIOS)
INT lF: Tabla de caracteres grficos (BIOS)
INT 20: Fin de programa (DOS)
INT 21: Servicio del sistema operativo (DOS)
INT 22: Direccin de terminacin (DOS)
INT 23: DOS CTRL-BREAK (DOS)
INT 24: Manipulador de errores crticos (DOS)
INT 25: Lectura absoluta de disco (DOS)
INT 26: Escritura absoluta en disco (DOS)
INT 27: Terminar permaneciendo residente (DOS)
INT 28: DOS Idle (programas residentes que usan funciones DOS)
INT 29: DOS TTY (impresin en pantalla)
INT 2A: Red local MS net
INT 2B-2D: Uso interno del DOS
INT 2E: Procesos Batch (DOS)
INT 2F: Multiplex (DOS)
INT 30: Compatibilidad CP/M-80 (xx:YYyy en JMP XXxx:YYyy)
INT 31: Compatibilidad CP/M-80 (XX en JMP XXxx:YYyy)
INT 32: Reservada
INT 33: Controlador del ratn
INT 34-3F: Reservadas
INTERRUPCIONES
TABLA DE INTERRUPCIONES DEL SISTEMA (BIOS-DOS)
INT 40: Interrupcin de disquete (BIOS)
INT 41: Parmetros del disco duro 1 (BIOS)
INT 42: Apunta a la INT 10h original del BIOS si existe VGA
INT 43: Caracteres grficos EGA (BIOS)
INT 44-45: Reservadas
INT 46: Parmetros del disco duro 2 (BIOS)
INT 47-49: Reservadas
INT 4A: Alarma del usuario
INT 4B-5F: Reservadas
INT 60-66: Para uso de los programas
INI 67: Interrupcin de EMS (controlador EMS)
INT 68-6F: Reservadas
INT 70: IRQ 8: Reloj de tiempo real AT (2 chip 8259-AT)
INT 71: IRQ 9: IRQ 2 redireccionada (2 chip 8259-AT)
INT 72: IRQ 10: reservada (2 chip 8259-AI)
INT 73: IRQ 11: reservada (2 chip 8259-AT)
INT 74: IRQ 12: interrupcin de ratn IBM (2 chip 8259-AT)
INT 75: IRQ 13: error de coprocesador matemtico (2 chip 8259-AT)
INI 76: IRQ 14: controlador disco fijo (2 chip 8259-AT)
INT 77: IRQ 15: reservada (2 chip 8259-AT)
INT 78-7F: Reservadas
INT 80-85: Reservadas para el Basic
INT 86-FO: Usadas por el Basic
INT FI-FF: Para uso de los programas
INTERRUPCIONES
TABLA DE INTERRUPCIONES DEL SISTEMA (BIOS-DOS)

Una de las rutinas ms frecuentes del DOS se conoce


como la INT 21h, cuya accin recurre a transferir
datos por un dispositivo de Entrada/Salida.
El tipo de accin depende del valor que tome el
registro AH y de algunos otros valores que tomen
otros registros, por ejemplo el registro DX o DL.
INTERRUPCIONES
TABLA DE INTERRUPCIONES - INT 21h (tabla resumida)

AH OPERACIN Detalle

01 Lee el teclado AL = carcter ASCII; lo escrito en el


teclado hace eco en el monitor

02 Escribe en el monitor DL = carcter ASCII a visualisar


(pantalla)

03 Lee carcter del COM1 AL = carcter ASCII ledo

04 Escribe en COM1 DL = carcter a enviar

05 Imprime en LPT1 DL = carcter ASCII a imprimir


(impresora)
INTERRUPCIONES
TABLA DE INTERRUPCIONES - INT 21h (tabla resumida)
AH OPERACIN Detalle

Lee entrada de dispositivo Lee carcter de teclado en AL sin eco


08 sin eco

Visualiza una cadena de DS: DX = direccin de cadena; la


09 caracteres en el monitor cadena se termina con 24h; 0Dh para
retorno al inicio de lnea; 0Ah para
saltar a la siguiente lnea

Ingreso de cadena de DS:DX = direccin del buffer, el


0A caracteres por teclado a un segundo byte del buffer contiene el
buffer nmero de caracteres pulsados, en el
tercer byte empieza la cadena hasta
terminar con 0Dh
INTERRUPCIONES
TABLA DE INTERRUPCIONES - INT 21h (tabla resumida)

AH OPERACIN Detalle
0E Selecciona unidad de DL = nmero de unidad de disco; AL
disco por omisin = nmero total de unidades de
discos presentes.
Unidad de disco A = 00h, B = 01h, C
= 02h, etc
2A Lee fecha del sistema AL = da de la semana; CX = ao; DH
= mes; DL = da del mes (domingo =
00; sbado = 06)

2B Establece fecha del CX = ao; DH = mes; DL = da del


sistema mes
INTERRUPCIONES
TABLA DE INTERRUPCIONES - INT 21h (tabla resumida)

AH OPERACIN Detalle

2C Lee hora del sistema CH = hora (0 a 23); CL = minutos; DH =


segundos; DL = seg/10

2D Establece hora del sistema CH = hora; CL = minutos; DH =


segundos; DL = seg/10

36 Determina espacio libre en DL = nmero de unidad; (ver detalles


disco en manual)

39 Crear subdirectorio DX = direccin de subdirecto- rio de


cadena.
INTERRUPCIONES
TABLA DE INTERRUPCIONES - INT 21h (tabla resumida)

AH OPERACIN Detalle

3A Borra subdirectorio DS: DX = direccin de cadena ASCII


del nombre del directorio

3B Cambiar subdirectorio DX = direccin de subdirectorio

3C Crear nuevo archivo CX = palabra de atributo: 01h acceso


de slo lectura, 02h archivo o
directorio oculto, 04h archivo del
sistema , 08h etiqueta volumen, 10h
subdirectorio, 20h bit de archivo.
DX = direccin de nombre de archivo.
INTERRUPCIONES
TABLA DE INTERRUPCIONES - INT 21h (tabla resumida)

AH OPERACIN Detalle

3D Abrir un archivo DX = direccin de archivo. En


AL el cdigo de acceso: 00h
slo lectura, 01h slo escritura,
02h lectura o escritura.

3E Cerrar un archivo BX = manejar archivo

3F Leer un archivo BX = manejar archivo, CX =


nmero de bytes a leer, DX =
direccin de buffer de archivo
INTERRUPCIONES
TABLA DE INTERRUPCIONES - INT 21h (tabla resumida)

AH OPERACIN Detalle
40 Escribe un archivo CX = nmero de bytes a
escribir; BX = asa del
archivo; DS: DX = direccin
del buffer de archivo que
contiene lo datos a escribir
41 Borra archivo DS: DX = direccin de cadena
ASCII del nombre del archivo

4C Devuelve el control al Si hay error este se guarda en


DOS AL

Вам также может понравиться