Professional Documents
Culture Documents
Interrupcin
Interrupcin (tambin conocida como interrupcin de 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 es una suspensin temporal de la ejecucin de un programa, para pasar a ejecutar una subrutina de servicio de interrupcin, la cual, por lo general, no forma parte del programa (generalmente perteneciente al sistema operativo, o al BIOS). Luego de finalizada dicha subrutina, se reanuda la ejecucin del programa. 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) los dispositivos 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 constantemente consuma tiempo en realizar todas las instrucciones de sondeo. El mecanismo de interrupciones fue la solucin que permiti al procesador desentenderse de esta problemtica, y delegar en el dispositivo la responsabilidad de comunicarse con el procesador 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.).
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.
Puertos serie COM2/COM4 Puerto serie COM2/COM4 Puertos serie COM1/COM3 Puertos serie COM1/COM3 Disco duro Disquete Impresora primaria LPT1 No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable Impresora secundaria LPT2 Disquete Impresora primaria LPT1 Reloj de tiempo real* Redirigido a IRQ2* no asignado no asignado Ratn PS2 Coprocesador 80287* Contr. disco IDE primario Contr. disco IDE secundario
Interrupcin Cuando se instala un dispositivo de E/S que puede necesitar atencin del procesador, debe asignrsele una IRQ adecuada. Dicho en otras palabras, cuando requiera atencin debe enviar una seal en la lnea IRQ especificada. Inicialmente esta asignacin se efectuaba de forma manual, por medio de puentes (jumpers) en la placa o dispositivo, pero actualmente esta seleccin puede hacerse por software.
Mecanismo de interrupciones en un PC
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.
Tipos de interrupciones
En este subapartado vamos a hacer una clasificacin de las distintas clases de interrupciones que nos podemos encontrar atendiendo a la fuente que las produce. Por un lado distinguiremos si se producen por causas internas o externas al procesador y remarcaremos que este hecho est ntimamente ligado con que las interrupciones sean sncronas o asncronas: 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 lo producen son externas al procesador y a menudo suelen estar ligadas con distintos dispositivos de E/S. Traps. Normalmente son causadas al realizarse operaciones no permitidas tales como la divisin por 0, el desbordamiento, el acceso a una posicin de memoria no permitida, etc. Interrupciones por software. Las interrupciones por software son generadas por el programa en ejecucin. Para generarla, existen distintas instrucciones en el cdigo mquina que permiten al programador producir una interrupcin, suelen tener nemotcnicos tales como INT. Suelen ser de vital importancia ya que a partir de estas interrupciones se solicita al sistema operativo realizar determinadas funciones, para ello. Por ejemplo, en DOS se realiza la instruccin INT 0x21 y en Unix se utiliza INT 0x80 para hacer llamadas de sistema.
Interrupciones de hardware
Son interrupciones que se producen como resultado de, normalmente, una operacin de E/S. No son producidas por ninguna instruccin de un programa sino por seales que producen los dispositivos para indicarle al procesador que necesitan ser atendidos. Las interrupciones de 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 realizando una espera activa, a que el dispositivo termine, es decir, sin hacer ningn trabajo til, se puede dedicar a atender a otro proceso o aplicaciones y cuando el dispositivo est de nuevo disponible ser el encargado de notificarle al procesador mediante la lnea de interrupcin que ya est preparado para continuar/terminar la operacin de E/S. Entradas/salidas: Cuando un microprocesador accesa un perifrico (disco duro, puerto de comunicacin...), puede transcurrir algn tiempo antes de que los datos puedan ser obtenidos o bien transmitidos. La solucin ms simple es esperar hasta recibir un dato o bien hasta que se efecta una transmisin (espera ocupado, o polling), pero esta solucin bloquea todos los programas en ejecucin, y eso no puede admitirse bajo un sistema multitarea. En los sistemas modernos se
Interrupcin prefiere un funcionamiento mediante interrupciones: El perifrico seala una eventualidad mediante una interrupcin, como por ejemplo que ha acabado la transmisin de los datos, y una rutina trata esta interrupcin. Para que la transferencia sea ms eficiente suele usarse el acceso directo a memoria (DMA), mediante el cual los bloques son ledos o bien escritos en memoria sin la intervencin del CPU.
Trampas
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.
Interrupcin
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#).
Interrupcin 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
Se necesita un mecanismo para priorizar las interrupciones y tratar primero las ms urgentes. 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
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.
Tormenta de interrupciones
Este evento se puede producir cuando un procesador recibe un nmero demasiado grande de interrupciones, las cuales consumen la mayor parte del tiempo del procesador. Las tormentas de interrupciones suelen ser causadas por dispositivos de hardware que no son compatibles con una tasa de interrupcin limitante. Como curiosidad, se conjetura que la primera tormenta de interrupciones pudo ocurrir durante el descenso lunar del Apollo 11 en 1969.
Licencia
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/