Casa / resumen de ventanas / Dos dispositivos en un irq qué hacer. Interrupciones de hardware. Controlador de interrupciones. Seguimiento de cargas con una utilidad especial

Dos dispositivos en un irq qué hacer. Interrupciones de hardware. Controlador de interrupciones. Seguimiento de cargas con una utilidad especial

Es raro que una computadora, especialmente una computadora doméstica, viva toda su vida sin pasar por una actualización o la adición de nuevos dispositivos. En la mayoría de los casos, por supuesto, sujeto a las reglas más elementales, dicha operación es indolora y no causa ningún problema especial. Pero aproximadamente cada décima (o incluso vigésima, no importa) computadora se lleva a un estado que no funciona: a menudo comienza a congelarse, se niega a realizar cualquier función, o incluso simplemente cae en el tan querido por todos nosotros. pantalla azul de la muerte. Como regla general, la causa más probable de tales problemas radica en los conflictos de hardware (nuevo y antiguo) que no compartían ningún recurso de hardware. Bueno, si tus calificaciones te permiten solucionar los problemas que han surgido, o hay alguien cerca que te pueda ayudar, pero si no hay nada de eso? Sin embargo, no son los dioses, como saben, las ollas se queman, sentémonos, pensemos, mire y rompa, porque no todo es tan difícil, aunque el problema de la compatibilidad de los equipos más diversos, desde su inicio en a mediados de los 80, todavía no ha disminuido mucho. El artículo propuesto ayudará al usuario a lidiar con uno de los tipos de recursos de hardware necesarios para el equipo y, con mayor frecuencia, la causa principal de todo tipo de conflictos: las interrupciones de hardware (IRQ).

Recursos de hardware del sistema

Los componentes pueden requerir tres tipos principales de diferentes recursos de hardware para funcionar. Casi todos los dispositivos utilizan uno o más puertos de E/S. EN este caso este no es un puerto serie o paralelo, sino solo una dirección especial, algo así como una dirección en RAM. Estos puertos funcionan equipos especiales el procesador central, con la ayuda de la cual cualquier información se escribe en el puerto o se lee de él. A menudo, el intercambio de información entre el procesador y el dispositivo solo se realiza a través de los puertos, y algunos dispositivos aceptan una docena o incluso más de direcciones de puerto, cada una de las cuales sirve para realizar una función específica.

Los canales de acceso directo a la memoria (DMA) se usan con mucha menos frecuencia. Este tipo de interacción está destinado a dispositivos que intercambian grandes bloques de datos con RAM, Por ejemplo, unidades de disco o impresoras. Todo el intercambio pasa por alto el procesador central, que solo inicia la operación de intercambio e inmediatamente procede a realizar otro trabajo. Este enfoque puede aumentar significativamente el rendimiento de todo el sistema.

Y el tercer tipo de recurso son las interrupciones de hardware, que son el mecanismo básico para la respuesta del sistema a eventos externos. Las interrupciones de hardware, comúnmente llamadas IRQ (Solicitudes de interrupción), son señales físicas que el controlador del dispositivo utiliza para informar al procesador que procese una solicitud. Convencionalmente, el esquema de manejo de interrupciones puede verse así:

  • el procesador recibe la señal de interrupción y su número;
  • usando una tabla especial, se encuentra la dirección del programa responsable de manejar la interrupción con el número dado: el controlador de interrupción;
  • el procesador suspende la ejecución de la tarea actual, guarda los resultados intermedios y cambia a la ejecución del controlador de interrupciones;
  • el procesador accede al dispositivo y verifica la causa de la interrupción;
  • se inician las acciones solicitadas: inicialización, configuración del dispositivo, intercambio de datos, etc.;
  • cuando se completan todas las operaciones necesarias, el procesador vuelve a la tarea interrumpida.

A diferencia de las interrupciones de software desencadenadas por un programa de aplicación en ejecución, las interrupciones de hardware pueden ocurrir en los momentos más inesperados y, además, pueden ocurrir múltiples interrupciones al mismo tiempo. Para que el sistema no "piense demasiado" en qué interrupción del servicio en primer lugar, existe un esquema de prioridad especial. A cada interrupción se le asigna su propia prioridad única. Si llegan varias interrupciones al mismo tiempo, entonces el sistema da preferencia a la de mayor prioridad, posponiendo el procesamiento de otras interrupciones menos importantes por un tiempo.

Distribución de interrupciones

Considere cómo se distribuyen normalmente las interrupciones en una computadora estándar. Algunos de los números están estrictamente vinculados a ciertos dispositivos, algunos pueden liberarse y usarse para sus necesidades. Comencemos en orden:

  • IRQ 0- interrumpir el temporizador del sistema. Generado 18,2 veces por segundo. Utilizado en esta capacidad desde la creación de la primera PC de IBM (este número no está disponible para otros usos);
  • IRQ 1- interrupción del teclado. Generado por el controlador de teclado cada vez que se presiona una tecla (el número no está disponible para otros usos);
  • IRQ2 en las computadoras de clase XT, que usaban solo 8 líneas de interrupción, se reservó para una mayor expansión del sistema y, comenzando con las computadoras de clase AT, se usó para conectar un segundo controlador. Hoy en día, el sistema utiliza IRQ 2 para compatibilidad con software anterior, el número no está disponible para otros usos;
  • IRQ 3- interrupción del puerto asíncrono COM 2. La misma interrupción también es utilizada por los dispositivos que operan a través del puerto COM 4. Si lo desea, se pueden desactivar, pero nadie más podrá asignar IRQ 3 de todos modos;
  • IRQ4 por analogía con la anterior, esta interrupción la utilizan los dispositivos que ocupan los puertos COM 1 / COM 3;
  • IRQ 5 originalmente destinado a ser utilizado por el segundo puerto paralelo LPT2, pero luego, cuando se abandonó el segundo puerto paralelo, IRQ 5 quedó libre. Posteriormente fue utilizado activamente por la mayoría de las tarjetas de sonido ISA. Las tarjetas de sonido PCI modernas usan esta interrupción únicamente por compatibilidad con juegos más antiguos, la gran mayoría de los cuales son compatibles con SB Pro. IRQ 5 puede usarse para otros fines y vincularse a una ranura PCI;
  • IRQ6, a partir de las primeras PC, es utilizado por el controlador de disquete (el número no está disponible para otros usos);
  • IRQ7- por defecto, interrupción del primer puerto paralelo LPT 1. Si el puerto está deshabilitado (si la impresora no está disponible o está diseñada para USB), se puede utilizar varios dispositivos. IRQ 7 se puede vincular a una ranura PCI;
  • IRQ8- Interrupción del reloj en tiempo real, introducido por primera vez en IBM AT. Ningún otro uso es posible;
  • IRQ 9 e IRQ 10 son gratuitos;
  • IRQ 11 generalmente reservado para el bus USB, pero puede usarse para otros fines (para hacer esto, deshabilite el soporte USB en el BIOS);
  • IRQ 12 se usa para un mouse PS/2, pero se puede usar para otros fines (si un mouse PS/2 no está disponible o está deshabilitado);
  • IRQ 13 fue utilizado originalmente por el coprocesador aritmético y ahora está reservado para compatibilidad con software anterior (el número no está disponible para otros usos);
  • IRQ 14 y IRQ 15 aplicada por los controladores IDE primario y secundario, respectivamente.

Hay varias formas de averiguar cómo se distribuyen actualmente los números de interrupción en su caso particular. Cuando inicia su computadora, incluso antes de que Windows comience a cargarse, aparece una tabla de texto de configuración. Inmediatamente después hay una lista de dispositivos PCI con una indicación del número IRQ asignado a ellos.

O, si todavía está ejecutando Windows 9x, entonces hay un ícono de Sistema en el panel de control, haga clic en él y seleccione la pestaña "Dispositivos". En las propiedades del dispositivo "Computadora", puede encontrar una lista de todos los dispositivos con sus IRQ. En Windows 2000/XP, no tenemos acceso directo a la administración de interrupciones, por lo que para ver la lista de IRQ, necesitamos usar la utilidad de información estándar (Panel de control/Herramientas administrativas/Administración de computadoras/Información del sistema/Recursos de hardware). Y, finalmente, nadie ha cancelado el uso de utilidades que prueban las capacidades de hardware y software de una computadora.


Entre ellos, sin duda, el más popular es SANDRA, que es capaz de proporcionar al usuario información completa, incluidas las interrupciones.

Conflictos de dispositivos

Sin entrar en demasiados detalles, podemos decir que un conflicto es una situación en la que varios objetos intentan acceder simultáneamente al mismo recurso del sistema. Un conflicto de interrupción ocurre cuando varios dispositivos usan la misma línea de interrupción para enviar una señal de solicitud y no existe un mecanismo para clasificar estas solicitudes, lo que provoca una falla o que uno de los dispositivos simplemente deje de funcionar. Para tener una idea clara de cómo se pueden evitar o eliminar los conflictos, debe comprender el mecanismo de gestión de IRQ.

Como tú sabes, Computadoras personales Comenzó con IBM PC XT. Su arquitectura proporcionaba solo ocho líneas de interrupciones de hardware, que estaban controladas por un controlador especial. A cada uno de ellos se le asignó su propio número único, que determinaba la prioridad de interrupción y la dirección de su controlador (el llamado vector de interrupción). La siguiente versión de la arquitectura, IBM PC AT, complementó las líneas existentes con ocho más, que estaban controladas por un segundo controlador conectado a una de las líneas de interrupción del primer controlador. Desafortunadamente, esta arquitectura detuvo su desarrollo en este punto, por lo que todas las computadoras modernas, a pesar del número significativamente mayor de dispositivos adicionales utilizados en ellas, todavía tienen solo dieciséis líneas de interrupción, una de las cuales está reservada para emular un segundo controlador.

Inicialmente, la computadora IBM PC AT tenía solo un bus, a través del cual los dispositivos podían comunicarse con el procesador y la memoria: ISA. La mayoría de las líneas de interrupción se asignaron a dispositivos ISA estándar, por lo que cuando apareció el nuevo bus PCI universal, resultó que solo quedaban cuatro interrupciones libres en su parte, denotadas como INT A, INT B, INT C, INT D, por lo que solo cuatro dispositivos PCI pueden recibir interrupciones independientes en el sistema. Pero al mismo tiempo, hay que tener en cuenta que el controlador IDE está en una posición especial, que no está entre esos cuatro dispositivos solo porque, aunque es un dispositivo PCI en cuanto al método de transferencia de datos, el propio interrumpe IRQ. 14 e IRQ se le asignan rígidamente 15, como para los dispositivos ISA más antiguos. Para el bus AGP, que es una variación del bus PCI, se "sacrifica" la INT A, y el bus USB, como uno de Componentes del sistema, se conecta a PCI usando INT D, lo que reduce la cantidad de dispositivos PCI "honestos" a solo dos. No debemos olvidarnos del subsistema de administración de energía Power Management / System Management, que también requiere su propia interrupción. Así, en la vida real, si hay varios dispositivos PCI utilizando interrupciones, es imposible proporcionarles IRQ de hardware únicas, y en tales casos, se utiliza un método de hardware-software basado en la tecnología Plug & Play, que teóricamente evita conflictos. Aunque en la vida real puede pasar cualquier cosa, y los dispositivos ISA restantes aún no pueden compartir líneas de interrupción, por lo tanto, son los principales provocadores de conflictos. Así, el problema de resolución de conflictos se reduce a la correcta distribución de números de interrupción en caso de problemas con dispositivos ISA o drivers "buggy".

En el sistema, los números IRQ se asignan dos veces entre líneas físicas. La primera vez que el BIOS del sistema hace esto es cuando se inicia el sistema. A cada dispositivo Plug & Play (y esto incluye todos los PCI, ISA modernos y todos los dispositivos integrados en la placa base) se le asigna un número entre los disponibles. Si no hay suficientes números, varias líneas obtienen uno común. Para dispositivos PCI, esto no es un problema: si tiene controladores normales y soporte del sistema operativo, todo debería funcionar bien. Pero si varios dispositivos ISA reciben el mismo número, o una mezcla no menos "explosiva" de dispositivos PCI e ISA, entonces un conflicto es simplemente inevitable y luego tendrá que intervenir en el proceso de distribución automática de interrupciones. En este caso, debe deshabilitar todos los dispositivos ISA no utilizados (en sistemas sin ranuras ISA, aún están presentes: estos son los puertos COM1, COM2 y la unidad). También puede deshabilitar los modos EPP y ECP del puerto LPT, mientras libera la interrupción IRQ7. Todas las operaciones para cambiar las interrupciones en la configuración del BIOS se llevan a cabo en la sección "Configuración PCI / PNP". Hay dos formas de influir en las asignaciones de números de IRQ: bloquear un número específico y asignar un número de línea directamente. El primer método está disponible para todos los BIOS, se ajustan los elementos del menú "IRQ x used by:" (en BIOS nuevos está oculto en el submenú "Recursos IRQ"). Aquellas interrupciones que deban asignarse exclusivamente a dispositivos ISA deben establecerse en "Legacy ISA". Por lo tanto, al distribuir números para dispositivos PCI, estas interrupciones se omitirán. Debe hacer esto si cualquier dispositivo ISA se obstina en interrumpir con el dispositivo PCI, lo que hace que ambos dejen de funcionar. En este caso, debe encontrar el número de este IRQ y bloquearlo. El dispositivo PCI se mueve al nuevo número IRQ, mientras que el dispositivo ISA permanece igual. La segunda forma de gestionar los números IRQ es la asignación directa, aunque algo más complicada que la primera, es mucho más eficiente. Es una pena que no todas las placas base modernas permitan esta operación. En el mismo submenú de configuración del BIOS, puede haber elementos como "Ranura X usar IRQ" (otros nombres: "PIRQx usar IRQ", "Prioridad PCI ranura x", "INT Pin x IRQ"). Esta opción le permite establecer interrupciones individualmente para cada dispositivo en el bus PCI y AGP. En este caso, se deben observar las siguientes reglas:

  • Cada ranura PCI puede activar hasta cuatro interrupciones: INT A, INT B, INT C e INT D;
  • La ranura AGP puede activar dos interrupciones: INT A e INT B;
  • Es normal que cada ranura se asigne como INT A. Las interrupciones restantes se reservan si el dispositivo PCI/AGP requiere más de una interrupción o si la interrupción solicitada está ocupada;
  • La ranura AGP y la ranura PCI 1 asignan las mismas interrupciones;
  • Las ranuras PCI 4 y 5 también distribuyen las mismas interrupciones;
  • USB utiliza PIRQ_4.

A continuación se muestra una tabla que muestra la relación entre PIRQ (Solicitud de interrupción programable) e INT (Interrupción):

Señal Ranura AGP
Ranura PCI 1
Ranura PCI 2 Ranura PCI 3 Ranura PCI 4
Ranura PCI 5
PIRQ_0 INT A INT D INT C INT B
PIRQ_1 INT B INT A INT D INT C
PIRQ_2 INT C INT B INT A INT D
PIRQ_3 INT D INT C INT B INT A

Normalmente, debe dejar la opción en la posición AUTO. Pero, si es necesario establecer una IRQ individual para un dispositivo en el bus AGP o PCI, en primer lugar, es necesario determinar en qué ranura está instalado el dispositivo. Luego, consultando la tabla, puede configurar el PIRQ principal. Por ejemplo, si tarjeta LAN está configurado en la ranura 3, entonces la PIRQ principal será PIRQ_2, porque todas las ranuras se asignan, si es posible, a INT A. Después de eso, se selecciona la IRQ deseada, asignándole el valor de PIRQ apropiado. Solo tenga en cuenta que el BIOS intentará asignar un PIRQ a INT A para cada ranura. Entonces, para las ranuras AGP y PCI 1, la PIRQ principal es PIRQ_0, mientras que para la ranura PCI 2, la PIRQ principal es PIRQ_1 y así sucesivamente. Se asignan números de interrupción por segunda vez Sistema operativo, aunque Windows 9x comienza a interferir con las acciones realizadas por el BIOS solo en casos extremos. En Windows 98, el sistema de distribución de IRQ se administra mediante el administrador de dispositivos estándar. En la lista de dispositivos del sistema, debe encontrar el bus PCI.


Hay una pestaña especial en sus propiedades. Si todo está configurado correctamente, el minipuerto se mencionará allí ("cargado con éxito") y se habilitará la gestión del bus PCI (Steering). Por lo tanto, Windows "98 tiene los medios para controlar la distribución de números de interrupción entre líneas físicas. Pero dado que el BIOS generalmente hace un buen trabajo con esto, este mecanismo no está involucrado. Pero a veces es simplemente necesario. Cuando se usan dispositivos ISA obsoletos que no son compatibles con la tecnología Plug & Play, es posible que el BIOS no lo note, dando la interrupción ocupada por el dispositivo PCI, nuevamente un conflicto. Para resolverlo, debe reservar la interrupción necesaria en el Administrador de dispositivos de Windows "98.

Además de la redundancia, puede configurar directamente el número de interrupción para el dispositivo. Para hacer esto, debe encontrar la pestaña "Recursos" en sus propiedades, deshabilitar el ajuste automático e intentar cambiar el número de interrupción asignado. Tenga cuidado, tal operación no siempre funciona y, a veces, puede conducir a resultados completamente impredecibles.

Pero sobre Windows 2000 (así como XP), una conversación separada. Si tiene una computadora bastante moderna, probablemente sea compatible con la interfaz de configuración ACPI. En este caso, Windows 2000 generalmente ignorará las acciones del BIOS y "bloqueará" todos los dispositivos PCI en una interrupción lógica. En general, esto funcionará bien (cuando no haya dispositivos ISA), pero a veces pueden surgir problemas. Para poder cambiar los números de interrupción, debe cambiar el núcleo HAL o reinstalar Windows 2000 con ACPI desactivado en el BIOS. El kernel se reemplaza de la siguiente manera: en el administrador de dispositivos, seleccione "Computadora / Computadora con ACPI", luego debe cambiar el controlador a " computadora estándar" y reinicie. Si esto no ayuda, tendrá que reinstalar Windows 2000 nuevamente.

Consejos finales

Después de instalar un nuevo sistema operativo con todos los controladores del dispositivo y asegurarse de que funciona sin problemas, vale la pena anotar todo configuración de la computadora, especialmente si se han realizado cambios en la configuración predeterminada. Es más confiable escribir dicha información en una hoja de papel regular. Dicha información puede ser muy útil al realizar cualquier cambio en el sistema configurado, así como ayudar a resolver los problemas que pueden surgir si todas las configuraciones se "mueven" al instalar nuevos equipos (esto también sucede a veces). Y, lo más importante, recuerde: la mayoría de los problemas que surgen se deben al bajo nivel de conocimientos informáticos del propietario de la computadora. Por lo tanto, uno siempre debe esforzarse por la autoeducación, entonces habrá menos problemas y, sin embargo, los que surjan no parecerán insolubles.

Un conflicto es una situación en la que varios objetos intentan acceder simultáneamente a un recurso que está destinado a uno solo de ellos. Un conflicto de interrupción se produce cuando varios dispositivos utilizan la misma línea de interrupción para enviar una señal de solicitud y no existe un mecanismo para manejar las solicitudes en competencia. Si el controlador, al recibir el control, funciona con un dispositivo diferente al que envió la solicitud, entonces ocurre una falla o uno de los dispositivos simplemente no funciona.

Surge la pregunta: ¿pueden varios dispositivos usar la misma línea de interrupción, o es imposible en principio? Después de todo, si el conductor puede determinar de quién proviene exactamente la solicitud, solo responderá a las señales de "su" dispositivo, ignorando a todos los demás. Pero esto debe acordarse de antemano de alguna manera, de lo contrario, el conflicto es inevitable.

El bus PCI local se diseñó teniendo en cuenta el uso compartido de interrupciones. Cada dispositivo PCI debe funcionar correctamente en la misma línea de interrupción que otros dispositivos PCI. Esto se hace de la siguiente manera: la presencia de una señal en la línea de interrupción no está determinada por el frente, es decir. cambio en el nivel de voltaje, sino por el hecho mismo de la presencia de un cierto voltaje. Varios dispositivos pueden cambiar el voltaje en la línea a la vez, convirtiéndose, por así decirlo, en una cola de servicio.

Por lo tanto, compartir la misma IRQ entre varios dispositivos PCI no es, por definición, un conflicto (Figura). Sin embargo, a veces surgen problemas. Primero, no todos los dispositivos PCI funcionan correctamente en la misma línea de interrupción que otros. En segundo lugar, a veces los controladores tienen errores que les impiden identificar correctamente la fuente de la señal, lo que interfiere con otros controladores. En tercer lugar, no todos los dispositivos funcionan en el bus PCI; por ejemplo, los dispositivos ISA, que incluyen, por ejemplo, controladores de puerto COM/LPT, no pueden compartir interrupciones con otros.

Arroz. Win2000 Device Manager IRQ Map - Chipset IO PIC Intel 440BX

Arroz. Win2000 IRQ MAP - IO APIC - A través del chipset KT266a

Como resultado, son posibles situaciones en las que la computadora a menudo se congela, se niega a realizar alguna función o simplemente cae en la llamada "pantalla azul de la muerte".

Apic (Controlador de interrupción programable avanzado, Controlador de interrupción programable avanzado)

Como se muestra arriba, la línea de interrupción es un recurso muy escaso para una computadora. Sin embargo, con el desarrollo de la industria informática, la cantidad de diversos dispositivos externos en la computadora aumenta constantemente. Por ejemplo, en uno tarjeta madre puede haber 5-6 ranuras PCI, una ranura AGP, un controlador IDE integrado, un controlador SCSI integrado, un adaptador de red de 1/2 puerto integrado, etc. Y todos estos dispositivos necesitan interrupciones. 16 líneas IRQ se volvieron gradualmente insuficientes.

APIC es un controlador de interrupciones que le permite usar 24 interrupciones de hardware en lugar de 16. El límite de 16 interrupciones de hardware, sin cambios desde 1982, dificultó la instalación en una computadora personal dispositivos adicionales. A finales de 2001 aparecieron las primeras placas base con APIC.

Arroz. Sistema de interrupción en un entorno multiprocesador.

La descripción anterior se refería a PIC diseñados para sistemas de un solo procesador. Si el sistema incluye dos o más procesadores, este enfoque ya no es factible y se requieren PIC más complejos.

Todos los procesadores x86 modernos incluyen un APIC local (APIC local). Cada APIC local tiene registros de 32 bits, un reloj interno, un temporizador local y dos líneas IRQ adicionales, LINT0 y LINT1, reservadas para interrupciones APIC locales. Todos los APIC locales están conectados a un APIC de E/S externo.

El I/O APIC contiene un conjunto de 24 líneas IRQ, una tabla de redirección de interrupciones de 24 vías, registros programables y un bloque de mensajes para enviar y recibir mensajes en el bus APIC. A diferencia de los pines IRQ del 8259A, la prioridad de interrupción no está vinculada a un número de pin.

Cada entrada en la tabla de redirección de interrupciones se puede programar individualmente para mostrar el vector de interrupción y su prioridad, qué procesador manejará la interrupción y cómo se seleccionará ese procesador. La información de la tabla de redirección de interrupciones se utiliza para traducir cada señal externa en un mensaje dirigido a uno o más APIC locales a través del bus APIC.

Distribución estática

La señal IRQ es entregada por el APIC local listado en la entrada de la tabla de redirección de interrupción correspondiente. Una interrupción se envía a una CPU en particular, varias CPU o todas las CPU.

Asignación dinámica

La señal IRQ se envía al APIC local del procesador, que ejecuta el proceso con la prioridad más baja.

Cada APIC local tiene un registro de prioridad de trabajo programable que se utiliza para calcular la prioridad del proceso actual. Intel espera que el kernel del sistema operativo actualice este registro en cada cambio de proceso.

Además de distribuir interrupciones entre procesadores multi-APIC, el sistema permite que la CPU genere interrupciones entre procesadores. Cuando una CPU desea enviar una interrupción a otra CPU, almacena el vector de interrupción y el ID de APIC local de destino en el registro de comando de interrupción (ICR) de su APIC local. Luego, el mensaje se envía a través del bus APIC al APIC local de destino, que emite la interrupción adecuada a su CPU.

Actualmente, muchos sistemas monoprocesador incluyen un chip APIC de E/S que se puede configurar de dos maneras:

1. Como un PIC 8259A estándar conectado a la CPU. El APIC local está deshabilitado y las dos líneas LINT0 y LINT1 están configuradas como pines INTR y NMI.

2. Como APIC de E/S externa estándar. El APIC local está habilitado y todas las interrupciones externas se reciben a través del APIC de E/S.

  • Alieva Elena Viktorovna, alumno
  • Universidad Técnica de Aviación del Estado de Ufa
  • CONTROLADOR DE INTERRUPCIONES
  • CONTROLADOR
  • INTERRUPCIÓN DE HARDWARE
  • INTERRUMPIR

Interrupción significa la interrupción temporal del proceso principal de computación para realizar algunas acciones planificadas o no planificadas causadas por la operación del hardware o programa. El mecanismo de interrupción se admite a nivel de hardware. Las interrupciones de hardware ocurren como una respuesta del microprocesador a señal física desde algún dispositivo (teclado, reloj del sistema, teclado, disco duro etc.), estas interrupciones son asincrónicas en el tiempo de ocurrencia, es decir ocurrir en momentos aleatorios. El controlador de interrupciones está diseñado para procesar y arbitrar solicitudes de servicio entrantes al procesador central desde dispositivos periféricos. Las interrupciones tienen una prioridad definida, lo que permite que el controlador de interrupciones priorice un dispositivo sobre otro en un momento dado. En una computadora moderna, hay hasta 16 dispositivos externos y periféricos que generan interrupciones.

  • Automatización del flujo de trabajo de un almacén de una empresa manufacturera.
  • Llamadas-tecnologías, características, aplicación y eficiencia
  • Desarrollo de un modelo del sistema de información del departamento legal para soporte y celebración de contratos empresariales

Introducción

Interrupción significa la interrupción temporal del proceso principal de computación para realizar algunas acciones planificadas o no planificadas causadas por la operación del hardware o programa. Aquellas. es un proceso que cambia temporalmente el microprocesador a la ejecución de otro programa y luego regresa al programa interrumpido. Al presionar una tecla en el teclado, iniciamos una llamada inmediata a un programa que reconoce la tecla, ingresa su código en el búfer del teclado, desde donde otro programa lo lee. Aquellas. durante algún tiempo, el microprocesador interrumpe la ejecución del programa actual y cambia al controlador de interrupciones, el llamado controlador de interrupciones. Después de que el controlador de interrupciones complete su trabajo, el programa interrumpido continuará ejecutándose desde el punto donde fue interrumpido. La dirección del programa manejador de interrupciones se calcula a partir de la tabla de vectores de interrupción.

El mecanismo de interrupción se admite a nivel de hardware. Dependiendo de la fuente, las interrupciones se dividen en:

  • hardware- surgen como una reacción del microprocesador a una señal física de algún dispositivo (teclado, reloj del sistema, teclado, disco duro, etc.), estas interrupciones son asíncronas en el tiempo de ocurrencia, es decir ocurrir en momentos aleatorios;
  • software- se llaman artificialmente con la ayuda del comando correspondiente del programa (int), están destinados a realizar algunas acciones del sistema operativo, son síncronos;
  • excepciones- son la reacción del microprocesador a una situación no estándar que surgió dentro del microprocesador durante la ejecución de alguna instrucción del programa (dividir por cero, interrupción en la bandera TF (trazado)) .

Sistema de interrupción de hardware

El sistema de interrupción es una combinación de software y hardware que implementa el mecanismo de interrupción.

El hardware del sistema de interrupción incluye:

  • salidas del microprocesador: en ellas se generan señales que notifican al microprocesador que algún dispositivo externo "solicita atención" (INTR), o que se requiere un procesamiento urgente de algún evento o error catastrófico (NMI)
  • INTR - pin para la señal de solicitud de interrupción de entrada,
  • NMI - pin de entrada NMI
  • INTA: salida para la señal de salida que confirma la recepción de una señal de interrupción por parte del microprocesador (esta señal se alimenta a la entrada del mismo nombre del chip controlador 8259A;
  • controlador de interrupción programable 8259A (diseñado para capturar señales de interrupción de ocho dispositivos externos; está hecho en forma de microcircuito; por lo general, se utilizan dos microcircuitos conectados en serie, por lo que el número de posibles fuentes de interrupciones externas es de hasta 15 más una interrupción no enmascarable; es él quien genera el número del vector de interrupción y emite su bus de datos);
  • dispositivos externos (temporizador, teclado, discos magnéticos, etc.)

Manejo de interrupciones

Una interrupción desencadena una serie de eventos que ocurren tanto en el hardware como en el software. En la fig. 1 muestra una secuencia típica de estos eventos.

Después de que el dispositivo de E/S termina, ocurre lo siguiente:

  • El dispositivo envía una señal de interrupción al procesador.
  • Antes de responder a una interrupción, el procesador debe completar la ejecución de la instrucción actual (consulte la Figura 1).
  • El procesador busca una interrupción, la detecta y envía al dispositivo que envió la interrupción una señal de que la recibió con éxito. Esta señal permite que el dispositivo elimine su señal de interrupción.
Figura 1. Diagrama de temporización del programa: E/S lenta

Ahora el procesador necesita prepararse para transferir el control al manejador de interrupciones. Primero necesitas guardar todo información importante para que luego pueda volver al punto del programa actual donde se detuvo. La información mínima requerida es la palabra de estado del programa y la dirección de la próxima instrucción a ejecutar, que se encuentra en el contador del programa. Estos datos se envían a la pila de control del sistema.

Figura 2. Manejo de una interrupción simple

A continuación, el contador de programa del procesador se carga con la dirección de entrada del programa controlador de interrupciones, que es responsable de procesar esta interrupción. Según la arquitectura de la computadora y el dispositivo del sistema operativo, puede haber un programa para manejar todas las interrupciones o puede haber un controlador separado para cada dispositivo y cada tipo de interrupción. Si hay varios programas para manejar interrupciones, entonces el procesador debe determinar a cuál llamar. Esta información puede estar contenida en la señal de interrupción inicial; de lo contrario, para obtener la información necesaria, el procesador debe sondear todos los dispositivos para determinar cuál envió la interrupción.

Tan pronto como se carga un nuevo valor en el contador del programa, el procesador pasa al siguiente ciclo de instrucción, procediendo a recuperarlo de la memoria. Dado que la instrucción se recupera de la ubicación cuyo número viene dado por el contenido del contador del programa, el control pasa a la rutina de interrupción. La ejecución de este programa implica las siguientes operaciones.

El contenido del contador de programa y la palabra de estado del programa interrumpido ya están almacenados en la pila del sistema. Sin embargo, esta no es toda la información relacionada con el estado del programa ejecutable. Por ejemplo, debe guardar el contenido de los registros del procesador, ya que el controlador de interrupciones puede necesitar estos registros. Por lo tanto, es necesario guardar toda la información sobre el estado del programa. Por lo general, un controlador de interrupciones comienza colocando el contenido de todos los registros en la pila. Otra información que debe almacenarse se analiza en el Capítulo 3, Descripción y control del proceso. En la fig. se muestra un ejemplo simple en el que el programa de usuario se interrumpe después de ejecutar una instrucción desde la ubicación N. El contenido de todos los registros, así como la dirección de la siguiente instrucción (N + 1), que suman M palabras, se colocan en la pila. . El puntero de la pila se actualiza para apuntar a la nueva parte superior de la pila. El contador del programa también se actualiza, indicando el comienzo de la rutina de servicio de interrupción.

Ahora el controlador de interrupciones puede comenzar su trabajo. El proceso de manejo de una interrupción incluye la verificación de la información de estado relacionada con las operaciones de E/S u otros eventos que provocaron la interrupción. Esto también puede incluir el envío de instrucciones adicionales o mensajes de notificación a los dispositivos de E/S.

Una vez que se completa el procesamiento de la interrupción, los valores previamente guardados se recuperan de la pila, que se ingresan nuevamente en los registros, volviendo así al estado en el que estaban antes de la interrupción.

El último paso es restaurar la palabra de estado del programa y el contenido del contador del programa de la pila. Como resultado, se ejecutará el siguiente comando del programa interrumpido.

Debido a que la interrupción no es una subrutina llamada desde el programa, es importante para una recuperación completa guardar toda la información de estado del programa interrumpido. Sin embargo, una interrupción puede ocurrir en cualquier momento y en cualquier lugar del programa de usuario. Este evento es impredecible.

Controlador de interrupciones

El controlador de interrupciones está diseñado para procesar y arbitrar solicitudes de servicio entrantes al procesador central desde dispositivos periféricos. Por analogía, las funciones del controlador de interrupciones se pueden comparar con la secretaria de algún jefe. La secretaria debe decidir cuál de los visitantes admitir ante el jefe en primer lugar, y cuál y luego, en función de las prioridades dadas por el jefe y el estado del visitante. Entonces, en un sistema informático, es posible que varios periféricos hayan enviado una señal de interrupción o una solicitud de interrupción. En la literatura informática, esta señal se conoce como IRQ (Solicitud de interrupción).

Como se mencionó anteriormente, las interrupciones tienen cierta prioridad, lo que permite que los controladores de interrupciones den preferencia a un dispositivo en un momento dado, y no a otro. En una computadora moderna, hay hasta 16 dispositivos externos y periféricos que generan interrupciones. Aquí están los dispositivos:
–IRQ 0, temporizador del sistema; –IRQ 1, teclado; –IRQ 2, utilizado para consultar dispositivos en cascada; –IRQ 8, reloj en tiempo real; –IRQ 9, reservado; –IRQ 10, reservado; –IRQ 11, reservado; –IRQ 12, ps/2 – ratón; –IRQ 13, coprocesador; –IRQ 14, controlador de disco duro; –IRQ 15, reservado; –IRQ 3, puertos COM2, COM4; –IRQ 4, puertos COM1,COM3; –IRQ 5, puerto LPT2; –IRQ 6, controlador de accionamiento; –IRQ 7, puerto LPT1, impresora.

Aquí las señales se enumeran en orden descendente de prioridad. Puede ver que después de IRQ 2, sigue IRQ 8. El hecho es que en un momento el controlador de interrupción constaba de dos microcircuitos, uno estaba conectado al otro. Este segundo microcircuito se conecta a la línea IRQ 2 formando una cascada. Sirve las líneas IRQ8-IRQ 15. Y luego siguen las líneas del primer microcircuito.

Funcionamiento del controlador de interrupciones

Operación del controlador de interrupción se considera basado en chips Intel 8259A, que se usaban en computadoras ahora muy antiguas con procesadores hasta la serie 386. Estos ordenadores solían tener 2 chips 8259A conectados en cascada, es decir, uno al otro. Uno de los microcircuitos conectados a través de la línea de solicitud de interrupción directamente al procesador es el maestro o maestra. Los demás, conectados con el amo a través de conclusiones similares, se denominan esclavos.


Figura 3. Diagrama de conexión de los controladores de interrupción y su interacción con el procesador central

La figura 3 muestra el diagrama de conexión de los controladores de interrupción y su interacción con el procesador central. Las señales de interrupción de los dispositivos periféricos o los controladores esclavos se envían a las entradas IR0–IR7 del controlador maestro. La lógica interna del controlador maestro procesa las solicitudes entrantes en términos de prioridad. Si la prioridad de la solicitud del dispositivo es suficiente, se genera una señal en la salida INT del controlador, que se alimenta a la entrada INTR del procesador. De lo contrario, la solicitud se bloquea.

Si el procesador habilita las interrupciones, luego de que se completa la ejecución de la instrucción actual, genera una secuencia de señales en la línea INTA, lo que pone al controlador esclavo en un estado de inmunidad a las nuevas solicitudes de interrupción entrantes y, además, información de los registros internos del controlador se envían a la línea de datos, por lo que el procesador reconoce el tipo de interrupción.

El procesador otorga el permiso de interrupción al controlador de interrupciones a través del controlador de bus. La señal RD está destinada a garantizar que el controlador de interrupciones coloque el contenido de los registros internos en el bus de datos. En la señal WR, el controlador de interrupción, por el contrario, recibe datos del bus del mismo nombre y los escribe en registros internos. En consecuencia, esto afecta el modo de operación del controlador de interrupción.

La entrada CS está conectada al bus de direcciones y esta señal identifica un controlador de interrupción específico. La entrada A0 apunta al puerto del controlador de interrupciones en el espacio de E/S.

Las entradas IR0–IR7 están diseñadas para recibir solicitudes de interrupción de periféricos y controladores esclavos.

Las salidas CAS0-CAS2 están diseñadas para identificar un controlador esclavo específico.

El artículo analiza las interrupciones de hardware y dispositivo, funciones, operación del controlador de interrupción. Este controlador de interrupciones apareció en las primeras computadoras compatibles con PC. Desde entonces, tanto los procesadores como el propio ordenador han cambiado en muchos aspectos, aunque se mantienen algunos puntos. Por lo tanto, para que quede más claro, se consideró la organización del controlador de interrupciones 8295A.

El diagrama anterior muestra las señales que llegan no solo a los controladores de interrupción maestro y esclavo, sino también al resto de los esclavos. Sin embargo, su computadora o computadora portátil en realidad tiene 2 controladores de interrupción, como se indicó anteriormente: un maestro y un esclavo. Pero puede crear sus propios sistemas informáticos utilizando hasta 64 controladores de interrupción esclavos de esta manera.

EN computadoras modernas hace mucho tiempo funciones del controlador de interrupciones no realice chips 8259A, pero puente sur. Sin embargo, para todos los programas y dispositivos, todo sigue igual. Además, el controlador de interrupción es programable y es necesario acceder a los puertos y registros internos de la misma manera que el controlador 8259A.

Conclusión

En este documento, se consideraron las interrupciones, es decir, el hardware del procesamiento de interrupciones y el principio del procesamiento de interrupciones. También se consideran los controladores de interrupción y el principio de su funcionamiento.

Interrupción significa la interrupción temporal del proceso principal de computación para realizar algunas acciones planificadas o no planificadas causadas por la operación del hardware o programa. El mecanismo de interrupción se admite a nivel de hardware. Las interrupciones de hardware ocurren como una reacción del microprocesador a una señal física de algún dispositivo (teclado, reloj del sistema, teclado, disco duro, etc.), estas interrupciones son asíncronas en el tiempo de ocurrencia, es decir, ocurrir en momentos aleatorios.

Controlador de interrupciones está diseñado para procesar y arbitrar solicitudes de servicio entrantes al procesador central desde dispositivos periféricos. Las interrupciones tienen cierta prioridad, lo que permite controlador de interrupción dar preferencia en un momento dado a un dispositivo sobre otro. En una computadora moderna, hay hasta 16 dispositivos externos y periféricos que generan interrupciones.

Bibliografía

  1. Conferencia. Interrumpe. Correo electrónico Recurso. http://hromatron.narod.ru/_lekcii/prerivania_lekcia_g2013.htm
  2. Interrupciones del sistema | Interrupción de hardware | Manejo de interrupciones http://life-prog.ru/view_os.php?id=16
  3. Controlador de interrupciones. Correo electrónico Recurso http://sdelaycomputersam.ru/Controller_irq.php,
  4. Interrumpe. Controlador de interrupciones. Dispositivo, funciones, trabajo. Correo electrónico Recurso http://sdelaycomputersam.ru/Controller_irq.php
  5. Estructura e inicialización del controlador de interrupciones Intel 8259A

Creo que muchos usuarios curiosos probablemente se han encontrado con una abreviatura como IRQ más de una vez. Se puede encontrar, por ejemplo, si desea consultar el programa Administrador de dispositivos en Windows. Si selecciona cualquier dispositivo, por ejemplo, un teclado, seleccione el elemento de menú "Propiedades" con el botón derecho del mouse, y en la ventana que aparece, active la pestaña "Recursos", luego en la lista de recursos verá el inscripción IRQ 01.

¿Qué es IRQ y para qué sirve?

La abreviatura IRQ significa Interrupt ReQuest (solicitud de interrupción). Para comprender por qué es necesario, debe recordar los detalles de la organización del trabajo de una computadora personal.

El sistema circulatorio de una computadora, a través del cual el procesador y otros dispositivos intercambian información, es sistema de autobús. Pero, en general, ¿cómo puede el procesador distinguir las solicitudes de procesamiento de información que llegan a través del bus desde varios dispositivos?

Para ello, existe un sistema de interrupciones de hardware (IRQ). Cada interrupción tiene un número específico (la numeración comienza desde 0) y se asigna a un dispositivo específico. Entonces, la interrupción número 1 se asigna al teclado, de ahí la designación IRQ 01.

Cuando se recibe una solicitud del dispositivo, la computadora interrumpe (de ahí el propio término "interrupción") el procesamiento de la información actual y comienza a procesar la recién recibida. Si hay varias interrupciones, se procesan en el orden de prioridad asignado a cada una de ellas. Como regla, cuanto menor es el número de interrupción, mayor es la prioridad que tiene el procesador para el dispositivo asignado a esta interrupción, pero esta regla no siempre se sigue.

Sirve para el procesamiento de IRQ un chip especial, que se llama controlador de interrupción. Como regla general, este microcircuito es parte de la unidad central de procesamiento y, a veces, se asigna como un chip separado en la placa base. Para manejar cada interrupción en el BIOS, hay un firmware especial llamado controlador de interrupciones. Las direcciones de todos los controladores se almacenan en la llamada tabla de vectores de interrupción.

Anteriormente, los 8 bits eran comunes en las primeras computadoras de la familia XT, por lo que un total de 8 interrupciones estaban disponibles para los dispositivos. Con la llegada del bus ISA de 16 bits, su número aumentó a 16.

Configuración de solicitud de interrupción

Debo decir que las interrupciones asignadas a algunos dispositivos no son fijas y se pueden cambiar mediante programación. Por ejemplo, IRQ es comúnmente utilizado por serial puerto de comunicaciones 2 también puede usar un módem instalado en la ranura de expansión. En las computadoras y sistemas operativos modernos que admiten el estándar PnP y se ejecutan bajo Windows, los valores de IRQ para los dispositivos conectados a las ranuras de bus se seleccionan automáticamente.

Pero las cosas no eran tan simples en los viejos tiempos, cuando el usuario tenía que establecer manualmente el valor de IRQ en muchos programas de DOS. Por ejemplo, al instalar tarjeta de sonido, el usuario tenía que elegir una interrupción libre de un número muy pequeño de las disponibles (generalmente era IRQ 5) y especificar este valor en el programa que se ejecutaba, por ejemplo, en algún juego.

En muchas BIOS, es posible cambiar los valores de IRQ predeterminados en el programa de configuración. Esta opción generalmente se encuentra en las secciones Recursos IRQ o Configuración PCI/PNP.

Establecer un valor de IRQ para un dispositivo igual al valor de IRQ ya ocupado por algún dispositivo en la mayoría de los casos conduce a la inoperancia de uno de estos dispositivos o ambos a la vez y, a veces, está plagado de bloqueos de la computadora.

En el bus PCI más moderno, el sistema de control de interrupciones se ha cambiado radicalmente y se han ampliado las capacidades de control de interrupciones. Gracias a la tecnología IRQ Sharing, también es posible colocar varios dispositivos en un canal de interrupción, y los dispositivos externos conectados a las ranuras PCI tienen la capacidad de distribuir recursos automáticamente entre ellos.

Además, las computadoras modernas comúnmente usan un controlador de interrupción programable avanzado (APIC, por sus siglas en inglés) que admite 24 canales de solicitud de interrupción. El controlador de interrupción avanzado está hecho en forma de dos microcircuitos, uno de los cuales está ubicado en el procesador y el otro en la placa base. Este controlador de interrupciones apareció por primera vez en sistemas basados ​​en procesadores Pentium. Sin embargo, se mantuvo el soporte para el antiguo sistema de interrupción por razones de compatibilidad. El siguiente paso en el desarrollo de los principios del manejo de interrupciones es la tecnología Message Signaled Interrupts, cuyo soporte apareció en la línea del sistema operativo Windows a partir de Windows Vista.

No confunda las IRQ de hardware con las interrupciones de software del BIOS, que se analizarán en un artículo aparte. Las interrupciones del software del BIOS generalmente se usan para organizar el trabajo software con dispositivos de entrada-salida y se denotan con la abreviatura INT. Muchos de ellos tienen una función similar a las IRQ de hardware, pero tienen números diferentes.

Lista de números de solicitud de interrupción en el esquema estándar para el bus ISA de 16 bits:

  1. Temporizador del sistema
  2. Teclado
  3. Controlador de interrupción opcional (para compatibilidad con bus de 8 bits)
  4. Com 1 y 3 puertos
  5. Com 2 y 4 puertos
  6. Gratis (en bus de 8 bits - controlador de disco duro)
  7. Controlador disquetes(FDD)
  8. Puerto paralelo LPT
  9. Reloj CMOS en tiempo real
  10. Combinado con IRQ 2
  11. Gratis
  12. Gratis
  13. Puerto de ratón PS/2
  14. Coprocesador (actualmente apenas se usa)
  15. Primer controlador IDE
  16. Segundo controlador IDE

Lista de IRQ adicionales que utiliza APIC Extended Interrupt Controller:

  1. controlador USB
  2. Subsistema de audio integrado (AC'97 o HDA)
  3. controlador USB
  4. controlador USB
  5. tarjeta de red integrada
  6. Gratis
  7. Gratis
  8. Controlador USB 2.0

Correspondencia de números de IRQ e interrupciones de BIOS:

Tabla de correlación entre IRQ de hardware y BIOS INT de software

Conclusión

Entonces, en este artículo, pudo averiguar qué significa la abreviatura IRQ y qué son las interrupciones de hardware. Son un mecanismo incorporado para asignar recursos informáticos y están diseñados para organizar el acceso del dispositivo al procesador central. La asignación y el ajuste adecuados de IRQ evitan conflictos entre dispositivos y garantizan trabajo estable sistemas

Gestión de prioridad de IRQ

Gestión de solicitudes de interrupción de hardware

A la mayoría de los componentes conectados directamente a la placa base, incluidas las ranuras PCI, los controladores IDE, los puertos serie, el puerto del teclado e incluso el CMOS de la placa base, se les asignan IRQ independientes. Una solicitud de interrupción de hardware, o IRQ, interrumpe el funcionamiento normal del procesador, lo que permite que el dispositivo funcione. Windows 7 le permite priorizar una o más IRQ (que están asignadas a uno o más dispositivos), lo que puede mejorar el rendimiento de esos dispositivos.

Pasos para cambiar la prioridad de IRQ

  1. Comience ejecutando la Utilidad de información del sistema (msinfo32.exe) y abra la rama Interrupciones de recursos de hardware (IRQ) de Información del sistema para ver qué IRQ se usan para qué dispositivos.
  2. Luego abra el Editor del Registro (vea el Capítulo 3) y navegue hasta la rama HKEY_LOCAL_ MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl.
  3. Cree un nuevo valor DWORD en esta sección y nombre el parámetro IRQ#Priority, donde # es el número del dispositivo IRQ para el que desea establecer la prioridad (por ejemplo, IRQ13Priority corresponde a IRQ 13, es decir, un coprocesador aritmético) .
  4. Haga doble clic en el nuevo valor e ingrese el número de prioridad. Ingrese 1 para la prioridad más alta, 2 para la segunda, y así sucesivamente. Asegúrese de no ingresar el mismo número para dos entradas, y no intente hacerlo todo a la vez, más bien experimente con uno o dos valores.
  5. Cuando termine, cierre el Editor del Registro y reinicie su computadora.