6
INTERRUPCIONES Interrupción (también conocida como interrupción de hardware o petición de interrupción) es una señal recibida por el procesador de un ordenador, indicando que debe "interrumpir" el curso de ejecución actual y pasar a ejecutar código específico para tratar esta situación. Una interrupción es una suspensión temporal de la ejecución de un proceso, para pasar a ejecutar una subrutina de servicio de interrupción, 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 ejecución del programa. Las interrupciones surgen de las necesidades que tienen los dispositivos periféricos de enviar información al procesador principal de un sistema de computación. La primera técnica que se empleó fue que el propio procesador se encargara de sondear (polling) los dispositivos cada cierto tiempo para averiguar si tenía pendiente alguna comunicación para él. Este método presentaba el inconveniente de ser muy ineficiente, ya que el procesador constantemente consumía tiempo en realizar todas las instrucciones de sondeo. El mecanismo de interrupciones fue la solución que permitió al procesador desentenderse de esta problemática, y delegar en el dispositivo la responsabilidad de comunicarse con el procesador cuando lo necesitara. El procesador, en este caso, no sondea a ningún 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 información, una condición de error, etc.). FUNCIONAMIENTO DEL MECANISMO DE INTERRUPCIONES Cada dispositivo que desea comunicarse con el procesador por medio de interrupciones debe tener asignada una línea única capaz de avisar al CPU que le requiere para una operación. Esta línea es la llamada IRQ. Las IRQ son líneas que llegan al controlador de interrupciones el cual debe ser capaz de habilitar o inhibir líneas de interrupción, y establecer prioridades entre las distintas

Interrupciones-Investigación

Embed Size (px)

DESCRIPTION

interrupciones

Citation preview

INTERRUPCIONESInterrupcin(tambin conocida comointerrupcin de hardwareopeticin de interrupcin) es una seal recibida por elprocesadorde unordenador, 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 deservicio de interrupcin, la cual, por lo general, no forma parte del programa (generalmente perteneciente alsistema operativo, o alBIOS). Luego de finalizada dicha subrutina, se reanuda la ejecucin del programa.Las interrupciones surgen de las necesidades que tienen losdispositivos perifricosde 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.).

FUNCIONAMIENTO DEL MECANISMO DE INTERRUPCIONESCada dispositivo que desea comunicarse con el procesador por medio de interrupciones debe tener asignada una lnea nica capaz de avisar al CPU que le requiere para una operacin. Esta lnea es la llamadaIRQ.Las IRQ son lneas que llegan alcontrolador de interrupciones el cual 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. 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. Sin embargo hay interrupciones que no se pueden deshabilitar, las conocidas comointerrupciones no enmascarableso 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 losregistrosdel controlador de interrupciones para averiguar cual IRQ hay que atender. A partir del nmero del IRQ busca en la tabla devectores de interrupcinla direccin de larutinaque debe llamar para atender una peticin del dispositivo asociado a dicha IRQ.

Pasos para el procesamiento de una IRQ:1. Terminar la ejecucin de lainstruccin de mquinaen curso.2. Salva el valor decontador 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 larutina de servicio de interrupciny 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.TIPOS DE INTERRUPCIONES

Interrupciones de hardwareSon 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 losdispositivospara 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.

TrampasEs 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 uncambio de contextoamodo supervisorpara 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 espaciokernel. 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.

Interrupciones de softwareLas 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, enDOSse realiza la instruccin INT 0x21 y enUnixse utiliza INT 0x80 para hacer llamadas de sistema.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 simultneasEn 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 anidadasExisten 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.

Inhibicin de interrupcionesHay 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.

http://mimosa.pntic.mec.es/~flarrosa/raton.pdfhttp://es.wikipedia.org/wiki/Interrupci%C3%B3nPD 1: (Wikipedia) fue una de las pginas que ms convenci en cuando a informacin sobre el tema de interrupciones (aunque sabemos que muchos la consideran una mala fuente de informacin).PD 2: las fuentes de informacin de Buses, se encuentra en la presentacin de PowerPoint de dicho tema.