Escolar Documentos
Profissional Documentos
Cultura Documentos
Este artculo o seccin necesita referencias que aparezcan en una publicacin acreditada, como revistas especializadas, monografas, prensa diaria o pginas de Internet fidedignas.
Puedes aadirlas as o avisar al autor principal del artculo en su pgina de discusin pegando:
{{subst:Aviso referencias|Interrupcin}} ~~~~
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 es una suspensin temporaria 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 Basic Input Output System-). 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) el dispositivo 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 necesitaba. 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.).
Contenido
[ocultar]
1 Funcionamiento del mecanismo de interrupciones 2 Lineas de peticin de interrupcin 3 Mecanismo de interrupciones en un PC 4 Tipos de interrupciones 5 Usos de los interrupciones o 5.1 Interrupciones hardware o 5.2 Trampas o 5.3 Interrupciones software o excepciones
6 Determinacin de la direccin de la rutina de servicio de interrupcin 7 Direcciones variables 8 Determinacin de la fuente que genera la interrupcin 9 Sistemas de prioridad o 9.1 Interrupciones simultneas o 9.2 Interrupciones anidadas o 9.3 Inhibicin de interrupciones 10 Tormenta de interrupciones
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.
0 1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 8 9 IRQ10 IRQ11 IRQ12 13 IRQ14 IRQ15
08 09 0A 0B 0C 0D 0E 0F 70 71 72 73 74 75 76 77
Temporizador* Temporizador* Teclado* Teclado* Reservado Interrupciones 8 a 15 (PIC#2) Puertos serie COM2/COM4 Puerto serie COM2/COM4 Puertos serie COM1/COM3 Puertos serie COM1/COM3 Disco duro Impresora secundaria LPT2 Disquete Disquete Impresora primaria LPT1 Impresora primaria LPT1 No aplicable Reloj de tiempo real* No aplicable Redirigido a IRQ2* No aplicable no asignado No aplicable no asignado No aplicable Ratn PS2 No aplicable Coprocesador 80287* No aplicable Contr. disco IDE primario No aplicable Contr. disco IDE secundario
Cuando se instala un dispositivo 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.
Interrupciones hardware: Estas son asncronas a la ejecucin del procesador, es decir, se pueden producir en cualquier momento independientemente de lo que est haciendo la 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 : 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 las causas de estas interrupciones suelen ser realizaciones de operaciones no permitidas tales como la divisin por 0, el desbordamiento, el acceso a una posicin de memoria no permitida, etc.
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.
Para permitir una comunicacion no bloqueada con los perifricos externos. Para conmutar las tareas dentro de un planificador
Entradas/salidas:
Cuando un microprocesador verifica un perifrico (disco duro, puerto de comunicacin...), puede transcurrir algn tiempo antes de que los datos puedan ser obtenidos o bien transmitidos. La solucion ms simple es bloquear todo hasta recibir un dato o bien hasta que se efectua una transmision (espera ocupado, ou polling), pero esta solucin bloquea todos los programas en ejecucin, y eso no puede admitirse bajo un sistema multitarea. En los sistemas modernos se prefiere un funcionamiento mediante interrupciones: El perifrico seala mediante una interrupcin que ha acabado la transmisin de los datos, y una rutina trata esta interrupcin. Para que el perifrico sea ms rapido se combina con el acceso directo a memoria (DMA), mediante el cual los bloques son leidos o bien escritos en memoria sin la intervencin de la CPU.
[editar] 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.
. 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. . La ejecucin del programa se reanuda.
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 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. Simplemente resaltar que en algunos textos se utiliza esta denominacin tanto para las direcciones variables en general como para el caso especfico que comentamos con anterioridad. En este grupo incluimos aquellas que presentan una direccin variable y que, por tanto, no se halla cableada en el procesador. De esta manera el dispositivo debe darnos informacin acerca de la localizacin de la direccin de comienzo de la RSI asociada a dicho perifrico. En el siguiente subapartado hablaremos de las distintas metodologas de diseo de las interrupciones con direcciones variables.
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. Una alternativa que utilizan ciertos procesadores como el 8080 o 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 (call por ejemplo).
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#).
Por ltimo introducimos otro apartado en el que indicamos las distintas formas de identificar la fuente de una determinada interrupcin.
"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 y como ventajas podemos destacar que suele ser rpido pero implica un alto costo en el hardware. Hardware paralelo: Se utiliza un registro de interrupcin cuyos bits se controlan de forma independiente por las seales de peticin de interrupcin PIi de cada perifrico. Segn la posicin de cada bit en el registro, se establece la prioridad.
Est claro que necesitamos un mecanismo para priorizar las interrupciones y tratar primero las ms "urgentes". En el siguiente apartado identificaremos los distintos mtodos para establecer sistemas de prioridad y explicaremos de manera ms extensa cada uno de ellos.
Interrupciones simultneas: No tienen por qu ocurrir de manera simultnea sino que se refiere a que en un momento dado puede 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 interrupciones mientras se est tratando una.
"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).
Deshabilitar todas las interrupciones para esto basta con inhibir el bit del registro de flags dedicado a las interrupciones
Como hemos dicho se pueden 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 podemos establecer que niveles estn activos en ese momento. Se puede cambiar por el programador.