0

Запросы на прерывание irq

Думаю, многие любознательные пользователи, наверняка не раз встречали такое сокращение, как IRQ. Его можно встретить, например, если вы любите заглядывать в программу «Менеджер устройств» в Windows. Если вы выберете любое устройство, к примеру, клавиатуру, выберете при помощи правой кнопки мыши пункт меню «Свойства», и в появившемся окне сделаете активной закладку «Ресурсы», то в списке ресурсов вы увидите надпись IRQ 01.

Для чего нужны IRQ

Что же такое IRQ и для чего оно нужно?

Аббревиатура IRQ расшифровывается как Interrupt ReQuest (запрос на прерывание). Для того, чтобы понять, для чего оно нужно, следует вспомнить подробности организации работы персонального компьютера.

Кровеносной системой компьютера, по которой обмениваются информацией процессор и прочие устройства, является системная шина. Но как вообще процессор способен отличить запросы на обработку информации, поступающие по шине от различных устройств?

Для этого и существует система аппаратных прерываний (IRQ). Каждое прерывание имеет определенный номер (нумерация начинается с 0) и закреплено за определенным устройством. Так, за клавиатурой закреплено прерывание под номером 1, отсюда и обозначение IRQ 01.

При поступлении запроса от устройства компьютер прерывает (отсюда и появился сам термин «прерывание») обработку текущей информации и начинает обработку вновь поступившего. Если прерываний несколько, то они обрабатывается в порядке приоритетов, закрепленных за каждым из них. Как правило, чем меньше номер прерывания, тем больший приоритет для процессора имеет устройство, закрепленное за этим прерыванием, но это правило соблюдается далеко не всегда.

Обслуживает обработку IRQ специальный чип, который носит название контроллера прерываний. Как правило, эта микросхема является частью центрального процессора, а иногда выделяется в отдельный чип на материнской плате. Для обработки каждого прерывания в BIOS существует специальная микропрограмма, называемая обработчиком прерывания. Адреса всех обработчиков хранятся в так называемой таблице векторов прерываний.

Раньше, в первых компьютерах семейства XT была распространена 8-разрядная шина ISA, поэтому всего устройствам было доступно 8 прерываний. С появлением 16-разрядной шины ISA их количество увеличилось до 16.

Настройка Interrupt ReQuest

Надо сказать, что прерывания, закрепленные за некоторыми устройствами, не является фиксированными и их можно изменить программно. Например, IRQ стандартно использующееся последовательным портом Com 2, может использовать и устанавливаемый в слот расширения модем. В современных компьютерах и операционных системах, поддерживающих стандарт PnP и работающих под управлением ОС Windows, значения IRQ для устройств, подключаемых в слоты шины, подбираются автоматически.

Но не все было так просто в прежние времена, когда пользователь должен был вручную устанавливать значение IRQ во многих программах, работавших под операционной системой DOS. Например, при установке в систему звуковой карты, пользователю требовалось выбрать свободное прерывание из очень небольшого числа доступных (как правило, это было IRQ 5) и указать это значение в запускаемой программе, например, в какой-нибудь игре.

Во многих BIOS имеется возможность поменять стандартные значения IRQ в программе Setup. Обычно эта опция располагается в разделах IRQ Resources или PCI/PNP Configuration.

Читайте также:  Интернет магазин одежды топ 10 лучших

Установка для устройства значения IRQ, равного значению IRQ, уже занятого каким-либо устройством в большинстве случаев приводит к неработоспособности одного из этих устройств или сразу обоих, а иногда чревато и зависанием компьютера.

В более современной шине PCI система управления прерываниями была кардинально изменена, а возможности управления прерываниями были расширены. Благодаря технологии IRQ Sharing, а также технологии ACPI стало возможным размещение нескольких устройств на одном канале прерывания, а у внешних устройств, подключаемых в слоты PCI, появилась возможность автоматического распределения ресурсов между собой.

Кроме того, в современных компьютерах обычно используется расширенный программируемый контроллер прерываний (APIC, Advanced Programmable Interrupt Controller), поддерживающий 24 канала Interrupt ReQuest. Расширенный контроллер прерываний выполнен в виде двух микросхем, одна из которых расположена в самом процессоре, а другая на материнской плате. Этот контроллер прерываний впервые появился в системах на основе процессоров Pentium. Однако при этом была оставлена поддержка старой системы прерываний в целях совместимости. Очередным шагом в развитии принципов обработки прерываний является технология Message Signaled Interrupts, поддержка которой появилась в линейке ОС Windows, начиная с Windows Vista.

Не следует путать аппаратные прерывания IRQ c программными прерываниями BIOS, о которых речь пойдет в отдельной статье. Программные прерывания BIOS, как правило, используются для организации работы программного обеспечения с устройствами ввода-вывода и обозначаются при помощи сокращения INT. Многие из них аналогичны по своим функциям аппаратным IRQ, но имеют при этом другие номера.

Список номеров Interrupt ReQuest в стандартной схеме для 16-битной шины ISA:

  1. Системный таймер
  2. Клавиатура
  3. Дополнительный контроллер прерываний (для совместимости с 8-битной шиной)
  4. Порты Com 1 и 3
  5. Порты Com 2 и 4
  6. Свободно (в 8-битной шине — контроллер жесткого диска)
  7. Контроллер гибких дисков (FDD)
  8. Параллельный порт LPT
  9. Часы реального времени CMOS
  10. Совмещено с IRQ 2
  11. Свободно
  12. Свободно
  13. Порт мыши PS/2
  14. Сопроцессор (в настоящее время практически не используется)
  15. Первый контроллер IDE
  16. Второй контроллер IDE

Список дополнительных номеров IRQ, которые использует расширенный контроллер прерываний APIC:

  1. Контроллер USB
  2. Интегрированная звуковая подсистема (AC’97 или HDA)
  3. Контроллер USB
  4. Контроллер USB
  5. Встроенная сетевая карта
  6. Свободно
  7. Свободно
  8. Контроллер USB 2.0

Соответствие номеров IRQ и прерываний BIOS:

Заключение

Итак, в этой статье вы смогли узнать, что означает сокращение IRQ, и что представляют собой аппаратные прерывания. Они являются встроенным механизмом распределения ресурсов компьютера и предназначены для организации доступа устройств к центральному процессору. Правильное распределение и настройка IRQ позволяет избежать конфликтов между устройствами и обеспечить стабильную работу системы.

Прерывание (англ. interrupt ) — сигнал от программного или аппаратного обеспечения, сообщающий процессору о наступлении какого-либо события, требующего немедленного внимания. Прерывание извещает процессор о наступлении высокоприоритетного события, требующего прерывания текущего кода, выполняемого процессором. Процессор отвечает приостановкой своей текущей активности, сохраняя свое состояние и выполняя функцию, называемую обработчиком прерывания (или программой обработки прерывания), которая реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код. [1]

В зависимости от источника возникновения сигнала прерывания делятся на:

  • асинхронные, или внешние (аппаратные) — события, которые исходят от внешних аппаратных устройств (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание (англ. Interrupt request, IRQ ) – устройства сообщают, что они требуют внимания со стороны ОС;
  • синхронные, или внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение стека, обращение к недопустимым адресам памяти или недопустимый код операции;
  • программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания, как правило, используются для обращения к функциям встроенного программного обеспечения (firmware), драйверов и операционной системы.
Читайте также:  Вай фай для старого телевизора

Термин «ловушка» (англ. trap ) иногда используется как синоним термина «прерывание» или «внутреннее прерывание». Как правило, словоупотребление устанавливается в документации производителя конкретной архитектуры процессора.

Содержание

Маскирование [ править | править код ]

Внешние прерывания, в зависимости от возможности запрета, делятся на:

  • маскируемые — прерывания, которые можно запрещать установкой соответствующих битов в регистре маскирования прерываний (в x86-процессорах — сбросом флага IF в регистре флагов);
  • немаскируемые (англ. Non-maskable interrupt, NMI ) — обрабатываются всегда, независимо от запретов на другие прерывания. К примеру, такое прерывание может быть вызвано сбоем в микросхеме памяти.

Обработчики прерываний обычно пишутся таким образом, чтобы время их обработки было как можно меньшим, поскольку во время их работы не могут обрабатываться другие прерывания, а если их будет много (особенно от одного источника), то они могут теряться. В Windows для этого применяется механизм отложенного вызова процедур.

Приоритезация [ править | править код ]

До окончания обработки прерывания обычно устанавливается запрет на обработку этого типа прерывания, чтобы процессор не входил в цикл обработки одного прерывания. Приоритезация означает, что все источники прерываний делятся на классы и каждому классу назначается свой уровень приоритета запроса на прерывание.

  • Относительное обслуживание прерываний означает, что если во время обработки прерывания поступает более приоритетное прерывание, то это прерывание будет обработано только после завершения текущей процедуры обработки прерывания.
  • Абсолютное обслуживание прерываний означает, что если во время обработки прерывания поступает более приоритетное прерывание, то текущая процедура обработки прерывания вытесняется, и процессор начинает выполнять обработку вновь поступившего более приоритетного прерывания. После завершения этой процедуры процессор возвращается к выполнению вытесненной процедуры обработки прерывания.

Таблица прерываний [ править | править код ]

Вектор прерывания — закреплённый за устройством номер, который идентифицирует соответствующий обработчик прерываний. Векторы прерываний объединяются в таблицу векторов прерываний, содержащую адреса обработчиков прерываний. Местоположение таблицы зависит от типа и режима работы процессора.

Программное прерывание [ править | править код ]

Программное прерывание — синхронное прерывание, которое может осуществить программа с помощью специальной инструкции.

В процессорах архитектуры x86 для явного вызова синхронного прерывания имеется инструкция Int , аргументом которой является номер прерывания (от 0 до 255). В IBM PC-совместимых компьютерах обработку некоторых прерываний осуществляют подпрограммы BIOS, хранящиеся в ПЗУ, и прерывание служит интерфейсом для доступа к сервису, предоставляемому BIOS. Также обслуживание прерываний могут взять на себя BIOS карт расширений (например, сетевых или видеокарт), операционная система и даже обычные (прикладные) программы, которые постоянно находятся в памяти во время работы других программ (т. н. резидентные программы). В отличие от реального режима, в защищённом режиме x86-процессоров обычные программы не могут обслуживать прерывания, эта функция доступна только системному коду (операционной системе).

Читайте также:  Игры на двоих с другом по сети

MS-DOS использует для взаимодействия со своими модулями и прикладными программами прерывания с номерами от 20h до 3Fh (числа даны в шестнадцатеричной системе счисления, как это принято при программировании на языке ассемблера x86). Например, доступ к основному множеству функций MS-DOS осуществляется исполнением инструкции Int 21h (при этом номер функции и её аргументы передаются в регистрах). Это распределение номеров прерываний не закреплено аппаратно и другие программы могут устанавливать свои обработчики прерываний вместо или поверх уже имеющихся обработчиков, установленных MS-DOS или другими программами, что, как правило, используется для изменения функциональности или расширения списка системных функций. Также этой возможностью пользуются вирусы.

Большинству компонентов, непосредственно присоединенных к системной плате, включая PCI-слоты, IDE-контроллеры, последовательные порты, порт клавиатуры даже CMOS системной платы, присвоены отдельные IRQ. Запрос на аппаратное прерывание, или IRQ, прерывает нормальный ход работы процессора, позволяя устройству функционировать. Windows 7 позволяет расположить по приоритету один или более IRQ (которые преобразовываются в одно или более устройств), потенциально улучшая произво­дительность этих устройств.

Действия для изменения приоритета IRQ

  1. Начните с запуска утилиты информации о системе (msinfo32.exe) и откройте ветвь Сведения о системе ► Аппаратные ресурсы ► Прерывания (IRQ), чтобы про­смотреть, какие IRQ и для каких устройств используются.
  2. Затем откройте редактор реестра (см. главу 3) и перейдите к ветви HKEY_LOCAL_ MACHINESYSTEMCurrentControlSetControlPriorityControl.
  3. Создайте новое значение DWORD в этом разделе и назовите параметр IRQ#Priority, где # — номер IRQ-устройства, для которого вы хотите задать приоритет (напри­мер, IRQ13Priority соответствует IRQ 13, то есть арифметическому сопроцес­сору).
  4. Дважды щелкните на новом значении и укажите номер приоритета. Введите 1 для высшего приоритета, 2 для второго и т. д. Удостоверьтесь, что не ввели одно и то же число для двух записей, и не пытайтесь сделать все сразу, лучше поэкспериментируйте с одним или двумя значениями.
  5. По окончании закройте редактор реестра и перезагрузите компьютер.

  • Файл подкачки и виртуальная памятьОдна из причин того, что настройки по умолчанию приводят к.

">Настройки виртуальной памяти – 17/11/2012 08:36
Автоматическая дефрагментация дисковЛучший способ обеспечить максимальную производительность.

">Регулярная дефрагментация в Windows 7 – 17/11/2012 08:22
Скрытый параметр увеличения производительности жесткого дискаЕсть один почти скрытый параметр.

  • Как снизить потребление питанияСуществуют способы, позволяющие снизить потребление питания.

">Снижение потребление питания – 16/11/2012 08:53
Кэширование файлов на флешку для ускорения системыЕсть дополнительная карта флэш-памяти с.

">ReadyBoost – кэширование файлов – 16/11/2012 08:35
Как ускорить запуск приложений Windows 7 Много времени мы тратим на ожидание запуска приложений.

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *