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

¿Qué es una interrupción?

Mecanismo por medio del cual cada dispositivo emite una


señal cuando necesita ser atendido por el CPU, para que
éste lo atienda de inmediato. De no existir interrupciones, el
CPU tendría que hacer un chequeo constante de eventos
externos y monitorear cada cierto tiempo a todos los
dispositivos para verificar si necesitan su intervención, lo
cual provocaría mucha lentitud. Las interrupciones sirven
para controlar el hardware, ya que son las que llaman al
CPU cuando dicho hardware necesita su intervención. Así
mismo, con interrupciones el procesador puede trabajar y a
la vez responder a un evento tan pronto como éste ocurra.
Términos a saber:

 IRQ.- Petición de interrupción

 ISR.- Rutina de Servicio a Interrupción

 Vectorización.-
Direccionamiento a un
vector predeterminado de la “Tabla de
Vectores de Interrupción”.
• De Hardware

Tipos de
• Del procesador
interrupcione
s
• De Software
Interrupciones de Hardware
Son invocadas por mecanismos periféricos que fijan sus IRQ’s. Por ejemplo,
cada vez que una tecla es presionada, el teclado genera una interrupción.
Las interrupciones de hardware son vectorizadas a ISR’s que generalmente
residen en el BIOS.
Estas interrupciones son invocadas directamente por los dispositivos de
hardware.
Al producir algún dispositivo la interrupción, el controlador de interfaz de
periféricos o PIC se encarga de gestionarla en base a su prioridad.
El funcionamiento de este tipo de interrupciones se suele utilizar para la
programación de sistemas de comunicaciones.

El bus de la PC ofrece las líneas 2 a 7 para solicitudes de interrupción,


siendo la línea 2 más importante que la línea 7. Cuando se activa una línea,
el procesador deja temporalmente pausado lo que está haciendo y carga
una subrutina especial para “dar servicio” a esa línea de interrupción en
particular.

Por ejemplo, cada vez que el controlador del teclado recibe un tecleo, se
activa su línea de interrupción. El CPU se detiene y ejecuta el programa que
pasa el carácter tecleado a la memoria temporal (buffer) del teclado.
IRQ’s más comunes:
 IRQ 0= Timer
 IRQ 1= Teclado
 IRQ 2= Interrupción del 8259 esclavo
 IRQ 3= Puerto serial 2 ( COM2 )
 IRQ 4= Puerto serial 1 ( COM1 )
 IRQ 5= Puerto paralelo 2 ( LPT2 )
 IRQ 6= Controlador de disco flexible
 IRQ 7= Puerto paralelo 1 ( LPT1 )
 IRQ 8= Timer
 IRQ 9= Adaptador de LAN
 IRQ 10= Reservada
 IRQ 11= Reservada
 IRQ 12= Reservada
 IRQ 13= Cooprocesador 80287
 IRQ 14= Controlador de disco duro
 IRQ 15= Reservada
Interrupciones del procesador o lógicas.

Son invocadas como consecuencia de un resultado inusual del programa

• Interrupciones SVC (supervisor call: llamadas a


supervisor).

• Interrupciones de E/S.
Interrupciones
del • Interrupciones externas.
procesador
• Interrupciones de Reinicio.

• Interrupciones de verificación del programa.

• Interrupciones de verificación de la máquina.


 Interrupciones SVC (supervisor call, llamadas al supervisor).- Son iniciadas
por un proceso en marcha que ejecute la instrucción SVC, que es una
petición generada por el usuario de un servicio particular del sistema, por
ejemplo, una operación de entrada/salida. El mecanismo de las SVC ayuda
a proteger el sistema operativo de las acciones de los usuarios. Un usuario
no puede entrar arbitrariamente al sistema operativo, sino que debe
solicitar un servicio por medio de una SVC. El sistema operativo puede
rechazar ciertas peticiones si el usuario no tiene los privilegios necesarios.

 Interrupciones de E/S.- Son iniciadas por hardware de entrada y salida e


indican al CPU el cambio de estado de un canal de comunicación (bus) o
dispositivo. Las interrupciones de E/S se producen cuando finaliza una
operación de E/S o cuando un dispositivo pasa al estado de “listo” (es
decir, cuando es “reconocido”).

 Interrupciones externas.- Son causadas por eventos como la expiración de


un pulso de reloj (en temporizadores), la pulsación de la tecla de
interrupción de la consola, o la recepción de una señal procedente de otro
procesador en un sistema de múltiples procesadores.
 Interrupciones de Reinicio.- Se producen cuando se presiona el botón de
reinicio de la PC o cuando llega de otro procesador una instrucción de
reinicio en un sistema de multiprocesamiento.

 Interrupciones de verificación del programa.- Son causadas por problemas


al ejecutar las instrucciones en lenguaje máquina de un programa; por
ejemplo, la división entre cero, el exceso o defecto de los números que
pueden ser manejados por las operaciones aritméticas, el intento de hacer
referencia a una localidad de memoria que esté fuera de los límites de la
memoria real,etc. Muchos sistemas ofrecen la opción de especificar las
rutinas que deben ejecutarse cuando ocurra una interrupción de este tipo.

 Interrupciones de verificación de la máquina.- Son ocasionadas por el mal


funcionamiento del hardware, también conocidas como interrupciones del
BIOS.
INTERRUPCIONES DEL BIOS

|NÚMERO |FUNCIÓN
|INT 0x10 |Video
|INT 0x11 |Verificación de Equipo
|INT 0x12 |Verificación de Memoria
|INT 0x13 |Disquetera
|INT 0x14 |Puerta Serial
|INT 0x15 |Cassette
|INT 0x16 |Teclado
|INT 0x17 |Impresora
|INT 0x18 |Programa Basic
|INT 0x19 |Partida del
Computador |INT 0x1A |Hora
del día |INT 0x1B |
Break Teclado |INT 0x1C |
Tics |INT 0x1D |
Tabla Inicialización de Video |INT 0x1E
| Tabla Inicialización de Disco |INT
0x1F |Generador de Caracteres Gráficos
|INT 0x1A |Reloj
Interrupciones de Software

Las interrupciones de software son invocadas a través de la instrucción INT


del 8086 (microprocesador lanzado por INTEL en 1978, con utilización de
la arquitectura de 16 bits, en base al cual están referidas las instrucciones
de Lenguaje Ensamblador más comúnmente usadas).

La mayoría de las interrupciones de software son vectorizadas al DSR (Data


Set Ready – Área de datos del BIOS, estrechamente relacionada con los
dispositivos conectados y la verificación de conectividad y comunicación
con ellos) o a programas de aplicación que hacen uso de dichas
interrupciones para fines dedicados y específicos. Estas interrupciones son
también conocidas como “llamadas a subrutinas”, refiriéndose a
“subrutinas” como las propias de cada sistema operativo o driver. Este tipo
de interrupción es habitual en la programación.
La Tabla de Vectores de Interrupción.

Cuando llamamos a una interrupción, se ejecuta una determinada


rutina la cual se encuentra en la tabla de vectores de interrupción.
Dicha tabla se crea durante la inicialización de la computadora y
se coloca al principio de la memoria RAM (segmento 0 y
desplazamiento 0, o CS:IP en cero), ocupando 1Kb (256 entradas
de 4 bytes cada una). Dicha estructura almacena la dirección, en
memoria, de las distintas rutinas que van ligadas a las distintas
interrupciones de tal modo que, cuando invocamos una
interrupción de software o se invoca una interrupción de
hardware, se utiliza un índice que va ligado a la interrupción. Con
dicho índice, se acude a la tabla de vectores de interrupción para
que el sistema encuentre la dirección de la rutina donde se
especifica la entrada (entre las 256 existentes, con 4 bytes, los
cuales forman la dirección, 2 utilizados como segmentos y los
otros 2 como desplazamiento) que contiene la dirección en
memoria de ésta.
Relación entre interrupciones.

Las llamadas con "INT" son conocidas como interrupciones de software. No


obstante, la relación entre estas interrupciones de software y las
interrupciones de hardware es muy estrecha ya que el proceso que tiene
lugar es genérico, ya sea que se invoque por software en Lenguaje
Ensamblador, o sea ejecutado por los controladores de hardware al tener
lugar una interrupción de Hardware.
Cuando ocurre una interrupción de hardware, un programa en curso puede
desviarse a atender dicha interrupción y, entre instrucción e instrucción, el
microprocesador comprueba si hay alguna interrupción pendiente; si es
así, empuja el registro de flags (banderas o variables booleanas –de cierto
o falso-) en la pila de memoria o buffer y posteriormente a CS e IP (CS es
el registro de memoria donde se almacena la dirección del segmento de
memoria, e IP es el registro de memoria donde se almacena el
desplazamiento en memoria). Carga entonces CS:IP con la dirección de la
rutina de atención a la interrupción (a menudo tratándose de rutinas ISR,
las cuales contienen el código necesario para atender al dispositivo que
provocó la interrupción).
Cuando la rutina termina, el microprocesador vuelve al punto desde donde
saltó, mediante la instrucción IRET, que recupera CS:IP y el registro de
banderas de la pila de memoria. De este modo, cuando una interrupción
salta enmedio de un programa, el funcionamiento de éste no se ve
alterado, sino que sólo se detiene momentáneamente (normalmente
instantes de tiempo muy cortos). Cada interrupción tiene asignada un
número del 0 al 255 que la identifica. En el 8086, la dirección de cada ISR
se encuentra en la tabla de vectores de interrupción, ubicada en el primer
kbyte de la memoria RAM. Esta tabla contiene 256 punteros de 4 bytes
(offset o “desplazamiento”+ segmento), colocados en orden según el
código de interrupción asociado a cada uno. Cuando salta la interrupción
X, se lee el puntero en la posición de memoria 4*X.

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