В компьютере запрос на прерывание (или IRQ ) — это аппаратный сигнал, посылаемый процессору, который временно останавливает запущенную программу и позволяет вместо нее работать специальной программе — обработчику прерываний . Аппаратные прерывания используются для обработки таких событий, как получение данных от модема или сетевой карты , нажатия клавиш или движения мыши.
Линии прерываний часто идентифицируются индексом с форматом IRQ , за которым следует номер. Например, в семействе программируемых контроллеров прерываний (PIC) Intel 8259 имеется восемь входов прерываний, обычно называемых IRQ0 — IRQ7 . В компьютерных системах на базе x86 , которые используют два таких PIC , объединенный набор линий называется IRQ0 — IRQ15 . Технически эти линии называются IR0 — IR7 , а линии на шине ISA , к которым они исторически были подключены, называются IRQ0 — IRQ15 (хотя исторически по мере увеличения количества аппаратных устройств общее возможное количество прерываний увеличивалось с помощью каскадных запросов, заставляя один из номеров IRQ каскадироваться с другим набором или наборами пронумерованных IRQ, обрабатываемых одним или несколькими последующими контроллерами).
Более новые системы x86 интегрируют Advanced Programmable Interrupt Controller (APIC), который соответствует архитектуре Intel APIC. Эти APIC поддерживают программный интерфейс для 255 физических линий аппаратного IRQ на APIC, при этом типичная система реализует поддержку только около 24 общих линий аппаратного обеспечения.
В ранние годы персональных компьютеров управление IRQ часто было заботой пользователя. С появлением устройств plug and play эта проблема была решена с помощью автоматической настройки. [1]
При работе с оборудованием персонального компьютера, установке и удалении устройств система полагается на запросы прерываний. Существуют настройки по умолчанию, которые настраиваются в BIOS системы и распознаются операционной системой. Эти настройки по умолчанию могут быть изменены опытными пользователями. Современная технология plug and play не только уменьшила необходимость беспокоиться об этих настройках, но и фактически исключила ручную настройку.
Ранние ПК, использующие процессоры Intel 8086/8088, имели только один PIC, и поэтому были ограничены восемью прерываниями. Это было расширено до двух PIC с появлением ПК на базе 286.
Обычно в системах, использующих Intel 8259 PIC, используется 16 IRQ. IRQ с 0 по 7 управляются одним Intel 8259 PIC, а IRQ с 8 по 15 — вторым Intel 8259 PIC. Первый PIC, ведущий, является единственным, кто напрямую подает сигнал ЦП. Второй PIC, ведомый, вместо этого подает сигнал ведущему на своей линии IRQ 2, а ведущий передает сигнал ЦП. Таким образом, для оборудования доступно только 15 линий запроса прерывания.
На APIC с системами IOAPIC обычно доступно 24 IRQ, а дополнительные 8 IRQ используются для маршрутизации прерываний PCI, избегая конфликта между динамически настроенными прерываниями PCI и статически настроенными прерываниями ISA. На ранних системах APIC только с 16 IRQ или только с контроллерами прерываний Intel 8259 линии прерываний PCI направлялись на 16 IRQ с помощью таблицы PIR (маршрутизация прерываний PCI), интегрированной в BIOS. Операционные системы, такие как Windows 95 OSR2, могут использовать таблицу PIR для обработки управления PCI IRQ; [2] [3] позже таблица PIR была заменена ACPI . На APIC с системами MSI обычно доступно 224 прерывания. [4]
Самый простой способ просмотра этой информации в Windows — использовать диспетчер устройств или сведения о системе (msinfo32.exe). В Linux сопоставления IRQ можно просмотреть, выполнив cat /proc/interrupts
или используя procinfo
утилиту.
В ранних IBM-совместимых персональных компьютерах конфликт IRQ был когда-то распространенной аппаратной ошибкой, возникавшей, когда два устройства пытались использовать один и тот же запрос на прерывание (или IRQ) для подачи сигнала прерывания на программируемый контроллер прерываний (PIC). PIC ожидает запросы прерывания только от одного устройства на линию, поэтому более одного устройства, отправляющие сигналы IRQ по одной линии, обычно вызывают конфликт IRQ, который может заморозить компьютер .
Например, если в систему добавлена карта расширения модема и назначена на IRQ4, который традиционно назначается последовательному порту 1, это, скорее всего, вызовет конфликт IRQ. Первоначально IRQ 7 был обычным выбором для использования звуковой карты , но позже, когда было обнаружено, что IRQ 7 будет мешать порту принтера ( LPT1 ), использовался IRQ 5. Последовательные порты часто отключаются, чтобы освободить линию IRQ для другого устройства. IRQ 2/9 является традиционной линией прерывания для порта MIDI MPU-401, но это конфликтует с прерыванием управления системой ACPI (SCI жестко привязан к IRQ9 на чипсетах Intel); [5] это означает, что карты ISA MPU-401 с жестко привязанным IRQ 2/9 и драйверы устройств MPU-401 с жестко закодированным IRQ 2/9 не могут использоваться в режиме управления прерываниями в системе с включенным ACPI.
В некоторых условиях два устройства ISA могут совместно использовать один и тот же IRQ, если только они не используются одновременно. Чтобы решить эту проблему, более поздняя шина PCI допускает совместное использование IRQ. PCI Express не имеет физических линий прерывания и использует прерывания Message Signaled Interrupts (MSI) для операционных систем , если они доступны.