Las interrupciones pueden implementarse en hardware como un componente distinto con líneas de control, o pueden integrarse en el subsistema de memoria.
Si se implementa en hardware como un componente distinto, un circuito de controlador de interrupción, como el Controlador de Interrupción Programable (PIC) del IBM PC, puede conectarse entre el dispositivo de interrupción y el pin de interrupción del procesador para multiplexar varias fuentes de interrupción en una o dos líneas de CPU normalmente disponibles. Si se implementa como parte del controlador de memoria, las interrupciones se asignan al espacio de direcciones de memoria del sistema.
IRQ compartidaeditar
Varios dispositivos pueden compartir una línea de interrupción activada por borde si están diseñados para ello. La línea de interrupción debe tener una resistencia de tracción hacia abajo o hacia arriba para que, cuando no se acciona activamente, se asiente a su estado inactivo, que es el estado predeterminado de la misma. Los dispositivos señalan una interrupción conduciendo brevemente la línea a su estado no predeterminado, y dejan que la línea flote (no la conduzca activamente) cuando no señala una interrupción. Este tipo de conexión también se conoce como colector abierto. La línea entonces transporta todos los pulsos generados por todos los dispositivos. (Esto es análogo al cable de tracción de algunos autobuses y carros que cualquier pasajero puede tirar para indicar al conductor que está solicitando una parada.) Sin embargo, los pulsos de interrupción de diferentes dispositivos pueden fusionarse si se producen cerca del tiempo. Para evitar interrupciones perdidas, la CPU debe activarse en el borde final del pulso (por ejemplo, el borde ascendente si la línea se tira hacia arriba y se baja). Después de detectar una interrupción, la CPU debe verificar los requisitos de servicio de todos los dispositivos.
Las interrupciones activadas por borde no sufren los problemas que tienen las interrupciones activadas por nivel al compartir. El servicio de un dispositivo de baja prioridad se puede posponer arbitrariamente, mientras que las interrupciones de dispositivos de alta prioridad continúan recibiéndose y recibiendo servicio. Si hay un dispositivo que la CPU no sabe cómo reparar, lo que puede generar interrupciones falsas, no interferirá con la señalización de interrupciones de otros dispositivos. Sin embargo, es fácil que se pierda una interrupción desencadenada por el borde, por ejemplo, cuando las interrupciones están enmascaradas durante un período, y a menos que haya algún tipo de pestillo de hardware que registre el evento, es imposible recuperarlo. Este problema causó muchos «bloqueos» en el hardware de la computadora temprana porque el procesador no sabía que se esperaba que hiciera algo. El hardware más moderno a menudo tiene uno o más registros de estado de interrupción que bloquean las solicitudes de interrupción; el código de manejo de interrupciones controlado por bordes bien escrito puede verificar estos registros para garantizar que no se pierdan eventos.
El bus de Arquitectura Estándar de la Industria (ISA) utiliza interrupciones activadas en los bordes, sin exigir que los dispositivos puedan compartir líneas IRQ, pero todas las placas base ISA convencionales incluyen resistencias pull-up en sus líneas IRQ, por lo que los dispositivos ISA de buen comportamiento que comparten líneas IRQ deberían funcionar bien. El puerto paralelo también utiliza interrupciones activadas por bordes. Muchos dispositivos antiguos asumen que tienen uso exclusivo de líneas IRQ, lo que hace que compartirlos sea eléctricamente inseguro.
Hay 3 formas en que se pueden subir varios dispositivos «que comparten la misma línea». Primero es por conducción exclusiva (conmutación) o conexión exclusiva (a pines). Lo siguiente es en autobús (todos conectados a la misma línea de escucha): las tarjetas de un autobús deben saber cuándo deben hablar y cuándo no (es decir, el autobús ISA). La conversación se puede activar de dos maneras: mediante un pestillo de acumulación o mediante puertas lógicas. Las puertas lógicas esperan un flujo de datos continuo que se monitoriza para detectar señales clave. Los acumuladores solo se activan cuando el lado remoto excita la puerta más allá de un umbral, por lo que no se requiere una velocidad negociada. Cada uno tiene sus ventajas de velocidad frente a distancia. Un disparador, generalmente, es el método en el que se detecta la excitación: borde ascendente, borde descendente, umbral (el osciloscopio puede desencadenar una amplia variedad de formas y condiciones).
La activación de interrupciones de software debe estar integrada en el software (tanto en el sistema operativo como en la aplicación). Una aplicación «C» tiene una tabla de desencadenadores (una tabla de funciones) en su encabezado, que tanto la aplicación como el sistema operativo conocen y usan adecuadamente, que no está relacionada con el hardware. Sin embargo, no confunda esto con interrupciones de hardware que señalan a la CPU (la CPU promulga software a partir de una tabla de funciones, de manera similar a las interrupciones de software).
Dificultad para compartir líneas de interrumpidaeditar
Varios dispositivos que comparten una línea de interrupción (de cualquier estilo de activación) actúan como fuentes de interrupción espurias entre sí. Con muchos dispositivos en una línea, la carga de trabajo en las interrupciones de servicio aumenta en proporción al cuadrado del número de dispositivos. Por lo tanto, se prefiere distribuir los dispositivos uniformemente a través de las líneas de interrupción disponibles. La escasez de líneas de interrupción es un problema en diseños de sistemas antiguos donde las líneas de interrupción son conductores físicos distintos. Las interrupciones con señales de mensaje, donde la línea de interrupción es virtual, se favorecen en las nuevas arquitecturas de sistema (como PCI Express) y alivian este problema en gran medida.
Algunos dispositivos con una interfaz de programación mal diseñada no proporcionan forma de determinar si han solicitado el servicio. Pueden cerrar con llave o portarse mal si se les da mantenimiento cuando no lo desean. Tales dispositivos no pueden tolerar interrupciones falsas, y por lo tanto tampoco pueden tolerar compartir una línea de interrupción. Las tarjetas ISA, debido a su diseño y construcción a menudo baratos, son notorias por este problema. Tales dispositivos se están volviendo mucho más raros, a medida que la lógica del hardware se vuelve más barata y las nuevas arquitecturas de sistema exigen interrupciones compartibles.
HybridEdit
Algunos sistemas utilizan un híbrido de señalización activada por nivel y activada por borde. El hardware no solo busca un borde, sino que también verifica que la señal de interrupción permanezca activa durante un cierto período de tiempo.
Un uso común de una interrupción híbrida es para la entrada NMI (interrupción no enmascarable). Debido a que las NMIS generalmente señalan eventos importantes – o incluso catastróficos – del sistema, una buena implementación de esta señal intenta garantizar que la interrupción sea válida verificando que permanezca activa durante un período de tiempo. Este enfoque de 2 pasos ayuda a eliminar las interrupciones falsas que afectan al sistema.
Message-signaledEdit
Una interrupción señalada con mensajes no utiliza una línea de interrupción física. En su lugar, un dispositivo señala su solicitud de servicio enviando un mensaje corto a través de algún medio de comunicación, generalmente un bus de computadora. El mensaje puede ser de un tipo reservado para interrupciones, o puede ser de algún tipo preexistente, como una escritura en memoria.
Las interrupciones con señales de mensaje se comportan de manera muy similar a las interrupciones activadas por el borde, en el sentido de que la interrupción es una señal momentánea en lugar de una condición continua. El software de manejo de interrupciones trata a los dos de la misma manera. Por lo general, se permite fusionar varias interrupciones con señales de mensaje pendientes con el mismo mensaje (la misma línea de interrupción virtual), del mismo modo que las interrupciones activadas por bordes muy espaciadas pueden fusionarse.
Los vectores de interrupción con señales de mensaje se pueden compartir, en la medida en que se pueda compartir el medio de comunicación subyacente. No se requiere esfuerzo adicional.
Debido a que la identidad de la interrupción está indicada por un patrón de bits de datos, que no requiere un conductor físico separado, se pueden manejar de manera eficiente muchas interrupciones más distintas. Esto reduce la necesidad de compartir. Los mensajes de interrupción también se pueden pasar a través de un bus serie, sin necesidad de líneas adicionales.
PCI Express, un bus de computadora en serie, utiliza interrupciones con señales de mensaje exclusivamente.
DoorbellEdit
En una analogía de botón pulsador aplicada a sistemas informáticos, el término timbre o interrupción del timbre se usa a menudo para describir un mecanismo mediante el cual un sistema de software puede señalar o notificar a un dispositivo de hardware de computadora que hay algo de trabajo por hacer. Por lo general, el sistema de software colocará los datos en algunas ubicaciones de memoria conocidas y mutuamente acordadas, y «tocará el timbre» escribiendo en una ubicación de memoria diferente. Esta ubicación de memoria diferente a menudo se llama la región del timbre, e incluso puede haber varios timbres que sirven para diferentes propósitos en esta región. Es este acto de escribir en la región de memoria del timbre de la puerta el que» hace sonar la campana » y notifica al dispositivo de hardware que los datos están listos y esperando. El dispositivo de hardware ahora sabemos que los datos son válidos y se puede actuar. Normalmente debería escribir los datos en una unidad de disco duro o enviar a través de una red, o cifrar ellos, etc.
El término interrupción del timbre de la puerta suele ser un nombre inapropiado. Es similar a una interrupción, porque hace que el dispositivo realice algún trabajo; sin embargo, la región del timbre a veces se implementa como una región encuestada, a veces la región del timbre escribe a través de los registros del dispositivo físico, y a veces la región del timbre está conectada directamente a los registros del dispositivo físico. Al escribir a través o directamente en registros de dispositivos físicos, esto puede causar una interrupción real en la unidad de procesador central (CPU) del dispositivo, si tiene una.
Las interrupciones con timbre de puerta se pueden comparar con las Interrupciones con Señales de Mensaje, ya que tienen algunas similitudes.
Multiprocessor IPIEdit
In multiprocessor systems, a processor may send an interrupt request to another processor via inter-processor interrupts (IPI).