You are on page 1of 18

Interrupcin (tambin conocida como corrupcin del hardware o 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 supone la ejecucin temporaria de un programa, para pasar a ejecutar una "subrutina de servicio de interrupcin", que pertenece al BIOS (Basic Input Output System)

Las interrupciones surgen de las necesidades que tienen los dispositivos perifricos de enviar informacin al procesador principal de un sistema de computacin. La primera tcnica que se emple fue que el propio procesador se encargara de sondear (polling) el dispositivo cada cierto tiempo para averiguar si tena pendiente alguna comunicacin para l. Aunque esta tcnica fue ineficiente ya que el procesador requera de un estimado de tiempo o a veces mayor. El mecanismo de interrupciones fue la solucin que permiti al procesador desentenderse de esta problemtica. En este caso, el microprocesador, 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.).

Cada dispositivo que desea comunicarse con el procesador por interrupciones debe tener asignada una lnea nica capaz de avisar a ste de que le requiere para una operacin. Esta lnea es la llamada IRQ ("Interrupt ReQuest", peticin de interrupcin). Las IRQ son lneas que llegan al controlador de interrupciones, un componente hardware dedicado a la gestin de las interrupciones, y que puede estar integrado en el procesador principal o ser un circuito separado conectado al procesador principal. El controlador de interrupciones debe ser capaz de habilitar o inhibir lneas de interrupcin y establecer prioridades entre las distintas interrupciones habilitadas.

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. Sin embargo hay interrupciones que no se pueden enmascarar o deshabilitar, las conocidas como interrupciones no enmascarables o NMI. Un procesador principal 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 qu IRQ es la que ha de atender. A partir del nmero de IRQ busca en el vector de interrupciones qu rutina debe llamar para atender una peticin del dispositivo asociado a dicha IRQ.

1)

Terminar la ejecucin de la instruccin mquina en curso.

2) Salva el valor de contador de programa, IP, en la pila, de manera que en la CPU, al terminar el proceso, pueda seguir ejecutando el programa a partir de la ltima instruccin.

3) La CPU salta a la direccin donde est almacenada la rutina de servicio de interrupcin (ISR, Interrupt Service Routine) y ejecuta esa rutina que tiene como objetivo atender al dispositivo que gener la interrupcin.
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.

Un ordenador 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.

1.- Interrupciones Hardware : Son interrupciones que se producen como resultado normalmente de una operacin de E/S. No son producidas por ninguna instruccin sino que son seales que producen los dispositivos para indicarle al procesador que necesitan ser 'atendidos'. Las interrupciones hardware son interesantes en cuanto a que permiten mejorar la productividad del procesador ya que este ltimo puede ordenar una operacin de E/S y en lugar de tener que esperar a que el dispositivo acabe realizando una espera activa, es decir, sin hacer ningn trabajo til, se puede dedicar a atender a otro proceso o aplicacin y cuando el dispositivo este de nuevo disponible ser el encargado de notificarle al procesador mediante la lnea de interrupcin ya que est preparado para continuar/terminar la operacin de E/S.

2.- Trampas Traps : Es un tipo de interrupcin sincrnica tpicamente causada por una condicin de error, por ej. una divisin por 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. De manera que podemos ver como las excepciones son un mecanismo de proteccin que permite garantizar la integridad de los datos tanto en el espacio de usuario como en el espacio kernel. El SO cuando detecta una excepcin intenta solucionarla pero en caso de no poder simplemente notificar la condicin de error a la aplicacin y abortar la misma.

3.- Interrupciones software o excepciones : A menudo se tiende a confundir las interrupciones software y las trampas, ya que su naturaleza es bastante similar. Sin embargo las excepciones se producen al realizar una operacin no permitida por lo que de algn modo podemos decir que no es controlada directamente por el programador sino que, por un fallo al programar, se producen. No obstante las trampas s que son provocadas por el programador. Para provocar una trampa existen distintas instrucciones en el cdigo mquina que permiten al programador producir una interrupcin al ejecutar dicha instruccin. Suelen tener nemotcnicos tales como INT. Suelen ser de vital importancia ya que a partir de las trampas se pueden pedir al SO que realice determinadas funciones, para ello, en DOS se realiza la instruccin INT 0x21 y en Unix se utiliza INT 0x80.

En este apartado vamos a considerar las distintas alternativas que se nos presentan a la hora de decidir cmo determinar la direccin de comienzo de la rutina de servicio de interrupcin que debe ejecutarse al recibir una interrupcin determinada. En principio podemos definir dos alternativas: 1.- Direcciones fijas 2.- Direcciones variables

1.- 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. 2.- Direcciones Variables (por interrupciones vectorizadas) : En este apartado hay que matizar una cosa. Entre parntesis podemos observar que pone "direcciones por interrupciones vectorizadas" pues bien, en este punto hay una confusin muy comn y es nosotros a menudo concebimos las direcciones por interrupciones vectorizadas como un caso concreto de direcciones variables que es aquella en la que existe una tabla con los vectores de interrupcin . Entre las alternativas que se implementan de manera habitual en la actualidad:

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 este 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.

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#).

Existe las siguiente alternativas: 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 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 degrada el rendimiento total del sistema. 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. 2.- 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 la CPU la que chequea los dispositivos y el orden de sondeo determina la prioridad. "Daisy-chain": "Daisy-chain" significa "cadena de flores" y viene a significar que 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 hay algo importante que explicar y 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. 3.- Inhibicin de interrupciones En este apartado queremos destacar las 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

You might also like