Архитектура ЭВМ7.ppt
- Количество слайдов: 15
Прерывания Прерывание (interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.
Прерывания Общая схема обработки прерывания 1. Процессор получает сигнал о прерывании 2. Процессор завершает выполнение текущей машинной команды 3. Сохраняется текущее состояние процессора 4. Вызывается обработчик прерывания 5. Состояние процессора восстанавливается, происходит возврат к командам, выполнение которых было прервано.
Прерывания Классификация прерываний • Маскируемые прерывания(Maskable interrupt). • Немаскируемые прерывания(Non-maskable interrupt). • Межпроцессорные прерывания(Interprocessor interrupt). • Программные прерывания(Software interrupt). • Ложные прерывания(Spurious interrupt)
Прерывания Маскируемые прерывания Прерывания, которые можно запрещать установкой соответствующих битов в регистре маскирования прерываний. Маскируемые прерывания могут использоваться для обработки сигналов от внешних устройств (мышь, клавиатура…). Как правило, при обработке такого прерывания устанавливается запрет на все другие маскируемые прерывания.
Прерывания Маскируемые прерывания В процессорах Intel для разрешения/запрета на прерывания используется флаг IF регистра флагов
Прерывания Маскируемые прерывания Для управления флагом прерываний в процессоре Intel используются команды cli - clear interrupt flag (запрещает прерывания). sti - set interrupt flag (разрешает прерывания). По умолчанию прерывания запрещаются/разрешаются автоматически, когда происходит вызов/возврат из обработчика прерываний
Прерывания Немаскируемые прерывания Прерывания, которые обрабатываются всегда, независимо от запретов на другие прерывания. Используются для ситуаций, которые должны быть обработаны в любом случае, и для которых критично время реакции: • Критические ошибки оборудования • Сигналы от системных таймеров
Прерывания Межпроцессорные прерывания Особый тип прерываний. Генерируются одним процессором, чтобы прервать работу другого процессора в многопроцессорных системах. Используются для управления и синхронизации многопроцессорных вычислений.
Прерывания Программные прерывания Прерывание, которое может осуществить программа с помощью специальной инструкции. Программные прерывания часто используются для системных вызовов, т. е. такие прерывания являются особым способом вызова подпрограмм. Пример: вывод символа на экран. Для этого с помощью прерывания вызывается специальная процедура, которая является частью ОС.
Прерывания Программные прерывания В процессоре Intel программные прерывания вызываются инструкцией int НОМЕР_ПРЕРЫВАНИЯ Пример: вывод символа на экран mov ah, 2 ; В ah записываем номер функции mov dl, ‘a’ ; В dl записываем сам символ int 21 h ; Прерывание № 21 h – ввод/вывод символов
Прерывания Ложные прерывания Нежелательные аппаратные прерывания. Возникают по причине электромагнитных помех, или генерируются некорректно работающим либо неправильно настроенным оборудованием.
Прерывания Номера и векторы прерываний Каждое прерывание имеет номер. Обычно номера обозначаются как IRQ 0, IRQ 1, IRQ 2 … Вектор прерывания – адрес в памяти, по которому находится обработчик прерывания. В памяти хранится таблица соответствия номера и вектора прерывания В 16 -битных процессорах Intel такая таблица хранится в адресах начиная с нулевого В 32 -битных процессорах Intel адрес начала таблицы хранится в регистре IDTR
Прерывания Номера и векторы прерываний
Прерывания Номера и векторы прерываний Устройство может иметь свой выделенный номер прерывания, либо делить этот номер с другими устройствами. Например клавиатура генерирует прерывания IRQ 1, другие устройства этот номер не используют. В случае, если несколько устройств используют один номер прерывания, обработчик сам должен определить, что за устройство вызвало прерывание.
Прерывания Номера и векторы прерываний Способы назначения прерывания устройству: • Фиксированный номер прерывания. То есть устройство всегда генерирует прерывание с номером, определенным при его изготовлении • Номер прерывания устанавливается с помощью перемычки на устройстве (например старые звуковые платы) • Номер прерывания назначается автоматически операционной системой (Технология Plug&Play)
Архитектура ЭВМ7.ppt