Аппаратные прерывания. Контроллер прерываний. Системные прерывания грузят процессор: что делать Что такое irq в карте

Хорошо, когда после сборки или плановой модернизации компьютер с первого раза запускается и работает устойчиво и без глюков. Гораздо хуже, если возникают неожиданные проблемы - спонтанные перезагрузки и зависания, сбои программ, неработоспособность или "невидимость" устройств и т.п. Первая причина, которая обычно приходит в голову в таком случае, - конфликт прерываний. А хорошо ли мы знаем природу этого явления, достаточно ли подготовлены к борьбе с ним?

Что такое IRQ
Прерывания - это базовый механизм реакции системы на возникающие события. Аппаратные прерывания, называемые обычно IRQ (Interrupt ReQuest) - это физические сигналы, с помощью которых контроллер устройства информирует процессор о необходимости обработать некоторый запрос. Условно схема обработки прерывания выглядит следующим образом:
1) процессор получает сигнал прерывания и его номер;
2) по специальной таблице отыскивается адрес программы, ответственной за обработку прерывания с данным номером - обработчика прерывания;
3) процессор приостанавливает текущую работу и переключается на выполнение обработчика (в общем случае это некоторый драйвер);
4) драйвер получает доступ к устройству и проверяет причину возникновения прерывания;
5) запускаются запрошенные действия - инициализация, конфигурирование устройства, обмен данными и др.
6) драйвер завершает работу, и процессор возвращается к прерванной задаче.
Очевидно, что для корректной работы механизма прерываний необходимо выполнение двух условий: во-первых, сигнал запроса должен доходить до процессора и, во-вторых, драйвер-обработчик должен правильно реагировать на этот сигнал. В случае конфликта не соблюдается второе условие: сигнал прерывания приходит, но реакция на него оказывается неправильной, в результате чего мы имеем (в лучшем случае) неработоспособное устройство.

Конфликт
Можно сказать, что конфликт - это ситуация, при которой несколько объектов одновременно пытаются получить доступ к ресурсу, который предназначен только для одного из них. Конфликт прерываний возникает в том случае, если несколько устройств используют одну и ту же линию прерывания для посылки сигнала запроса и нет механизма, позволяющего обрабатывать конкурирующие запросы. Если драйвер, получая управление, работает не с тем устройством, которое послало запрос, то либо происходит сбой, либо одно из устройств попросту не работает.
Возникает вопрос: могут ли несколько устройств использовать одну и ту же линию прерывания, или это в принципе невозможно? Ведь если драйвер сможет определить, от кого именно пришел запрос, то он будет реагировать на сигналы только "своего" устройства, игнорируя все остальные. Но это должно быть каким-либо образом заранее оговорено, иначе конфликт неизбежен.
Локальная шина PCI была спроектирована с учетом совместного использования прерываний. Каждое устройство PCI должно корректно работать на одной линии прерывания с другими PCI-устройствами. Это сделано следующим образом: факт наличия сигнала на линии прерывания определяется не по фронту, т.е. изменению уровня напряжения, а по самому факту наличия определенного напряжения. Изменять напряжение в линии может сразу несколько устройств, становясь как бы в очередь на обслуживание.
Таким образом, совместное использование одного IRQ несколькими PCI-устройствами не является конфликтом по определению. Однако иногда проблемы все-таки возникают. Во-первых, не все устройства PCI корректно работают на одной линии прерывания с другими. Во-вторых, иногда драйверы имеют ошибки, из-за которых они не могут правильно определять источник сигнала, мешая другим драйверам. В-третьих, далеко не все устройства работают на шине PCI; например, ISA-устройства, к которым относятся, например, контроллеры COM/LPT-портов, делить прерывания с другими не умеют. Чтобы четко представлять себе, как можно избежать конфликтов или устранить их, нужно разобраться в механизме управления IRQ.

Организация аппаратных прерываний в персональном компьютере
Как вы знаете, персональные компьютеры начались с IBM PC. Его архитектура предусматривала восемь линий аппаратных прерываний (IRQ), которыми управлял специальный контроллер. Каждой из них назначался номер, который определял приоритет прерывания и адрес его обработчика (так называемый вектор прерывания). Новая архитектура, IBM PC AT, предусматривала еще восемь линий прерываний, для которых использовался второй контроллер, подключаемый к одной из линий прерывания первого контроллера. К сожалению, данная архитектура стала последней после того, как фирма IBM потеряла возможность управлять развитием созданной ею платформы, поэтому все современные компьютеры по-прежнему имеют только шестнадцать прерываний, одно из которых используется вторым контроллером.
У компьютера IBM PC AT была только одна шина, по которой устройства могли общаться с процессором и памятью - ISA. Большинство линий прерываний были закреплены за стандартными ISA-устройствами, оставшиеся были зарезервированы на будущее. Когда это будущее наступило, выяснилось, что новой универсальной шине PCI досталось всего четыре свободных прерывания. Поэтому и был придуман хитрый механизм совместного использования прерываний (IRQ Sharing) и динамического переопределения номеров (IRQ Steering или Mapping).
Суть механизма управления прерываниями PCI-устройств в следующем. В общем случае существует четыре физических линии PCI-прерываний, называемых PIRQ0, PIRQ1, PIRQ2 и PIRQ3. Они подключены к контроллеру прерываний. Каждое PCI-устройство со своей стороны как бы имеет четыре разъема, называемые INT A, INT B, INT C и INT D. Подключать линии к разъемам можно в любом порядке. Например, для первого PCI-слота можно сделать такую разводку: PIRQ0 - INT A, PIRQ1 - INT B, PIRQ2 - INT C, PIRQ3 - INT D. А для второго - по-другому: PIRQ0 - INT B, PIRQ1 - INT C, PIRQ2 - INT D, PIRQ3 - INT A. Обычно устройство требует только одну линию прерывания, подключенную к INT A. Будучи установленным в первый слот, устройство использует линию PIRQ0, а во втором слоте на том же контакте будет линия PIRQ1. Тем самым устройства в разных слотах будут использовать разные физические линии прерываний. Аппаратный конфликт между ними будет исключен.
Шина AGP, являясь по сути специализированной модификацией PCI, тоже использует одну из линий PIRQ - обычно PIRQ0.
Для современных систем четырех линий оказывается недостаточно, поэтому в новых чипсетах часто применяются восемь линий PIRQ, которые точно так же в разных комбинациях подключаются к слотам PCI и встроенным в плату устройствам.
Линии PIRQ подключаются к контроллеру прерываний. Им, как и другим линиям, назначаются логические IRQ-номера. Если на одной физической линии находятся несколько устройств (а это допустимо), то все они будут иметь один и тот же номер IRQ. Если устройства находятся на разных физических линиях, они все равно могут получить одинаковые номера IRQ. Нормальные драйверы позволят им свободно работать без потери производительности, так как шина PCI все равно может захватываться только одним устройством. Главное - распознать, от какого устройства пришел сигнал.
Номера линиям PIRQ назначаются автоматически благодаря пресловутому механизму Plug&Play. Но ведь есть и ISA-устройства, поддерживающие Plug&Play. Они тоже имеют возможность автоматически получить номер IRQ. Но их линия прерывания принадлежит им монопольно, и если такой же номер получит одна из линий PIRQ, возникнет неразрешимый конфликт.
Итак, мы выяснили, что устройства PCI должны быть лишены проблем с конфликтами IRQ. Если они, конечно, правильно работают, а так бывает не всегда. К тому же драйверы должны поддерживать механизм совместного использования прерываний. Устройства ISA не умеют делиться линиями прерываний и потому являются провокаторами конфликтов. Следовательно, задача устранения конфликтов сводится к правильному распределению номеров (источник проблем - ISA-устройства и "кривые" драйверы) или к разведению по разным физическим линиям ("кривые" PCI-контроллеры).
Давайте рассмотрим, каким образом в системе происходит распределение номеров и как мы можем повлиять на этот процесс.

Карта прерываний
Как я уже говорил, большинство номеров IRQ уже заняты стандартными устройствами, точнее, назначены их линиям прерываний. Пройдемся по порядку:
0 - системный таймер (номер всегда занят);
1 - клавиатура (номер всегда занят);
2 - второй контроллер прерываний (всегда занят);
3 - порт COM2 (может быть отключен, а номер - освобожден);
4 - порт COM1 (может быть отключен, а номер - освобожден);
5 - порт LPT2 (обычно номер свободен);
6 - контроллер гибких дисков (может быть отключен, а номер - освобожден);
7 - порт LPT1 (если не в режиме EPP или ECP, то номер свободен);
8 - часы реального времени (всегда занят);
9 - свободен;
10 - свободен;
11 - свободен;
12 - мышь PS/2 (может быть свободен, если нет такой мыши);
13 - сопроцессор (всегда занят);
14 и 15 - контроллер жестких дисков (может быть отключен, а номер - освобожден).
В типичной системе свободны номера 5, 7, 9-11, то есть пять из пятнадцати. Кроме того, можно смело отключить COM2 и LPT1-порты, увеличив число свободных номеров до семи. Свободны - не значит, что не заняты, просто между ними возможна свободная перетасовка.
В любой системе имеется три стандартных PCI-устройства - ACPI-, USB-контроллеры и видеокарта, каждое из которых займет по одному номеру. Сложное устройство (например, звуковая карта) может потребовать несколько линий - INT A, INT B и т.д. для своих компонентов, которые между собой не будут конфликтовать (как-никак разные физические линии), а вот с другими устройствами - запросто.
Узнать, как в данный момент распределены номера прерываний, можно несколькими способами. В самом начале загрузки компьютера появляется текстовая таблица конфигурации. Сразу после нее идет перечень PCI-устройств с указанием назначенного им номера IRQ (см. скриншот). Другой способ работает в Windows 9x. В панели управления есть иконка "Система", в вызываемом апплете - закладка "Устройства". Выбираем свойства устройства "Компьютер", и там будут перечислены все устройства с указанием их IRQ (см. скриншот).
В Windows 2000 у нас нет доступа к управлению прерываниями, поэтому для просмотра списка IRQ нужно воспользоваться стандартной информационной утилитой (Панель управления/Администрирование/Управление компьютером/Сведения о системе/Ресурсы аппаратуры).

Распределение номеров IRQ средствами BIOS
В системе номера IRQ распределяются между физическими линиями дважды. Первый раз это делает системный BIOS при начальной загрузке системы. Каждому Plug&Play-устройству (все PCI, современные ISA, интегрированные устройства), а точнее, его линии прерывания, назначается один номер из десяти возможных. Если номеров не хватает, несколько линий получают один общий. Если это линии PIRQ, то ничего страшного - при наличии нормальных драйверов и поддержки со стороны операционной системы (об этом см. ниже) все будет работать. А если один номер получают несколько ISA-устройств или PCI- и ISA-устройства, то конфликт просто неизбежен, и тогда нужно вмешиваться в процесс распределения.
Прежде всего, нужно отключить все неиспользуемые ISA-устройства (в системах без слотов ISA они тоже присутствуют) - порты COM1, COM2 и дисковод. Также можно отключить режимы EPP и ECP порта LPT, тогда прерывание IRQ7 станет доступно.
В BIOS Setup нам понадобится раздел "PCI/PNP Configuration". Есть два базовых способа повлиять на распределения номеров IRQ: заблокировать конкретный номер и напрямую назначить номер линии PIRQ.
Первый способ доступен для всех BIOS: найдите список пунктов "IRQ x used by:" (в новых BIOS скрывается в подменю "IRQ Resources"). Тем прерываниям, которые должны быть назначены исключительно ISA-устройствам, нужно поставить "Legacy ISA". Тем самым при раздаче номеров PCI-устройствам данные прерывания будут пропущены. Поступать так следует в том случае, если какое-либо ISA-устройство упорно становится на одно прерывание с PCI-устройством, из-за чего оба не работают. Тогда мы находим номер этого IRQ и блокируем его в BIOS Setup. PCI-устройство переходит на новый номер IRQ, а ISA-устройство остается. Конфликт разрешен.
Второй, более удобный способ управления номерами IRQ - прямое назначение. В том же подменю BIOS Setup могут быть пункты вида "Slot X use IRQ" (другие названия: "PIRQx use IRQ", "PCI Slot x priority", "INT Pin x IRQ").
С их помощью каждой из четырех линии PIRQ можно назначить конкретный номер. Кстати, в новых AwardBIOS 6.00 можно наблюдать, какие именно устройства (включая встроенные) используют ту или иную линию. Просто посмотрите на правую часть экрана BIOS Setup: на фото показано, как я навел курсор на пункт "Slot 1/5 use IRQ no.", а справа появилась надпись "Display Contr.". То есть первая линия PIRQ используется видеокартой. Если я сейчас поставлю какой-либо определенный номер вместо "Auto", видеокарта будет переведена на это прерывание.

Распределение номеров IRQ средствами Windows
Второй раз номера прерываний распределяются операционной системой. Как показали проведенные мной эксперименты, Windows"98 начинает вмешиваться в произведенные BIOS"ом действия только в крайних случаях. При наличии нормального BIOS описанные здесь приемы не понадобятся.
Следует заметить, что для правильной работы механизмов совместного использования IRQ и динамического распределения необходимо, чтобы Windows распознала чипсет материнской платы и загрузила IRQ Miniport. Чем более свежая версия у Windows, тем больше чипсетов поддерживает ее собственный минипорт (PCIIMP.PCI). Однако всегда лучше перестраховаться и установить самые свежие драйверы чипсета.
В Windows 98 управление системой распределения IRQ осуществляется с помощью стандартного менеджера устройств. В списке системных устройств нужно найти шину PCI. В ее свойствах есть особая закладка (см. скриншот). Если все настроено правильно, там будет упомянут минипорт ("успешно загружен"), а управление шиной PCI (Steering) будет включено. Таким образом, Windows"98 имеет средства для управления распределением номеров прерываний между физическими линиями. Но поскольку и BIOS чаще всего с этим хорошо справляется, этот механизм не задействуется.
Но иногда он просто необходим. Как я уже говорил, PCI-устройства не должны конфликтовать в случае, если они используют одно и то же логическое прерывание. Другое дело - ISA-устройства, к которым относятся также и COM- и LPT-порты. Если устройство не-Plug&Play, BIOS может его и не заметить, отдав занятое им прерывание PCI-устройству. Тогда нужно прерывание зарезервировать. Это делается в диспетчере устройств Windows"98: выбираем устройство "Компьютер", вызываем его свойства, переключаемся на вторую закладку. Дальше все понятно.
Кроме резервирования, можно непосредственно задать номер прерывания для устройства. Для этого нужно в его свойствах найти закладку "Ресурсы", отключить автоматическую настройку и попытаться изменить назначенный номер прерывания.
К сожалению, это работает далеко не всегда.
Windows 2000 - система особая. Если у вас современный компьютер, то он наверняка поддерживает интерфейс конфигурирования ACPI. Windows 2000 в таком случае вообще проигнорирует действия BIOS и "повесит" все PCI-устройства на одно логическое прерывание. В общем случае это будет отлично работать (когда нет ISA), но иногда случаются проблемы. Чтобы получить возможность изменять номера прерываний, нужно либо поменять HAL-ядро, либо переустановить Windows 2000 с отключенным в BIOS ACPI. Замена ядра производится так: в диспетчере устройств выбирайте "Компьютер"/"Компьютер с ACPI", меняйте драйвер на "Стандартный компьютер", перезагружайтесь. Если это не поможет, придется переустановить Windows 2000 заново.
Надеюсь, приведенная выше информация поможет вам в борьбе с глюками "железа". И помните: большинство возникающих проблем связано с низким уровнем компьютерной грамотности хозяина компьютера. Поэтому нужно всегда стремиться к самообразованию, тогда и проблем будет поменьше, а те, что все-таки возникнут - не будут казаться неразрешимыми.

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

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

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

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

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

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

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

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

Настройка Interrupt ReQuest

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

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

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

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

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

Кроме того, в современных компьютерах обычно используется расширенный программируемый контроллер прерываний (APIC, ), поддерживающий 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 и программных INT BIOS

Заключение

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

  • Алиева Елена Викторовна , студент
  • Уфимский государственный авиационный технический университет
  • КОНТРОЛЛЕР ПРЕРЫВАНИЙ
  • КОНТРОЛЛЕР
  • АППАРАТНЫЕ ПРЕРЫВАНИ
  • ПРЕРЫВАНИЕ

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

  • Автоматизация документооборота склада производственного предприятия
  • Calls-технологии, особенности, применение и эффективность
  • Разработка модели информационной системы юридического отдела по сопровождению и заключению договоров предприятия

Введение

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

Механизм прерываний поддерживается на аппаратном уровне. В зависимости от источника, прерывания делятся на:

  • аппаратные - возникают как реакция микропроцессора на физический сигнал от некоторого устройства (клавиатура, системные часы, клавиатура, жесткий диск и т.д.), по времени возникновения эти прерывания асинхронны, т.е. происходят в случайные моменты времени;
  • программные - вызываются искусственно с помощью соответствующей команды из программы (int), предназначены для выполнения некоторых действий операционной системы, являются синхронными;
  • исключения - являются реакцией микропроцессора на нестандартную ситуацию, возникшую внутри микропроцессора во время выполнения некоторой команды программы (деление на ноль, прерывание по флагу TF (трассировка)) .

Аппаратные средства системы прерываний

Система прерываний - это совокупность программных и аппаратных средств, реализующих механизм прерываний.

К аппаратным средствам системы прерываний относятся:

  • выводы микропроцессора - на них формируются сигналы, извещающие микропроцессор либо о том, что некоторое внешнее устройство «просит уделить ему внимание» (INTR), либо о том, что требуется безотлагательная обработка некоторого события или катастрофическая ошибка (NMI)
  • INTR - вывод для входного сигнала запроса на прерывание,
  • NMI - вывод для входного сигнала немаскируемого прерывания
  • INTA - вывод для выходного сигнала подтверждения получения сигнала прерывания микропроцессором (этот сигнал поступает на одноименный вход микросхемы контроллера 8259А;
  • программируемый контроллер прерываний 8259А (предназначен для фиксирования сигналов прерываний от восьми различных внешних устройств; он выполнен в виде микросхемы; обычно используют две последовательно соединенные микросхемы, поэтому кол-во возможных источников внешних прерываний до 15 плюс одно немаскируемое прерываний; именно он формирует номер вектора прерывания и выдает его шину данных);
  • внешние устройства (таймер, клавиатура, магнитные диски и т.п.)

Обработка прерываний

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

После завершения работы устройства ввода-вывода происходит следующее:

  • Устройство посылает процессору сигнал прерывания.
  • Перед тем как ответить на прерывание, процессор должен завершить исполнение текущей команды (см. рис. 1).
  • Процессор производит проверку наличия прерывания, обнаруживает его и посылает устройству, приславшему это прерывание, уведомляющий сигнал об успешном приеме. Этот сигнал позволяет устройству снять свой сигнал прерывания.
Рисунок 1. Временная диаграмма программы: медленный ввод-вывод

Теперь процессору нужно подготовиться к передаче управления обработчику прерываний. Сначала необходимо сохранить всю важную информацию, чтобы в дальнейшем можно было вернуться к тому месту текущей программы, где она была приостановлена. Минимальная требуемая информация - это слово состояния программы и адрес очередной выполняемой команды, который находится в программном счетчике. Эти данные заносятся в системный управляющий стек.

Рисунок 2. Обработка простого прерывания

Далее в программный счетчик процессора загружается адрес входа программы обработки прерываний, которая отвечает за обработку данного прерывания. В зависимости от архитектуры компьютера и устройства операционной системы может существовать как одна программа для обработки всех прерываний, так может быть и своя программа обработки для каждого устройства и каждого типа прерываний. Если для обработки прерываний имеется несколько программ, то процессор должен определить, к какой из них следует обратиться. Эта информация может содержаться в первоначальном сигнале прерывания; в противном случае для получения необходимой информации процессор должен по очереди опросить все устройства, чтобы определить, какое из них отправило прерывание.

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

Содержимое программного счетчика и слово состояния прерываемой программы уже хранятся в системном стеке. Однако это еще не вся информация, имеющая отношение к состоянию исполняемой программы. Например, нужно сохранить содержимое регистров процессора, так как эти регистры могут понадобиться обработчику прерываний. Поэтому необходимо сохранить всю информацию о состоянии программы. Обычно обработчик прерываний начинает свою работу с записи в стек содержимого всех регистров. Другая информация, которая должна быть сохранена, обсуждается в главе 3, "Описание процессов и управление ими". На рис. показан простой пример, в котором программа пользователя прерывается после выполнения команды из ячейки N. Содержимое всех регистров, а также адрес следующей команды (N+1), в сумме составляющие М слов, заносятся в стек. Указатель стека при этом обновляется, указывая на новую вершину стека. Обновляется и программный счетчик, указывая на начало программы обработки прерывания.

Теперь обработчик прерываний может начать свою работу. В процесс обработки прерывания входит проверка информации состояния, имеющая отношение к операциям ввода-вывода или другим событиям, вызвавшим прерывание. Сюда может также входить пересылка устройствам ввода-вывода дополнительных инструкций или уведомляющих сообщений.

После завершения обработки прерываний из стека извлекаются сохраненные ранее значения, которые вновь заносятся в регистры, возобновляя таким образом то состояние, в котором они пребывали до прерывания.

Последний этап - восстановление из стека слова состояния программы и содержимого программного счетчика. В результате следующей будет выполняться команда прерванной программы.

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

Контроллер прерываний

Контроллер прерываний предназначен для обработки и арбитража поступающих запросов на обслуживание к центральному процессору от переферийных устройств. По аналогии функции контроллера прерываний можно сравнить с секретарём какого–нибудь начальника. Секретарь должен решить, кого из посетителей допустить к боссу в первую очередь, а кого и потом, исходя из приоритетов, отдаваемых боссом и статуса самого посетителя. Так и в компьютерной системе, возможна такая ситуация, когда несколько переферийных устройств послали сигнал прерывания или запрос на прерывание. В компьютерной литературе этот сигнал обозначается IRQ (Interrupt Request).

Как уже выше говорилось, прерывания имеют определённый приоритет, который позволяет контроллеры прерываний отдавать предпочтение в данный момент времени одному устройству, а не другому. В современном компьютере существует до 16 внешних и периферийных устройств, генерирующие прерывания. Вот эти устройства:
–IRQ 0, системный таймер; –IRQ 1, клавиатура; –IRQ 2, исползуется для запросов устройств, подключенных каскадом; –IRQ 8, часы реального времени; –IRQ 9, зарезервировано; –IRQ 10, зарезервировано; –IRQ 11, зарезервировано; –IRQ 12, ps/2–мышь; –IRQ 13, сопроцессор; –IRQ 14, контроллер «жёсткого» диска; –IRQ 15, зарезервировано; –IRQ 3, порты COM2,COM4; –IRQ 4, порты COM1,COM3; –IRQ 5, порт LPT2; –IRQ 6, контроллер дисковода; –IRQ 7, порт LPT1,принтер.

Здесь сигналы приведены в порядке убывания приоритетов. Можно заметить, что после IRQ 2, следует IRQ 8. Дело в том, что в своё время контроллер прерываний состоял из двух микросхем, одна была подключена к другой. Вот эта вторая микросхема и подключается к линии IRQ 2, образуя каскад. Она обслуживает линии IRQ8–IRQ 15. А затем следуют линии первой микросхемы .

Работа контроллера прерывания

Работа контроллеов прерываний рассматривается на основе микросхем фирмы Intel 8259A, которые применялись в теперь уже очень старых компьютерах с процессорами до 386 серии. В этих компьютерах обычно было 2 микросхемы 8259A, подключенных каскадно, то–есть одна к другой. Одна из микросхем, подключенная по линии запроса на прерывание непосредственно к процессору является ведущей или мастером. Остальные,подключаются к ведущей через аналогичные выводы, называются ведомыми.


Рисунок 3. Схема подключения контроллеров прерываний и их взаимодействие с центральным процессором

На рисунке 3 изображена схема подключения контроллеров прерываний и их взаимодействие с центральным процессором. Сигналы на прерывание от переферийных устройств или ведомых контроллеров поступают на входы IR0–IR7 ведущего контроллера. Внутренняя логика ведущего контроллера обрабатывает поступившие запросы с точки зрения приоритета. Если приоритет запроса устройства достаточен, то на выходе INT контроллера вырабатывается сигнал, поступающий на вход INTR процессора. В противном случае, запрос блокируется.

Если процессор разрешает прерывания, то после завершения выполнения текущей команды, он вырабатывает по линии INTA последовательность сигналов, которая переводит ведомый контроллер в состояние невосприимчивости к поступающим новым запросам на прерывание, а кроме того, на линию данных выводится информация из внутренних регистров контроллера по которой процессор распознаёт тип прерывания.

Разрешение на прерывание процессор передаёт контроллеру прерываний через контроллер шины. Сигнал RD предназначен для того, чтобы контроллер прерываний поместил на шину данных содержимое внутренних регистров. По сигналу WR контроллер прерываний, наоборот, принимает данные с одноимённой шины и записывает их во внутренние регистры. Соответственно, это влияет на режим работы контроллера прерываний.

Вход CS подключается к шине адреса и по этому сигналу происходит идентификация конкретного контролллера прерываний. Вход A0 указывает на порт контроллера прерываний в пространстве ввода–вывода.

Входы IR0–IR7 предназначены для приёма запросов на прерывание от переферийных устройств и ведомых контроллеров.

Выходы CAS0–CAS2 предназначены для идентификации конкретного ведомого контроллера .

В статье рассмотрены аппаратные прерывания и устройство, функции, работу контроллера прерываний. Данный контроллер прерываний появился ещё в первых PC–совместимых компьютерах. С тех пор, и процессоры, и сам компьютер во многом изменились, хотя некоторые моменты остались. Поэтому, для того, чтобы было понятней и была рассмотрена организация контроллера прерываний 8295A.

На приведенной выше схеме показаны сигналов приходящие не только на ведомый и ведущий контроллеры прерываний, но и на остальные ведомые. Однако на вашем компьютере или ноутбуке на самом деле 2 контроллера прерываний, как выше указывалось: ведущий и ведомый. Но можно создавать свои компьютерные системы, используя таким образом до 64 ведомых контроллеров прерываний.

В современных компьютерах уже давно функции контроллера прерываний выполняют не микросхемы 8259A, а южный мост. Однако, для всех программ и устройств всё остаётся по–прежнему. Более того, контроллер прерываний можно программировать, и обращаться к внутренним регистрам и портам необходимо точно также, как и к контроллеру 8259A .

Заключение

В данной работе были рассмотрены прерывания, а именно аппаратные средства обработки прерываний и принцип обработки прерываний. Также рассмотрены контроллеры прерываний и принцип их работы.

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

Контроллер прерываний предназначен для обработки и арбитража поступающих запросов на обслуживание к центральному процессору от переферийных устройств. Прерывания имеют определённый приоритет, который позволяет контроллеру прерываний отдавать предпочтение в данный момент времени одному устройству, а не другому. В современном компьютере существует до 16 внешних и переферийных устройств, генерирующие прерывания.

Список литературы

  1. Лекция. Прерывания. Эл. Ресурс. http://hromatron.narod.ru/_lekcii/prerivania_lekcia_g2013.htm
  2. Системные прерывания | Аппаратное прерывание | Обработка прерываний http://life-prog.ru/view_os.php?id=16
  3. Контроллер прерываний. Эл. Ресурс http://sdelaycomputersam.ru/Controller_irq.php,
  4. Прерывания. Контроллер прерываний. Устройство, функции, работа. Эл. Ресурс http://sdelaycomputersam.ru/Controller_irq.php
  5. Структура и инициализация контроллера прерываний Intel 8259A Эл.ресурс https://dev64.wordpress.com/2012/05/30/8259-programming/

Системные процессы, о которых рядовые пользователи компьютеров, часто не имеют представления, очень часто могут вызвать повышенные нагрузки на вычислительные ресурсы компьютера. К таковым, в частности, относятся так называемые системные прерывания. Что это такое, большинство не знает и часто пытается завершить работу данной службы непосредственно в «Диспетчере задач», где и отображается загрузка центрального процессора и оперативной памяти. Несколько забегая вперед, следует сказать, что заниматься такими вещами не стоит ни в коем случае. Но как тогда привести систему в чувство? Об этом предлагается поговорить более подробно, тем более, что при рассмотрении основного вопроса попутно могут обнаружиться и другие проблемы, связанные с некорректным функционированием «железных» компонентов, самих операционных систем Windows и установленного в их среде программного обеспечения. Но обо всем по порядку.

что это такое?

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

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

Как это работает: простейшее объяснение

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

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

Системные прерывания грузят процессор: что делать в первую очередь?

Исходя из приведенных выше теоретических сведений, перейдем к практическим мерам, которые позволяют устранить возникающие проблемы и исправить такие ситуации. Что предпринять в первую очередь? Как ни странно это звучит, но иногда бывает достаточно выполнить самую обычную перезагрузку, что позволяет деактивировать все сторонние программные компоненты. Но ведь при повторном запуске какого-то приложения ситуация может повториться. В этом случае сразу же следует проверить состояние драйверов, используя для этого «Диспетчер устройств». Вполне возможно, что конфликт между программной и аппаратной частью как раз и был спровоцирован именно ими.

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

Отслеживание нагрузок при помощи специальной утилиты

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

Поэтому, если замечено, что системные прерывания грузят ресурсы, большинство специалистов рекомендует воспользоваться небольшой программой под названием DPC Latency Checker, которая представлена в портативном виде и не требует установки на ПК. В ней первым делом необходимо включить сканирование, после чего в результатах проверки будут приведены рекомендации по устранению проблем. Однако чаще всего связаны они только с завершением каких-то процессов, соответствующих и программам, и используемому в данный момент оборудованию, или будет выдана рекомендация обратиться к «Диспетчеру устройств». А вот его-то нам и нужно использовать, оставив диагностическую утилиту активной в качестве своеобразного средства изменения отслеживания нагрузок. Не путайте нагрузки, показанные в этой программе, с теми, которые видны в «Диспетчере задач».

Отключение компонентов в «Диспетчере устройств»

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

Обратите внимание, что категорически запрещается отключать оборудование, представленное в разделах «Компьютер», «Процессоры» и «Системные устройства», поскольку такие действия могут привести к несанкционированному завершению работы и перезагрузке компьютера. Чего доброго, еще и вся операционная система выйдет из строя.

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

Что делать, если проблема с нагрузкой не устраняется?

Но что это? Системные прерывания все равно дают повышенную нагрузку на процессор. Что еще могло повлиять на возникновение такой ситуации? Почему-то (а это так и есть) в большинстве случаев первопричиной такого поведения системы называют проблему с устаревшим или встроенным в материнскую плату звуковым оборудованием, для которого задействовано улучшение саундэффектов.

Как вариант - в настройках звука средствами Windows, отключите данный пункт, что автоматически приведет к деактивации всех установленных эффектов. Заметьте, они относятся именно к программному, а не к аппаратному типу, поэтому отключение основного устройства может и не дать результата.

Проблемы с первичными системами ввода/вывода

Наконец, многие специалисты не исключают и появление неполадок в работе первичных систем BIOS/UEFI, которые могут быть связаны с устареванием оригинальной прошивки. В этом случае новое и более современное оборудование может определяться некорректно. Как уже понятно, выходом станет загрузка и инсталляция обновления для прошивки. Но, если запустить такие процессы для UEFI можно непосредственно в работающей операционной системе, с экспериментами в BIOS следует быть крайне осторожным. Несоответствующая прошивка или некорректная установка могут привести и к тому, что вся компьютерная система перестанет работать.

Краткие итоги

Это вкратце и все, что касается системных вызовов прерываний. Исходя из всего вышесказанного, устранять возникающие проблемы рекомендуется с задействованием указанной диагностической программы с последовательным отключением оборудования. При необходимости сбойные компоненты придется менять. В качестве дополнительного инструмента, который может быть использован для выявления проблем с планками оперативной памяти, целесообразно применять утилиту Memtest86+, однако без необходимых знаний толку от нее не будет никакого.

Распространенной проблемой операционной системы Windows любой редакции является загрузка ресурсов компьютера «внутренними» процессами. Одним из таких процессов является системное прерывание, которое может серьезно нагружать ресурсы компьютера, что будет отображаться в «Диспетчере задач». Наиболее часто приходится сталкиваться с ситуацией, когда системное прерывание грузит процессор, из-за чего компьютер серьезно теряет в производительности. В рамках данной статьи мы рассмотрим, почему это происходит, а также можно ли отключить системные прерывания в Windows.

Системные прерывания: что это за процесс

Процесс «Системные прерывания» по умолчанию в операционной системе Windows запущен постоянно, но при обычной работе он не должен нагружать компоненты системы более чем на 5%. Если данный процесс более серьезно воздействует на ресурсы компьютера, это говорит о наличии аппаратной проблемы, а именно о нарушении в работе одного из компонентов компьютера.

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

Как отключить системные прерывания

Как было отмечено выше, системные прерывания являются не более чем указателем, что со стороны Windows идет дополнительное обращение к ресурсам центрального процессора. Отключить системные прерывания, чтобы повысить производительность компьютера, не получится, и нужно искать проблему в работе компонентов PC. Для этого удобно использовать приложение DPC Latency Checker, которое можно загрузить бесплатно в интернете с сайта разработчиков. Программа позволяет определить неисправные компоненты компьютера.

Чтобы провести диагностику системы приложением DPC Latency Checker, запустите его и подождите. Некоторое время уйдет на проверку компьютера, после чего пользователь увидит на графике, если имеются проблемы в работе компонентов системы. Также приложение укажет на возможные ошибки и посоветует их поискать, отключая устройства.

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

Важно: В процессе отключения компонентов в «Диспетчере устройств», не отключайте «Компьютер», «Процессор» и «Системные устройства», иначе это приведет к экстренной перезагрузке компьютера.

Когда будет найдено устройство, при отключении которого нагрузка на процессор снизится до нормального состояния, обновите драйвера для этого компонента с официального сайта разработчиков.

Обратите внимание: Если были предприняты попытки отключить все компоненты системы, но процесс «Системные прерывания» продолжает нагружать систему, попробуйте обновить драйвера для процессора.

В ситуации, когда советы, приведенные выше, не помогают справиться с проблемой загрузки процессора системными прерываниями, можно опробовать еще следующие способы исправления ситуации:

Стоит отметить, что отключать системные прерывания через «Диспетчер задач» не следует, это приведет к сбою системы, но не решит проблему.