fbpx
Wikipedia

Interrupción

En el contexto de la informática, una interrupción (del inglés interrupt request, en español «petición de interrupción») es una señal recibida por el procesador de una computadora, que indica 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, sino que pertenece al sistema operativo o al BIOS. Una vez finalizada dicha subrutina, se reanuda la ejecución del programa.

Las interrupciones son generadas por los dispositivos periféricos habilitando una señal del CPU (llamada IRQ del inglés "interrupt request") para solicitar atención del mismo. Por ejemplo. cuando un disco duro completa una lectura solicita atención al igual que cada vez que se presiona una tecla o se mueve el ratón.

La primera técnica que se empleó para esto fue el polling, que consistía en que el propio procesador se encargara de sondear los dispositivos periféricos 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 consumía constantemente tiempo y recursos en realizar estas 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 periférico la responsabilidad de comunicarse con él 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

Todos los dispositivos que deseen comunicarse con el procesador por medio de interrupciones deben tener asignada una línea única capaz de avisar al CPU cuando le requiere para realizar una operación. Esta línea se denomina IRQ.

Las IRQ son líneas que llegan al controlador de interrupciones, un componente de hardware dedicado a la gestión 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 líneas de interrupción y establecer prioridades entre las mismas. Cuando varias líneas de petición de interrupción se activan a la vez, el controlador de interrupciones utilizará estas prioridades para escoger la interrupción sobre la que informará al procesador principal. También puede darse el caso de que una rutina de tratamiento de interrupción sea interrumpida para realizar otra rutina de tratamiento de una interrupción 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 línea de interrupción llamada habitualmente INT. Esta línea es activada por el controlador de interrupciones cuando tiene una interrupción que servir. Al activarse esta línea, el procesador consulta los registros del controlador de interrupciones para averiguar cual IRQ hay que atender. A partir del número del IRQ busca en la tabla de vectores de interrupción la dirección de la rutina a la que debe llamar para atender la petición del dispositivo asociado a dicha IRQ.

Procesamiento de una interrupción

  1. Terminar la ejecución de la instrucción máquina 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 interrupción, pueda seguir ejecutando el programa a partir de la última instrucción.
  3. La CPU salta a la dirección donde está almacenada la rutina de servicio de interrupción (Interrupt Service Routine, o abreviado ISR) y ejecuta esa rutina que tiene como objetivo atender al dispositivo que generó la interrupción.
  4. Una vez que la rutina de la interrupción termina, el procesador restaura el estado que había guardado en la pila en el paso 2 y retorna al programa que se estaba usando anteriormente.

Mecanismo y líneas de petición de interrupción

El bus de control de la placa base dispone de líneas específicas para el sistema de interrupciones. Un PC típico dispone en su placa base de un controlador de interrupciones 8259 de Intel o de un circuito integrado análogo. Este dispositivo electrónico dispone de hasta 16 líneas 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 existían 8 líneas de petición de interrupción manejadas por el controlador de interrupciones Intel 8259. Estas líneas están numeradas del 0 al 7, las dos primeras están asignadas al timer tick del temporizador Intel 8253, y al teclado. Solo quedaban 6 líneas para otros dispositivos, que aparecen como tales en el bus de control (IRQ2 - IRQ7). A partir del modelo AT se añadieron otras 8 líneas, numeradas del 8 al 15, mediante un segundo controlador de interrupciones (PIC), aunque la tecnología empleada exigió colgarlo de la línea IRQ2 del primero, de forma que esta línea se dedica a atender las interrupciones del segundo controlador a través de la línea 9 de este último, y la línea 8 se dedicó al reloj de tiempo real, un dispositivo que no existía en los modelos XT.

Aunque internamente se manejan 16 líneas, no todas tienen contacto en los zócalos del bus externo (son las marcadas con asterisco en la tabla que sigue). La razón de esta ausencia en los zócalos de conexión es que son de asignación fija, y solo son usadas por ciertos dispositivos instalados en la propia placa base. En concreto la línea NMI está asignada al mecanismo de control de paridad de la memoria, la línea 0 está asignada al cronómetro del sistema y la línea 1 al chip que controla el teclado (dispositivos que pueden requerir atención urgente por parte del procesador). Es costumbre denominar IRQx a las que tienen prolongación en el bus.

Teóricamente las restantes líneas podrían ser asignadas a cualquier nuevo dispositivo, pero en la práctica algunas están reservadas a dispositivos estándar. Por ejemplo, IRQ3 está casi siempre asignado al puerto serie COM2 y el IRQ4 al COM1; IRQ6 al controlador estándar de disquetes y IRQ7 al puerto de impresora LPT1. La tabla 1 muestra las asignaciones clásicas para el XT y el AT.

En sistemas más modernos utilizan la arquitectura APIC de Intel con 24 líneas y 8 extra para enrutar las interrupciones PCI.

Nombre Int (hex) XT: Descripción AT: Descripción
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 Ratón PS2
IRQ13 75 No existe Coprocesador 80287*
IRQ14 76 No existe Contr. disco IDE primario
IRQ15 77 No existe Contr. disco IDE secundario
IRQ16 78 Existe Contr. disco SATA primario

Cuando se instala un dispositivo de entrada o de salida que puede necesitar muchísima atención del procesador, debe asignársele una IRQ adecuada. Dicho en otras palabras, cuando un dispositivo periférico requiera atención, debe enviar una señal en la línea IRQ especificada. Inicialmente esta asignación se efectuaba de forma manual y automática, por medio de puentes (jumpers) en la placa o dispositivo móvil, pero actualmente esta selección 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 asíncronas a la ejecución 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 entrada o salida.
  • Excepciones. Son aquellas que se producen de forma síncrona a la ejecución del procesador y por tanto podrían 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 división entre 0, el desbordamiento, el acceso a una posición de memoria no permitida, etc.
  • Interrupciones por software. Las interrupciones por software son aquellas generadas por un programa en ejecución. Para generarlas, existen distintas instrucciones en el código máquina que permiten al programador producir una interrupción, las cuales suelen tener nemotécnicos tales como INT (por ejemplo, en DOS se realiza la instrucción INT 0x21 y en Unix se utiliza INT 0x80 para hacer llamadas de sistema).

Interrupciones de hardware

Las interrupciones de hardware son aquellas interrupciones que se producen como resultado de, por lo general, una operación de E/S. No son producidas por ninguna instrucción de un programa sino por las señales que emiten los dispositivos periféricos para indicarle al procesador que necesitan ser atendidos.

Cuando el microprocesador accede a un periférico (disco duro, puerto de comunicación..), puede transcurrir algún tiempo antes de que los datos sean obtenidos o transmitidos. La solución más simple es esperar hasta recibir los datos o hasta que se haya efectuado la transmisión (polling), pero esta solución bloquea todos los programas en ejecución, 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 operación de entrada o salida y, en lugar de tener que realizar una espera activa, se puede dedicar a atender a otro proceso o aplicación hasta que el dispositivo esté de nuevo disponible, siendo dicho dispositivo el encargado de notificar al procesador mediante la línea de interrupción que ya está preparado para continuar o terminar la operación de entrada o salida.

Excepciones

Las excepciones son un tipo de interrupción sincrónica típicamente causada por una condición de error en un programa, como por ejemplo una división entre 0 o un acceso inválido 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 protección 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 excepción intenta solucionarla, pero en caso de no poder simplemente notificará la condición de error a la aplicación/usuario y abortará la misma.

Interrupciones por software

Las interrupciones por software, también denominadas llamadas al sistema, son aquellas generadas por un programa mientras este está ejecutándose. En general, actúan de la siguiente manera: Un programa en ejecución llega a una instrucción que requiere del sistema operativo para alguna tarea, por ejemplo para leer un archivo en el disco duro (cuando un programa necesita un dato exterior, se detiene y pasa a cumplir con las tareas de recoger ese dato). En ese momento por tanto llama al sistema y se interrumpe virtualmente hasta recibir respuesta, en el ejemplo anterior hasta que no se haya leído el disco y el archivo esté en memoria principal. Durante esa espera las instrucciones que se ejecutarán no serán del programa, sino del sistema operativo. Una vez este termine su rutina ordenará reanudar la ejecución del programa autointerrumpido en espera. Por último la ejecución del programa se reanuda.

Determinación de la dirección de la rutina de servicio de interrupción

Hay dos alternativas para determinar la dirección de la rutina de servicio de interrupción que se debe ejecutar al recibir una interrupción determinada:

  • Direcciones fijas. Se hallan cableadas en el procesador y por tanto nunca pueden ser cambiadas. Esto implica que las RSI siempre estarán en una determinada posición de la memoria.
  • Direcciones variables (por interrupciones vectorizadas). En este grupo se incluyen aquellas que presentan una dirección variable y que, por tanto, no se halla cableada en el procesador. De esta manera el dispositivo debe dar información acerca de la localización de la dirección de comienzo de la RSI asociada a dicho periférico.

Direcciones variables

Hay distintas metodologías de diseño 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 dirección 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 dirección de comienzo y es el procesador el encargado de completarla (añadiendo bits o sumando una determinada cantidad, que siempre será fija). Esta alternativa tiene una ventaja sobre la anterior y es que permite especificar la dirección de comienzo con menos bits y por tanto simplifica el diseño. Ahora bien tiene una desventaja principal y es que limita el número de dispositivos que podemos conectar y además ciertos bits de la dirección quedan fijados de forma permanente por la CPU lo que reduce la capacidad de reubicabilidad de la ISR. Una alternativa que utilizan ciertos procesadores como el 8080 o el 8085 es que en vez de enviar solamente la dirección de comienzo de la ISR se envía también el código de la operación de salto (por ejemplo CALL).
  • Direccionamiento indirecto: También conocida como direccionamiento por interrupciones vectorizadas. Se mantiene una tabla de vectores de interrupción (direcciones de comienzo de las distintas ISR) y a cada interrupción se le asocia un número que será el índice por el cual se accederá a la tabla y se recuperará la información de la dirección de comienzo. Necesita señales 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 interrupción (INT) y el procesador deberá enviar otra señal para indicar que se ha reconocido la interrupción (INTA#).

Determinación de la fuente que genera la interrupción

Hay distintas formas de identificar la fuente de una determinada interrupción. La primera alternativa que se consideró fue asignar una línea (un bit) para cada interrupción, lo cual suponía un gran costo en cuanto a la relación de número de dispositivos y número de bits usados y a menudo limitaba el número de dispositivos que se podían conectar. Por ello, se pensó con posterioridad en que en cada patilla de interrupción debería poder conectarse más de un dispositivo, debiendo implementar por tanto una metodología que permitiese identificar de forma unívoca de qué dispositivo se trataba. Para ello hay varias directrices:

  • Polling: el microprocesador comprueba de manera sistemática todos los dispositivos de manera que «busca» cuál de ellos fue el que solicitó la interrupción. 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 inanición.
  • Interrupciones vectorizadas: este concepto fue ya tratado en el apartado anterior. Como ventajas podemos destacar que suele ser rápido pero implica un alto costo en el hardware.
  • Hardware paralelo: se utiliza un registro de interrupción cuyos bits se controlan de forma independiente por las señales de petición de interrupción   de cada periférico. Según la posición 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 más urgentes. Para ello, existen varias alternativas:

  • Interrupciones simultáneas: No tienen por qué ocurrir de manera simultánea 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 interrupción sucede otra señal de interrupción.
  • Inhibición de interrupciones: Se deshabilitan las demás interrupciones mientras se está tratando una.

Interrupciones simultáneas

En este método tenemos dos alternativas, una de ellas es que exista algún hardware que tenga como entradas las señales de interrupción y de como salida la interrupción más prioritaria que está activa en ese momento. Otra alternativa es tener un método de identificación de prioridades distribuida y no generalizada como en el caso anterior, en este caso tenemos que destacar dos técnicas distintas que se pueden implementar en la práctica:

  • Polling: el microprocesador verifica los dispositivos y el orden de sondeo determina la prioridad.
  • Daisy-chain (conexión en cadena): se puede conectar los distintos dispositivos en cadena, en orden decreciente de prioridad y por tanto la señal de reconocimiento de interrupción (INTA#) solo será pasada al siguiente dispositivo en caso de que el anterior (más prioritario) no haya solicitado los servicios del procesador. Sin embargo, algo importante es que las señales de interrupción que van al procesador están conectadas todas a un mismo cable, por tanto, deberemos utilizar alguna técnica especial para que no se produzca un cortocircuito. Para evitar precisamente que la pista se cortocircuite se utiliza la técnica del open-collecto o «colector abierto» y consiste en conectar el colector de un transistor a la pista común (un transistor por cada dispositivo) y por tanto estarán tantos colectores conectados como dispositivos tengamos (se entiende que son dispositivos que mandan petición de interrupción al procesador).
  • Híbrida: mezcla las dos técnicas explicadas anteriormente.

Interrupciones anidadas

Existen dos métodos 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 automática en algunos procesadores, pero en otros será el usuario el encargado de deshabilitarlas en caso de que no desee que ninguna otra interrupción pueda interrumpir el transcurso normal de la rutina de servicio de interrupción. No es aconsejable deshabilitar las interrupciones durante mucho tiempo ya que esto puede provocar errores y pérdida de información.

Inhibición de interrupciones

Hay distintas alternativas de inhibición de interrupciones. Como ya hemos visto estas se pueden hacer de manera automática 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 automática 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 interrupción. Para lo cual se emplean registros especiales denominados máscaras en el que cada uno de sus bits identifican a un nivel distinto y modificando su contenido se puede establecer que niveles están activos en ese momento. Se puede cambiar por el programador.

Véase también

  •   Datos: Q220764

interrupción, este, artículo, sección, necesita, referencias, aparezcan, publicación, acreditada, este, aviso, puesto, junio, 2011, contexto, informática, interrupción, inglés, interrupt, request, español, petición, interrupción, señal, recibida, procesador, c. Este articulo o seccion necesita referencias que aparezcan en una publicacion acreditada Este aviso fue puesto el 12 de junio de 2011 En el contexto de la informatica una interrupcion del ingles interrupt request en espanol peticion de interrupcion es una senal recibida por el procesador de una computadora que indica que debe interrumpir el curso de ejecucion actual y pasar a ejecutar codigo especifico para tratar esta situacion Una interrupcion es una suspension temporal de la ejecucion de un proceso para pasar a ejecutar una subrutina de servicio de interrupcion 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 ejecucion del programa Las interrupciones son generadas por los dispositivos perifericos habilitando una senal del CPU llamada IRQ del ingles interrupt request para solicitar atencion del mismo Por ejemplo cuando un disco duro completa una lectura solicita atencion al igual que cada vez que se presiona una tecla o se mueve el raton La primera tecnica que se empleo para esto fue el polling que consistia en que el propio procesador se encargara de sondear los dispositivos perifericos cada cierto tiempo para averiguar si tenia pendiente alguna comunicacion para el Este metodo presentaba el inconveniente de ser muy ineficiente ya que el procesador consumia constantemente tiempo y recursos en realizar estas instrucciones de sondeo El mecanismo de interrupciones fue la solucion que permitio al procesador desentenderse de esta problematica y delegar en el dispositivo periferico la responsabilidad de comunicarse con el cuando lo necesitara El procesador en este caso no sondea a ningun 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 informacion una condicion de error etc Indice 1 Funcionamiento del mecanismo de interrupciones 1 1 Procesamiento de una interrupcion 2 Mecanismo y lineas de peticion de interrupcion 3 Tipos de interrupciones 3 1 Interrupciones de hardware 3 2 Excepciones 3 3 Interrupciones por software 4 Determinacion de la direccion de la rutina de servicio de interrupcion 4 1 Direcciones variables 5 Determinacion de la fuente que genera la interrupcion 6 Sistemas de prioridad 6 1 Interrupciones simultaneas 6 2 Interrupciones anidadas 6 3 Inhibicion de interrupciones 7 Vease tambienFuncionamiento del mecanismo de interrupciones EditarTodos los dispositivos que deseen comunicarse con el procesador por medio de interrupciones deben tener asignada una linea unica capaz de avisar al CPU cuando le requiere para realizar una operacion Esta linea se denomina IRQ Las IRQ son lineas que llegan al controlador de interrupciones un componente de hardware dedicado a la gestion 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 lineas de interrupcion y establecer prioridades entre las mismas Cuando varias lineas de peticion de interrupcion se activan a la vez el controlador de interrupciones utilizara estas prioridades para escoger la interrupcion sobre la que informara al procesador principal Tambien puede darse el caso de que una rutina de tratamiento de interrupcion sea interrumpida para realizar otra rutina de tratamiento de una interrupcion 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 unica linea de interrupcion llamada habitualmente INT Esta linea es activada por el controlador de interrupciones cuando tiene una interrupcion que servir Al activarse esta linea el procesador consulta los registros del controlador de interrupciones para averiguar cual IRQ hay que atender A partir del numero del IRQ busca en la tabla de vectores de interrupcion la direccion de la rutina a la que debe llamar para atender la peticion del dispositivo asociado a dicha IRQ Procesamiento de una interrupcion Editar Terminar la ejecucion de la instruccion maquina en curso 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 interrupcion pueda seguir ejecutando el programa a partir de la ultima instruccion La CPU salta a la direccion donde esta almacenada la rutina de servicio de interrupcion Interrupt Service Routine o abreviado ISR y ejecuta esa rutina que tiene como objetivo atender al dispositivo que genero la interrupcion Una vez que la rutina de la interrupcion termina el procesador restaura el estado que habia guardado en la pila en el paso 2 y retorna al programa que se estaba usando anteriormente Mecanismo y lineas de peticion de interrupcion EditarEl bus de control de la placa base dispone de lineas especificas para el sistema de interrupciones Un PC tipico dispone en su placa base de un controlador de interrupciones 8259 de Intel o de un circuito integrado analogo Este dispositivo electronico dispone de hasta 16 lineas IRQ numeradas desde el 00 hasta el 15 En las nuevas placas base este circuito esta integrado junto con el resto del chipset y permite hasta 24 interrupciones En el IBM PC y XT existian 8 lineas de peticion de interrupcion manejadas por el controlador de interrupciones Intel 8259 Estas lineas estan numeradas del 0 al 7 las dos primeras estan asignadas al timer tick del temporizador Intel 8253 y al teclado Solo quedaban 6 lineas para otros dispositivos que aparecen como tales en el bus de control IRQ2 IRQ7 A partir del modelo AT se anadieron otras 8 lineas numeradas del 8 al 15 mediante un segundo controlador de interrupciones PIC aunque la tecnologia empleada exigio colgarlo de la linea IRQ2 del primero de forma que esta linea se dedica a atender las interrupciones del segundo controlador a traves de la linea 9 de este ultimo y la linea 8 se dedico al reloj de tiempo real un dispositivo que no existia en los modelos XT Aunque internamente se manejan 16 lineas no todas tienen contacto en los zocalos del bus externo son las marcadas con asterisco en la tabla que sigue La razon de esta ausencia en los zocalos de conexion es que son de asignacion fija y solo son usadas por ciertos dispositivos instalados en la propia placa base En concreto la linea NMI esta asignada al mecanismo de control de paridad de la memoria la linea 0 esta asignada al cronometro del sistema y la linea 1 al chip que controla el teclado dispositivos que pueden requerir atencion urgente por parte del procesador Es costumbre denominar IRQx a las que tienen prolongacion en el bus Teoricamente las restantes lineas podrian ser asignadas a cualquier nuevo dispositivo pero en la practica algunas estan reservadas a dispositivos estandar Por ejemplo IRQ3 esta casi siempre asignado al puerto serie COM2 y el IRQ4 al COM1 IRQ6 al controlador estandar de disquetes y IRQ7 al puerto de impresora LPT1 La tabla 1 muestra las asignaciones clasicas para el XT y el AT En sistemas mas modernos utilizan la arquitectura APIC de Intel con 24 lineas y 8 extra para enrutar las interrupciones PCI Nombre Int hex XT Descripcion AT DescripcionNMI 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 COM4IRQ4 0C Puertos serie COM1 COM3 Puertos serie COM1 COM3IRQ5 0D Disco duro Puerto Paralelo LPT2IRQ6 0E Disquete DisqueteIRQ7 0F Puerto Paralelo LPT1 Puerto Paralelo LPT1IRQ8 70 No existe Reloj de tiempo real IRQ9 71 No existe Redirigido a IRQ2 IRQ10 72 No existe no asignadoIRQ11 73 No existe no asignadoIRQ12 74 No existe Raton PS2IRQ13 75 No existe Coprocesador 80287 IRQ14 76 No existe Contr disco IDE primarioIRQ15 77 No existe Contr disco IDE secundarioIRQ16 78 Existe Contr disco SATA primarioCuando se instala un dispositivo de entrada o de salida que puede necesitar muchisima atencion del procesador debe asignarsele una IRQ adecuada Dicho en otras palabras cuando un dispositivo periferico requiera atencion debe enviar una senal en la linea IRQ especificada Inicialmente esta asignacion se efectuaba de forma manual y automatica por medio de puentes jumpers en la placa o dispositivo movil pero actualmente esta seleccion puede hacerse mediante software Tipos de interrupciones EditarAtendiendo a la fuente que las produce las interrupciones pueden clasificarse de la siguiente forma Interrupciones de hardware Estas son asincronas a la ejecucion del procesador es decir se pueden producir en cualquier momento independientemente de lo que este 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 entrada o salida Excepciones Son aquellas que se producen de forma sincrona a la ejecucion del procesador y por tanto podrian 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 division entre 0 el desbordamiento el acceso a una posicion de memoria no permitida etc Interrupciones por software Las interrupciones por software son aquellas generadas por un programa en ejecucion Para generarlas existen distintas instrucciones en el codigo maquina que permiten al programador producir una interrupcion las cuales suelen tener nemotecnicos tales como INT por ejemplo en DOS se realiza la instruccion INT 0x21 y en Unix se utiliza INT 0x80 para hacer llamadas de sistema Interrupciones de hardware Editar Las interrupciones de hardware son aquellas interrupciones que se producen como resultado de por lo general una operacion de E S No son producidas por ninguna instruccion de un programa sino por las senales que emiten los dispositivos perifericos para indicarle al procesador que necesitan ser atendidos Cuando el microprocesador accede a un periferico disco duro puerto de comunicacion puede transcurrir algun tiempo antes de que los datos sean obtenidos o transmitidos La solucion mas simple es esperar hasta recibir los datos o hasta que se haya efectuado la transmision polling pero esta solucion bloquea todos los programas en ejecucion y eso no puede admitirse en un sistema multitarea Por ello en los sistemas modernos se prefiere un funcionamiento mediante interrupciones ya que estas permiten mejorar la productividad del procesador de forma que este ultimo puede ordenar una operacion de entrada o salida y en lugar de tener que realizar una espera activa se puede dedicar a atender a otro proceso o aplicacion hasta que el dispositivo este de nuevo disponible siendo dicho dispositivo el encargado de notificar al procesador mediante la linea de interrupcion que ya esta preparado para continuar o terminar la operacion de entrada o salida Excepciones Editar Las excepciones son un tipo de interrupcion sincronica tipicamente causada por una condicion de error en un programa como por ejemplo una division entre 0 o un acceso invalido a memoria en un proceso de usuario Normalmente genera un cambio de contexto a modo supervisor para que el sistema operativo atienda el error Asi pues las excepciones son un mecanismo de proteccion 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 excepcion intenta solucionarla pero en caso de no poder simplemente notificara la condicion de error a la aplicacion usuario y abortara la misma Interrupciones por software Editar Las interrupciones por software tambien denominadas llamadas al sistema son aquellas generadas por un programa mientras este esta ejecutandose En general actuan de la siguiente manera Un programa en ejecucion llega a una instruccion que requiere del sistema operativo para alguna tarea por ejemplo para leer un archivo en el disco duro cuando un programa necesita un dato exterior se detiene y pasa a cumplir con las tareas de recoger ese dato En ese momento por tanto llama al sistema y se interrumpe virtualmente hasta recibir respuesta en el ejemplo anterior hasta que no se haya leido el disco y el archivo este en memoria principal Durante esa espera las instrucciones que se ejecutaran no seran del programa sino del sistema operativo Una vez este termine su rutina ordenara reanudar la ejecucion del programa autointerrumpido en espera Por ultimo la ejecucion del programa se reanuda Determinacion de la direccion de la rutina de servicio de interrupcion EditarHay dos alternativas para determinar la direccion de la rutina de servicio de interrupcion que se debe ejecutar al recibir una interrupcion determinada Direcciones fijas Se hallan cableadas en el procesador y por tanto nunca pueden ser cambiadas Esto implica que las RSI siempre estaran en una determinada posicion de la memoria Direcciones variables por interrupciones vectorizadas En este grupo se incluyen aquellas que presentan una direccion variable y que por tanto no se halla cableada en el procesador De esta manera el dispositivo debe dar informacion acerca de la localizacion de la direccion de comienzo de la RSI asociada a dicho periferico Direcciones variables Editar Hay distintas metodologias de diseno 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 direccion 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 direccion de comienzo y es el procesador el encargado de completarla anadiendo bits o sumando una determinada cantidad que siempre sera fija Esta alternativa tiene una ventaja sobre la anterior y es que permite especificar la direccion de comienzo con menos bits y por tanto simplifica el diseno Ahora bien tiene una desventaja principal y es que limita el numero de dispositivos que podemos conectar y ademas ciertos bits de la direccion quedan fijados de forma permanente por la CPU lo que reduce la capacidad de reubicabilidad de la ISR Una alternativa que utilizan ciertos procesadores como el 8080 o el 8085 es que en vez de enviar solamente la direccion de comienzo de la ISR se envia tambien el codigo de la operacion de salto por ejemplo CALL Direccionamiento indirecto Tambien conocida como direccionamiento por interrupciones vectorizadas Se mantiene una tabla de vectores de interrupcion direcciones de comienzo de las distintas ISR y a cada interrupcion se le asocia un numero que sera el indice por el cual se accedera a la tabla y se recuperara la informacion de la direccion de comienzo Necesita senales de conformidad o handshaking para sincronizar al procesador con la interfaz ya que esta ultima tiene que indicarle al procesador cuando va a enviarle el indice que necesita para buscar el vector de interrupcion INT y el procesador debera enviar otra senal para indicar que se ha reconocido la interrupcion INTA Determinacion de la fuente que genera la interrupcion EditarHay distintas formas de identificar la fuente de una determinada interrupcion La primera alternativa que se considero fue asignar una linea un bit para cada interrupcion lo cual suponia un gran costo en cuanto a la relacion de numero de dispositivos y numero de bits usados y a menudo limitaba el numero de dispositivos que se podian conectar Por ello se penso con posterioridad en que en cada patilla de interrupcion deberia poder conectarse mas de un dispositivo debiendo implementar por tanto una metodologia que permitiese identificar de forma univoca de que dispositivo se trataba Para ello hay varias directrices Polling el microprocesador comprueba de manera sistematica todos los dispositivos de manera que busca cual de ellos fue el que solicito la interrupcion 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 inanicion Interrupciones vectorizadas este concepto fue ya tratado en el apartado anterior Como ventajas podemos destacar que suele ser rapido pero implica un alto costo en el hardware Hardware paralelo se utiliza un registro de interrupcion cuyos bits se controlan de forma independiente por las senales de peticion de interrupcion P I i displaystyle PI i de cada periferico Segun la posicion de cada bit en el registro se establece la prioridad Sistemas de prioridad EditarEl sistema operativo necesita un mecanismo para priorizar las interrupciones y tratar primero las mas urgentes Para ello existen varias alternativas Interrupciones simultaneas No tienen por que ocurrir de manera simultanea sino que se refiere a que en un momento dado pueden haber varias interrupciones activas Interrupciones anidadas Mientras se esta procesando una determinada rutina de servicio de interrupcion sucede otra senal de interrupcion Inhibicion de interrupciones Se deshabilitan las demas interrupciones mientras se esta tratando una Interrupciones simultaneas Editar En este metodo tenemos dos alternativas una de ellas es que exista algun hardware que tenga como entradas las senales de interrupcion y de como salida la interrupcion mas prioritaria que esta activa en ese momento Otra alternativa es tener un metodo de identificacion de prioridades distribuida y no generalizada como en el caso anterior en este caso tenemos que destacar dos tecnicas distintas que se pueden implementar en la practica Polling el microprocesador verifica los dispositivos y el orden de sondeo determina la prioridad Daisy chain conexion en cadena se puede conectar los distintos dispositivos en cadena en orden decreciente de prioridad y por tanto la senal de reconocimiento de interrupcion INTA solo sera pasada al siguiente dispositivo en caso de que el anterior mas prioritario no haya solicitado los servicios del procesador Sin embargo algo importante es que las senales de interrupcion que van al procesador estan conectadas todas a un mismo cable por tanto deberemos utilizar alguna tecnica especial para que no se produzca un cortocircuito Para evitar precisamente que la pista se cortocircuite se utiliza la tecnica del open collecto o colector abierto y consiste en conectar el colector de un transistor a la pista comun un transistor por cada dispositivo y por tanto estaran tantos colectores conectados como dispositivos tengamos se entiende que son dispositivos que mandan peticion de interrupcion al procesador Hibrida mezcla las dos tecnicas explicadas anteriormente Interrupciones anidadas Editar Existen dos metodos para tratar las interrupciones anidadas El primero se basa en inhabilitar las interrupciones mientras se esta ejecutando una determinada RSI Esto puede realizarlo el hardware de manera automatica en algunos procesadores pero en otros sera el usuario el encargado de deshabilitarlas en caso de que no desee que ninguna otra interrupcion pueda interrumpir el transcurso normal de la rutina de servicio de interrupcion No es aconsejable deshabilitar las interrupciones durante mucho tiempo ya que esto puede provocar errores y perdida de informacion Inhibicion de interrupciones Editar Hay distintas alternativas de inhibicion de interrupciones Como ya hemos visto estas se pueden hacer de manera automatica por el hardware en algunos casos mientras que en otros sera 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 automatica o por el usuario Desactivar solo las interrupciones que tengan menor prioridad que la asociada a la RSI que se esta ejecutando en ese momento Deshabilitar de forma selectiva distintos niveles de prioridad de interrupcion Para lo cual se emplean registros especiales denominados mascaras en el que cada uno de sus bits identifican a un nivel distinto y modificando su contenido se puede establecer que niveles estan activos en ese momento Se puede cambiar por el programador Vease tambien EditarLlamada de interrupcion del BIOS Datos Q220764Obtenido de https es wikipedia org w index php title Interrupcion amp oldid 136114510, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos