Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ZH 2011 - ОРГАНИЗАЦИЯ ЭВМ.doc
Скачиваний:
42
Добавлен:
20.09.2019
Размер:
5.4 Mб
Скачать

25. Механизм прерывания работы процессора

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

Система прерываний служит для инициации различных процессов. Прерывания формируются системными устройствами, самим процессором, периферийными устройствами (вв./выв.). Инициатор запроса выставляет сигнал-запрос. В системе должно быть устройство – контроллер прерываний, который эти запросы воспринимает. Далее начинает работать механизм приоритетов:

  • между запросом и текущим состоянием системы;

  • между самими запросами (связано с текущим состоянием системы).

Бывают различные запросы: по переключению или по уровню. По переключению надо учитывать, что импульс имеет некоторую длительность, линия может использоваться только одним инициатором => каждому источнику требуется свой символ. В случае запроса по уровню линия может использоваться несколькими инициаторами, но это не позволит определить источник запроса (это используется в PCI). Но это экономит число линий запроса прерываний. Сейчас этот способ (по уровню) считается прогрессивным. От контроллера прерываний сигнал идет процессору. Если он "согласен", то переходит к подпрограмме прерывания.

Алгоритм:

  • сохранение всех параметров текущего процесса, чтобы к нему можно было вернуться по завершению подпрограммы прерывания: рабочие регистры, служебные регистры, регистры управления (в системах с разделением памяти);

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

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

Среднее время реагирования на инициализацию и выполнение процесса для прерываний меньше, чем при программном опросе.

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

Для реализации прерываний используется контролер прерываний процессора.

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

Н а рисунке описывается типичный ход обслуживания прерывания. Контроллер устройства генерирует сигнал прерывания на шине процессора, который обрабатывает контроллер прерываний процессора. Этот сигнал служит причиной для CPU для выполнения кода в объекте-прерывании, зарегистрированном для прерывания. Этот код, в свою очередь, вызывает вспомогательную функцию Kilnterrupt Dispatch. KilnterruptDispatch вызывает ISR драйвера, которая запрашивает DPC.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]