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

В процессе выполнения программ в компьютере могут возникнуть условия, требующие изменения хода обработки данных. Так, при нажатии клавиши или кнопки мыши, компьютеру необходимо приостановить текущие дейст­вия и переключиться на другие в ответ на поступивший запрос. При выполнении программы также может возникнуть ошибочная ситуация, например, деление на ноль. Поэтому для взаимодействия устройств и программ компьютера с центральным процессором, в IBM-совместимых компьютерах предусмот­рена система прерываний (interrupts). Помимо обеспечения взаимодействия устройств и программ, система прерываний компьютера аппаратно поддерживает мультипрограммирование – выполнения одним процессором одновременно большого числа программ за счет прерывания выполнения текущей программы и передачи управления другой программе.

Прерывания в компьютере делятся на аппа­ратные (hardware interrupts) и программные (software interrupts).

К аппарат­ным прерываниям относятся как встроенные в процессор прерывания (например, при отключении электропитания), так и прерывания от устройств компьютера (клавиатуры, жесткого диска и т.д.).

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

В IBM-совместимых компьютерах управление аппаратными прерыва­ниями от устройств и узлов компьютера осуществляется специальными микросхемами – контроллерами пре­рываний, встроенными в одну из микросхем на материнской плате.

Запрос на прерывание от устройства (например, при нажатии клавиши клавиатуры) поступает на регистр контроллера прерываний, состоящий из триггеров прерываний – по одному триггеру на каждый тип прерываний. При поступлении запроса на прерывание соответствующий триггер устанавливается в "1", фиксируя наличие запроса на прерывание данного типа. Регистр прерываний периодически опрашивается процессором (обычно перед завершением выполнения очередной команды) и, если запрос на прерывание есть, процессор переключается на программу обслуживания запроса от устройства.

Все запросы на прерывания могут быть «маскированы», то есть заблокированы программными средствами, кроме одного – прерывания, указывающего на аппаратные ошибки памяти. Это прерывание получило название немаскируемого.

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

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

Запросы на прерывание поступают в блок прерываний в произвольные моменты времени, причем не только одновременно, но и в процессе выполнения обработки другого прерывания. Глубина прерывания – максимально возможное число прерываний, которые могут прерывать друг друга. Глубина возможных прерываний зависит от решаемых задач и определяется организацией очередности при реализации прерываний.

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

Наибольший приоритет имеет немаскируемое прерывание NMI (Non-Maskable Interrupt), затем идет IRQ0 (Interrupt ReQuest 0), и т.д.

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

Прерывания (в порядке убывания приоритета) и их описания приведены в таблице 1.3.1.

Табл. 1.3.1.Прерывания IBM-совместимых компьютеров

Прерывание Описание
NMI (немаскируемое прерывание)
IRQ0 системные часы (счетчик 0 программируемого таймера)
IRQ1 клавиши клавиатуры
IRQ2 используется для подключения второго контроллер прерываний (шина IRQ8-IRQ15)
IRQ8 реальное время
IRQ9 свободен или сетевая карта
IRQ10 свободен
IRQ11 свободен или поддержка IRQ для управления PCI
IRQ12 свободен или порт мыши Bus Mouse
IRQ13 математический сопроцессор
IRQ14 первичный контроллер жестких дисков
IRQ15 вторичный контроллер жестких дисков
IRQ3 последовательный порт 2 (4)
IRQ4 последовательный порт 1 (3)
IRQ5 параллельный порт 2 или звуковая карта
IRQ6 контроллер гибких дисков
IRQ7 параллельный порт 1

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: