Прерывания
В работе компьютера часто возникают ситуации, когда процессору необходимо отложить на время выполнение основной программы и обработать нажатие клавиши на клавиатуре, щелчок кнопкой мыши или другое событие, возникшее в одном из устройств. Для реализации этой задачи во всех компьютерах используют механизм прерываний. Прерывание (INT) - это приостановка процессором выполнения основной программы для обработки события, поступившего от внешнего устройства. В общем случае обработка прерывания происходит следующим образом:
когда возникает ситуация, требующая вмешательства процессора (например, была нажата клавиша), устройство посылает специальный сигнал - запрос на прерывание (IRQ);
запрос на прерывание обрабатывается контроллером прерываний1, после чего передается процессору;
процессор, получив запрос на прерывание, приостанавливает выполнение основной программы, сохраняет в оперативной памяти текущее состояние своих регистров и запускает подпрограмму обработки данного прерывания;
завершив обработку прерывания, процессор восстанавливает из памяти свое исходное состояние и продолжает выполнять основную программу.
Прерывания могут накладываться друг на друга, и если во время обработки одного прерывания возникнет другое с более высоким приоритетом, то выполнение текущего будет приостановлено, и процессор перейдет к более важному. Процессор
может обрабатывать тысячи прерываний в секунду, но пользователи не замечают ЭТОГО, ПОСКОЛЬКУ скорость его работы достаточно высока.
Вес прерывания можно условно разделить на несколько групп.
Немаскируемые прерывания (Non-Maskable Interrupt, NMI). Они имеют
НаЯВЫСШИп приоритет. Эти прерывания обрабатываются при аварийных си
туациях, связанных с ошибками в работе оперативной памяти или других
устройств.
Все современные процессоры также поддерживают другой тин немаскируемого прерывания SMI (System Management Interrupt), которое используется в схемах управления электропитанием.
Q Маскируемые прерывания. В отличие от немаскируемых, их выполнение может быть временно приостановлено программным способом. К ним относят все прерывания от устройств, обрабатываемые контроллером прерываний. Обычно он позволяет обращаться к 16 прерываниям от различных устройств; их назначение приведено и табл. 1.2.
В большинстве современных компьютеров используется так называемый расширенный контроллер прерывании (ЛР1С), который изначально разрабатывался для многопроцессорных систем. APIC ускоряет обработку прерываний и увеличивает их количество до 24.
Программные прерывания. Они полностью реализуются программным спосо
бом без участия контроллера прерываний. Эти прерывания, по сути, - подпро
граммы. |н>1наюпп!с определенные задачи. Например, все версии BIOS содержат
набор программных прерывании, которые выполняют основные операции вво
да/вывода, и любая программа может их использовать, или, другими словами,
вызывать прерывания BIOS. Свои программные прерывания есть у операцион
ной системы, а также у некоторых прикладных программ.
Таблица 1.2. Назначение аппаратных прерываний
| Устройство | Примечание | |
| 0 | Системный таймер | Имеет наивысший приоритет и не может быть изменено |
| 1 | Клавиатура | Имеет самый высокий приоритет после системного ПЙМвра и не может быть изменено |
| 2 | Контроллер
прерываний |
Применяется для расширения количества прерываний с 8 до 16. Не может быть изменено |
| 3 | Последовательный порт СОМ 2 | При необходимости может быть назначено другому устройству |
| * | Последовательный порт СОМ ! | При необходимости может быть назначено другому устройству |
| :> | Мп | Может назначаться любому устройству |
| Номер прерывания | Устройство | Примечание |
| 6 | Контроллер дисковода для дискет | ИзначаЛЬНО не может быть изменено. В некоторых версиях BIOS есть ВОЗМОЖНОСТЬ освободить IRQ 6 для операционной системы, если дисковод отсутствует |
| 7 | Параллельный порт | При необходимости может быть назначено другому устройству |
| 8 | Часы реального времени (RTC) | Системное прерывание, которое не может быть изменено |
| 9 | Нет | Может назначаться любому устройству |
| 10 | Нет | |
| 11 | Нет | |
| 12 | PS/2-мышь | При необходимости может быть назначено другому устройству |
| 13 | Математический сопроцессор | Системное прерывание, которое не может быть изменено. Все современные процессоры имеют встроенный математический сопроцессор, поэтому данное прерывание используется для совместимости СО старыми программами |
| И | Первичный канал ШЕ-контроллера | При отключении канала может быть назначено другому |
| 15 | Вторичный канал 1D Е-контроллсра |