You are on page 1of 8

Interrupcin

1
Interrupcin
En el contexto de la informtica, una interrupcin (del ingls Interrupt Request, tambin conocida como peticin
de interrupcin) es una seal recibida por el procesador de un ordenador, indicando que debe "interrumpir" el curso
de ejecucin actual y pasar a ejecutar cdigo especfico para tratar esta situacin.
Una interrupcin es una suspensin temporal de la ejecucin de un proceso, para pasar a ejecutar una subrutina de
servicio de interrupcin, la cual, por lo general, no forma parte del programa, sino que pertenece al sistema operativo
o al BIOS. Una vez finalizada dicha subrutina, se reanuda la ejecucin del programa.
Las interrupciones surgen de la necesidad que tienen los dispositivos perifricos de enviar informacin al procesador
principal de un sistema informtico.
La primera tcnica que se emple para esto fue el polling, que consista en que el propio procesador se encargara de
sondear los dispositivos perifricos cada cierto tiempo para averiguar si tena pendiente alguna comunicacin para l.
Este mtodo presentaba el inconveniente de ser muy ineficiente, ya que el procesador consuma constantemente
tiempo y recursos en realizar estas instrucciones de sondeo.
El mecanismo de interrupciones fue la solucin que permiti al procesador desentenderse de esta problemtica, y
delegar en el dispositivo perifrico la responsabilidad de comunicarse con l cuando lo necesitara. El procesador, en
este caso, no sondea a ningn dispositivo, sino que queda a la espera de que estos le avisen (le "interrumpan")
cuando tengan algo que comunicarle (ya sea un evento, una transferencia de informacin, una condicin de error,
etc.).
Funcionamiento del mecanismo de interrupciones
Todos los dispositivos que deseen comunicarse con el procesador por medio de interrupciones deben tener asignada
una lnea nica capaz de avisar al CPU cuando le requiere para realizar una operacin. Esta lnea se denomina IRQ
("Interrupt ReQuest" o peticin de interrupcin).
Las IRQ son lneas que llegan al controlador de interrupciones, un componente de hardware dedicado a la gestin de
las interrupciones, y que puede estar integrado en el procesador principal o ser un circuito separado conectado al
mismo. El controlador de interrupciones debe ser capaz de habilitar o inhibir las lneas de interrupcin y establecer
prioridades entre las mismas. Cuando varias lneas de peticin de interrupcin se activan a la vez, el controlador de
interrupciones utilizar estas prioridades para escoger la interrupcin sobre la que informar al procesador principal.
Tambin puede darse el caso de que una rutina de tratamiento de interrupcin sea interrumpida para realizar otra
rutina de tratamiento de una interrupcin de mayor prioridad a la que se estaba ejecutando; aunque hay
interrupciones que no se pueden deshabilitar (conocidas como interrupciones no enmascarables o NMI).
Un procesador principal que no tenga un controlador de interrupciones integrado, suele tener una nica lnea de
interrupcin llamada habitualmente INT. Esta lnea es activada por el controlador de interrupciones cuando tiene una
interrupcin que servir. Al activarse esta lnea, el procesador consulta los registros del controlador de interrupciones
para averiguar cual IRQ hay que atender. A partir del nmero del IRQ busca en la tabla de vectores de interrupcin
la direccin de la rutina a la que debe llamar para atender la peticin del dispositivo asociado a dicha IRQ.
Interrupcin
2
Procesamiento de una interrupcin
1. Terminar la ejecucin de la instruccin mquina en curso.
2. Salvar el estado del procesador (valores de registros y flags) y el valor del contador de programa, IP, en la pila, de
manera que en la CPU, al terminar el proceso de interrupcin, pueda seguir ejecutando el programa a partir de la
ltima instruccin.
3. 3. La CPU salta a la direccin donde est almacenada la rutina de servicio de interrupcin (Interrupt Service
Routine, o abreviado ISR) y ejecuta esa rutina que tiene como objetivo atender al dispositivo que gener la
interrupcin.
4. 4. Una vez que la rutina de la interrupcin termina, el procesador restaura el estado que haba guardado en la pila en
el paso 2 y retorna al programa que se estaba usando anteriormente.
Mecanismo y lneas de peticin de interrupcin
El bus de control de la placa base dispone de lneas especficas para el sistema de interrupciones. Un PC tpico
dispone en su placa base de un controlador de interrupciones 8259 de Intel o de un circuito integrado anlogo. Este
dispositivo electrnico dispone de hasta 16 lneas IRQ, numeradas desde el 00 hasta el 15. En las nuevas placas base
este circuito est integrado junto con el resto del chipset y permite hasta 24 interrupciones.
En el IBM PC y XT existan 8 lneas de peticin de interrupcin manejadas por el controlador de interrupciones Intel
8259. Estas lneas estn numeradas del 0 al 7, las dos primeras estn asignadas al timer tick del temporizador Intel
8253, y al teclado. Solo quedaban 6 lneas para otros dispositivos, que aparecen como tales en el bus de control
(IRQ2 - IRQ7). A partir del modelo AT se aadieron otras 8 lneas, numeradas del 8 al 15, mediante un segundo
controlador de interrupciones (PIC), aunque la tecnologa empleada exigi colgarlo de la lnea IRQ2 del primero, de
forma que esta lnea se dedica a atender las interrupciones del segundo controlador a travs de la lnea 9 de este
ltimo, y la lnea 8 se dedic al reloj de tiempo real, un dispositivo que no exista en los modelos XT.
Aunque internamente se manejan 16 lneas, no todas tienen contacto en los zcalos del bus externo (son las marcadas
con asterisco en la tabla que sigue). La razn de esta ausencia en los zcalos de conexin es que son de asignacin
fija, y solo son usadas por ciertos dispositivos instalados en la propia placa base. En concreto la lnea NMI est
asignada al mecanismo de control de paridad de la memoria, la lnea 0 est asignada al cronmetro del sistema y la
lnea 1 al chip que controla el teclado (dispositivos que pueden requerir atencin urgente por parte del procesador).
Es costumbre denominar IRQx a las que tienen prolongacin en el bus.
Tericamente las restantes lneas podran ser asignadas a cualquier nuevo dispositivo, pero en la prctica algunas
estn reservadas a dispositivos estndar. Por ejemplo, IRQ3 est casi siempre asignado al puerto serie COM2 y el
IRQ4 al COM1; IRQ6 al controlador estndar de disquetes y IRQ7 al puerto de impresora LPT1. La tabla 1 muestra
las asignaciones clsicas para el XT y el AT.
En sistemas ms modernos utilizan la arquitectura APIC de Intel con 24 lneas y 8 extra para enrutar las
interrupciones PCI.
Interrupcin
3
Nombre Int (hex) XT: Descripcin AT: Descripcin
NMI --- Paridad* Paridad*
IRQ0 08 Temporizador* Temporizador*
IRQ1 09 Teclado* Teclado*
IRQ2 0A Reservado Interrupciones 8 a 15 (PIC#2)
IRQ3 0B Puertos serie COM2/COM4 Puerto serie COM2/COM4
IRQ4 0C Puertos serie COM1/COM3 Puertos serie COM1/COM3
IRQ5 0D Disco duro Puerto Paralelo LPT2
IRQ6 0E Disquete Disquete
IRQ7 0F Puerto Paralelo LPT1 Puerto Paralelo LPT1
IRQ8 70 No existe Reloj de tiempo real*
IRQ9 71 No existe Redirigido a IRQ2*
IRQ10 72 No existe no asignado
IRQ11 73 No existe no asignado
IRQ12 74 No existe Ratn PS2
IRQ13 75 No existe Coprocesador 80287*
IRQ14 76 No existe Contr. disco IDE primario
IRQ15 77 No existe Contr. disco IDE secundario
IR716 || 78 || Existe || Contr. disco SATA primario
Cuando se instala un dispositivo de E/S que puede necesitar muchisima atencin del procesador pentium, debe
asignrsele una IRQ adecuada. Dicho en otras palabras, cuando un dispositivo perifrico requiera atencin, debe
enviar una seal en la lnea IRQ especificada. Inicialmente esta asignacin se efectuaba de forma manual y
automatica, por medio de puentes (jumpers) en la placa o dispositivo movil, pero actualmente esta seleccin puede
hacerse mediante software.
Tipos de interrupciones
Atendiendo a la fuente que las produce, las interrupciones pueden clasificarse de la siguiente forma:
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.
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.
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).
Interrupcin
4
Interrupciones de hardware
Las interrupciones de hardware son aquellas interrupciones que se producen como resultado de, por lo general, una
operacin de E/S. No son producidas por ninguna instruccin de un programa sino por las seales que emiten los
dispositivos perifricos para indicarle al procesador que necesitan ser atendidos.
Cuando el microprocesador accede a un perifrico (disco duro, puerto de comunicacin...), puede transcurrir algn
tiempo antes de que los datos sean obtenidos o transmitidos. La solucin ms simple es esperar hasta recibir los
datos o hasta que se haya efectuado la transmisin (polling), pero esta solucin bloquea todos los programas en
ejecucin, y eso no puede admitirse en un sistema multitarea. Por ello, en los sistemas modernos se prefiere un
funcionamiento mediante interrupciones, ya que stas permiten mejorar la productividad del procesador, de forma
que este ltimo puede ordenar una operacin de E/S y, en lugar de tener que realizar una espera activa, se puede
dedicar a atender a otro proceso o aplicacin hasta que el dispositivo est de nuevo disponible, siendo dicho
dispositivo el encargado de notificar al procesador mediante la lnea de interrupcin que ya est preparado para
continuar/terminar la operacin de E/S.
Excepciones
Las excepciones son un tipo de interrupcin sincrnica tpicamente causada por una condicin de error en un
programa, como por ejemplo una divisin entre 0 o un acceso invlido a memoria en un proceso de usuario.
Normalmente genera un cambio de contexto a modo supervisor para que el sistema operativo atienda el error. As
pues, las excepciones son un mecanismo de proteccin que permite garantizar la integridad de los datos almacenados
tanto en el espacio de usuario como en el espacio kernel. Cuando el Sistema Operativo detecta una excepcin intenta
solucionarla, pero en caso de no poder simplemente notificar la condicin de error a la aplicacin/usuario y abortar
la misma.
Interrupciones por software
Las interrupcin por software, tambin denominadas llamadas al sistema, son aquellas generadas por un programa
mientras este est ejecutndose. En general, actan de la siguiente manera:
1. Un programa que se vena ejecutando luego de su instruccin I5 , llama al Sistema Operativo, por ejemplo para
leer un archivo de disco (cuando un programa necesita un dato exterior , se detiene y pasa a cumplir con las tareas
de recoger ese dato).
2. A tal efecto, luego de I5 existe en el programa, la instruccin de cdigo de mquina CD21, simbolizada INT 21
en Assembler, que realiza el requerimiento del paso 1. Puesto que no puede seguir la ejecucin de la instruccin
I6 y siguientes del programa hasta que no se haya ledo el disco y est en memoria principal dicho archivo,
virtualmente el programa se ha interrumpido, siendo, adems, que luego de INT 21, las instrucciones que se
ejecutarn no sern del programa, sino del Sistema Operativo. ( se detiene el programa y ordena en este caso
mediante INT21 ( interrupcin predefinida ) que recoge el dato solicitado, para poder sequir el programa que la
ordeno ).
3. La ejecucin de INT 21 permite hallar la subrutina del Sistema Operativo.
4. 4. Se ejecuta la subrutina del Sistema Operativo que prepara la lectura del disco.
5. 5. Luego de ejecutarse la subrutina del Sistema Operativo, y una vez que se haya ledo el disco y verificado que la
lectura es correcta, el Sistema Operativo ordenar reanudar la ejecucin del programa autointerrumpido en espera.
6. 6. La ejecucin del programa se reanuda.
Interrupcin
5
Determinacin de la direccin de la rutina de servicio de interrupcin
Hay dos alternativas para determinar la direccin de la rutina de servicio de interrupcin que se debe ejecutar al
recibir una interrupcin determinada:
Direcciones fijas. Se hallan cableadas en el procesador y por tanto nunca pueden ser cambiadas. Esto implica que
las RSI siempre estarn en una determinada posicin de la memoria.
Direcciones variables (por interrupciones vectorizadas). En este grupo se incluyen aquellas que presentan una
direccin variable y que, por tanto, no se halla cableada en el procesador. De esta manera el dispositivo debe dar
informacin acerca de la localizacin de la direccin de comienzo de la RSI asociada a dicho perifrico.
Direcciones variables
Hay distintas metodologas de diseo para las interrupciones con direcciones variables. En la actualidad, las
alternativas que son implementadas de manera habitual son las siguientes:
Direccionamiento absoluto. En este caso es el dispositivo o la interfaz del dispositivo la encargada de conocer la
direccin de la RSI y de enviarla al procesador para que ste pueda localizar dicha subrutina y ejecutarla.
Direccionamiento relativo. El dispositivo solo suministra parte de la direccin de comienzo y es el procesador el
encargado de completarla (aadiendo bits o sumando una determinada cantidad, que siempre ser fija). Esta
alternativa tiene una ventaja sobre la anterior y es que permite especificar la direccin de comienzo con menos
bits y por tanto simplifica el diseo. Ahora bien tiene una desventaja principal y es que limita el nmero de
dispositivos que podemos conectar y adems ciertos bits de la direccin quedan fijados de forma permanente por
la CPU lo que reduce la capacidad de reubicabilidad de la RSI. Una alternativa que utilizan ciertos procesadores
como el 8080 o el 8085 es que en vez de enviar solamente la direccin de comienzo de la RSI se enva tambin el
cdigo de la operacin de salto (por ejemplo CALL).
Direccionamiento indirecto. Tambin conocida como direccionamiento por interrupciones vectorizadas. Se
mantiene una tabla de vectores de interrupcin (direcciones de comienzo de las distintas RSI) y a cada
interrupcin se le asocia un nmero que ser el ndice por el cual se acceder a la tabla y se recuperar la
informacin de la direccin de comienzo. Necesita seales de conformidad o handshaking para sincronizar al
procesador con la interfaz, ya que esta ltima tiene que indicarle al procesador cuando va a enviarle el ndice que
necesita para buscar el vector de interrupcin (INT) y el procesador deber enviar otra seal para indicar que se
ha reconocido la interrupcin (INTA#).
Determinacin de la fuente que genera la interrupcin
Hay distintas formas de identificar la fuente de una determinada interrupcin. La primera alternativa que se
consider fue asignar una lnea (un bit) para cada interrupcin, lo cual supona un gran costo en cuanto a la relacin
de nmero de dispositivos y nmero de bits usados y a menudo limitaba el nmero de dispositivos que se podan
conectar. Por ello, se pens con posterioridad en que en cada patilla de interrupcin debera poder conectarse ms de
un dispositivo, debiendo implementar por tanto una metodologa que permitiese identificar de forma unvoca de qu
dispositivo se trataba. Para ello hay varias directrices:
Polling. Se trata de que la CPU comprueba de manera sistemtica todos los dispositivos de manera que "busca"
cul de ellos fue el que solicit la interrupcin. Esto tiene una ventaja y es que es barato a nivel de coste hardware
ya que el "polling" se implementa en software, no obstante tiene otras desventajas que no podemos olvidar y es
que suele ser lento porque tiene que comprobar en serie todos los dispositivos y establece una prioridad en los
dispositivos (el orden de sondeo) y por tanto puede provocar inanicin.
Interrupciones vectorizadas. Este concepto fue ya tratado en el apartado anterior. Como ventajas podemos
destacar que suele ser rpido pero implica un alto costo en el hardware.
Interrupcin
6
Hardware paralelo. Se utiliza un registro de interrupcin cuyos bits se controlan de forma independiente por las
seales de peticin de interrupcin de cada perifrico. Segn la posicin de cada bit en el registro, se
establece la prioridad.
Sistemas de prioridad
El sistema operativo necesita un mecanismo para priorizar las interrupciones y tratar primero las ms urgentes. Para
ello, existen varias alternativas:
Interrupciones simultneas. No tienen por qu ocurrir de manera simultnea sino que se refiere a que en un
momento dado pueden haber varias interrupciones activas.
Interrupciones anidadas. Mientras se est procesando una determinada rutina de servicio de interrupcin sucede
otra seal de interrupcin.
Inhibicin de interrupciones. Se deshabilitan las dems interrupciones mientras se est tratando una.
Interrupciones simultneas
En este mtodo tenemos dos alternativas, una de ellas es que exista algn hardware que tenga como entradas las
seales de interrupcin y de como salida la interrupcin ms prioritaria que est activa en ese momento. Otra
alternativa es tener un mtodo de identificacin de prioridades distribuida y no generalizada como en el caso
anterior, en este caso tenemos que destacar dos tcnicas distintas que se pueden implementar en la prctica:
Polling. Como ya vimos es el CPU el que chequea los dispositivos y el orden de sondeo determina la prioridad.
Daisy-chain. (conexin en cadena) Podemos conectar los distintos dispositivos en cadena, en orden decreciente de
prioridad y por tanto la seal de reconocimiento de interrupcin (INTA#) solo ser pasada al siguiente dispositivo
en caso de que el anterior (ms prioritario) no haya solicitado los servicios del procesador. Sin embargo, algo
importante es que las seales de interrupcin que van al procesador estn conectadas todas a un mismo cable, por
tanto, deberemos utilizar alguna tcnica especial para que no se produzca un cortocircuito. Para evitar
precisamente que la pista se cortocircuite se utiliza la tcnica del "open-collector" o "colector abierto" y consiste
en conectar el colector de un transistor a la pista comn (un transistor por cada dispositivo) y por tanto estarn
tantos colectores conectados como dispositivos tengamos (se entiende que son dispositivos que mandan peticin
de interrupcin al procesador).
Hbrida. Mezcla las dos tcnicas explicadas anteriormente.
Interrupciones anidadas
Existen dos mtodos para tratar las interrupciones anidadas. El primero se basa en inhabilitar las interrupciones
mientras se est ejecutando una determinada RSI. Esto puede realizarlo el hardware de manera automtica en
algunos procesadores, pero en otros ser el usuario el encargado de deshabilitarlas en caso de que no desee que
ninguna otra interrupcin pueda interrumpir el transcurso normal de la rutina de servicio de interrupcin. No es
aconsejable deshabilitar las interrupciones durante mucho tiempo ya que esto puede provocar errores y prdida de
informacin.
La otra alternativa es permitir que solo las interrupciones ms prioritarias puedan suspender la ejecucin de la RSI
actual. Para esto tendremos que definir qu lneas son ms prioritarias que otras. Otra consideracin de esta segunda
alternativa es que al anidar distintas llamadas a rutinas tendremos que contar con una pila suficientemente grande
para que esta no se desborde.
Interrupcin
7
Inhibicin de interrupciones
Hay distintas alternativas de inhibicin de interrupciones. Como ya hemos visto estas se pueden hacer de manera
automtica por el hardware en algunos casos mientras que en otros ser el usuario el encargado de realizarlo por
software y esto depende de la arquitectura del procesador que consideremos. Las distintas opciones son:
Deshabilitar todas las interrupciones. Para esto basta con inhibir el bit del registro de flag dedicado a las
interrupciones.
Deshabilitar al principio de la RSI y activarlas de nuevo al finalizar la misma. Puede ser de manera automtica o
por el usuario.
Desactivar solo las interrupciones que tengan menor prioridad que la asociada a la RSI que se est ejecutando en
ese momento.
Deshabilitar de forma selectiva distintos niveles de prioridad de interrupcin. Para lo cual se emplean registros
especiales denominados mscaras en el que cada uno de sus bits identifican a un nivel distinto y modificando su
contenido se puede establecer que niveles estn activos en ese momento. Se puede cambiar por el programador.
Fuentes y contribuyentes del artculo
8
Fuentes y contribuyentes del artculo
Interrupcin Fuente: http://es.wikipedia.org/w/index.php?oldid=76454028 Contribuyentes: Acanas, Adriannn, Aeris17, Airunp, Alexquendi, Alucard0, Ciencia Al Poder, Cinevoro, DJ
Nietzsche, Davius, Diegusjaimes, Dogor, Dreitmen, Ecemaml, Elas, Etorralbo90, Ezarate, Farisori, Fdipilla, Gaijin, GermanX, Grillitus, Guille.hoardings, Hprmedina, Inuart, JavierCantero,
Jcastp, Jkbw, JorgeGG, Jynus, Khiari, Klyone, Leynar, Manw, MarcoAurelio, Martely, Masterjuantex, Matdrodes, Microc, Moriel, Nahuel Josefe, Pablocarballo, Paintman, Pertile, Plux,
Raulshc, Renly, Reyiyo, Rolfetas, Sanbec, Sauron, Savh, Skiker007, SuperBraulio13, Syum90, Tano4595, Technopat, Tixel, Tomatejc, XeMyCo, 163 ediciones annimas
Licencia
Creative Commons Attribution-Share Alike 3.0
//creativecommons.org/licenses/by-sa/3.0/

You might also like