Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_модуль1.doc
Скачиваний:
11
Добавлен:
25.08.2019
Размер:
276.48 Кб
Скачать

Механизм прерываний

Механизм прерываний реализуется аппаратно-программными средствами. Структуры системы прерываний зависят от аппаратной архитектуры

Существует два способа реализации прерывания:

  1. векторный (vectored) При векторном прерывании шина сообщает процессору начальный адрес обработчика прерывания и приоритет. Пример: шина VMEbus.

  2. опрашиваемый (polled) шина выставляет информацию только об уровне приоритета прерывания. В этом случае процессор должен сам определить, какое именно устройство (из тех, что имеют такой уровень приоритета) запросило прерывание. Примеры: ISA, EISA, PCI, Sbus

ISA (Industry Standard Architecture) - архитектура, получившая статус промышленного стандарта. Пропускная способность - до 5,5 Мбайт/с.

EISA (Extended ISA) – архитектура, отличающийся от ISA увеличенным разъемом и увеличенной производительностью до 32 Мбайт/с.

PCI (Peripheral Component Interconnect — стандарт подключения внешних компонентов) - Поддерживает частоту до 66 МГц и обеспечивает производительность 264 Мбайт/с для 32-разрядных данных.

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

При использовании опрашиваемых прерываний процессор получает от системной шины только информацию об уровне приоритета прерывания. С каждым уровнем приоритета может быть связано несколько устройств. При возникновении прерывания процессор должен определить, какое именно устройство (из тех, что имеют такой уровень приоритета) запросило прерывание. Для этого процессор опрашивает все обработчики прерываний для данного уровня приоритета, пока один из обработчиков не подтвердит, что прерывание пришло из обслуживаемого им устройства. Опрашиваемые прерывания поддерживают шины ISA, EISA, PCI, Sbus.

Некоторые аппаратные платформы сочетают оба типа прерываний.

Последовательность действий процессора при обработке прерывания:

Если прерывание разрешено (оно не маскировано и приоритет выше, чем процессора (в слове состояния процессора)).

  1. Останавливает процесс и записывает его дескриптор и контекст.

  2. Запрашивает код (или причину) прерывания у источника (шина или активный процесс) прерывания.

  3. Вычисляет адрес ячейки, хранящей вектор прерывания (при опрашиваемом способе) (вектор - адреса обработчиков прерывания).

  4. Считывает из ОП и записывает в регистры (в регистры FL, CS, IP и т. д.) вектор прерывания и его атрибуты.

  5. Гасит (устанавливает в 0) флаги прерывания (IF) и трассировки (TF) (для новых прерываний).

  6. Выполняет обработчик прерывания.

  7. Выполняет процедуру RTI (Return from Interrupt) – восстановление данных для продолжения прерванной команды.

  8. Возвращает управление прерванной программе.

1 – 4 шаги реализуются аппаратно, а 5 – 8 программно.

кратко:

  1. Распознавание прерывания.

  2. Выполнение обработчика прерывания.

  3. Возврат к прерванной программе.