Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы Лекция 04(Обработка прерыв...doc
Скачиваний:
8
Добавлен:
16.09.2019
Размер:
192 Кб
Скачать

8

Операционные системы. Лекция 4 (Обработка прерываний. Синхронизация процессов. Задачи.)

  1. Обработка прерываний.

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

Существует два основных способа, с помощью которых шины выполняют прерывания: векторный (vectored) и опрашиваемый (polled). В обоих случаях процессору предоставляется информация об уровне приоритета прерывания на шине подключения внешних устройств.

В случае векторных прерываний в процессор передается информация о начальном адресе программы обработки прерываний – обработчика прерывания.

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

Рис. 4.1. Обработка прерываний

Существует комбинированный подход, сочетающий векторный и опрашиваемый типы прерываний. Такой подход реализован на основе процессоров Intel Pentium. Контроллер прерываний отображает поступающий от шины сигнала IRQ (Interrupt request) на определенный номер вектора прерываний. Вектор представляет собой число, указывающее на одну из 256 программ обработки прерываний, адреса которых хранятся в таблице обработчиков прерываний. В том случае, когда к каждой линии IRQ подключается только одно устройство, процедура прерываний работает как чисто векторная. Однако при совместном использовании одного уровня IRQ несколькими устройствами обработка прерываний реализуется по схеме опрашиваемых прерываний. В данном случае необходимо выполнить опрос всех устройств, подключенных к данному уровню IRQ.

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

  • сразу по приходу;

  • откладывать обработку на некоторое время;

  • полностью игнорировать прерывания.

Обычно обработка прерывания выполняется только после завершения выполнения текущей команды.

Выбор прерывания для обработки осуществляется на основе приоритетов и очередей прерываний.

Поскольку сигналы прерывания возникают в произвольные моменты времени, то на момент прерывания может существовать несколько сигналов прерывания, которые могут быть обработаны только последовательно.

Чтобы обработать сигналы прерывания в порядке очереди, им присваиваются приоритеты.

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

Программное управление маскированием сигналов прерывания позволяет реализовать различные дисциплины обслуживания.

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

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

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

По принципу стека, по дисциплине LCFS (Last Come First Served — последним пришел, первым обслужен), то есть запросы с более низким приоритетом могут прерывать обработку прерывания с более высоким приоритетом. Для этого необходимо не накладывать маску ни на один из сигналов прерывания и не выключать систему прерываний.

Обычно в ОС поддерживается механизм приоритетов и маскирования прерываний. Каждый класс прерываний имеет свой уровень приоритета. Приоритеты могут обслуживаться как относительные и как абсолютные. Маскирование позволяет запретить прерывания любого приоритета в некотором промежутке времени. В целом эти механизмы позволяют организовать гибкое обслуживание прерываний.

Распределение прерываний по уровням приоритета

  • Средства контроля процессора (высокий приоритет)

  • Системный таймер

  • Внешние устройства

  • Программные прерывания (низкий приоритет)

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

  1. При возникновении сигнала аппаратного или программного прерывания происходит первичное аппаратное распознание типа прерывания.

Если прерывания в данный момент запрещены, то процессор продолжает выполнение текущего процесса.

В противном случае вызывается супервизор прерываний. Он запрещает на некоторое время все прерывания и устанавливает причину прерывания. После этого супервизор сравнивает приоритет поступившего прерывания с текущим приоритетом процесса, выполняемого процессором.

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

  1. Сохраняется некоторая часть контекста прерванного процесса, которая позволит возобновить исполнение процесса после обработки прерывания (обычно это счетчик команд, слово состояния процессора, регистры общего назначения).

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

  1. Одновременно с загрузкой адреса процедуры обработки прерываний в счетчик команд производится загрузка нового PSW (слово состояния процессора), которое определяет режимы работы процессора при обработке прерывания.

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

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

Многие процессоры автоматически устанавливают признак запрета прерываний в начале цикла обработки прерывания, в противном случае это делает программа обработки прерывания.

  1. После того как прерывание обработано ядром операционной системы, прерванный контекст восстанавливается (частично аппаратно – PSW, содержимое счетчика команд, частично программно извлечение данных из стека) и процесс возобновляется с прерванного места. Снимается блокировка повторных прерываний данного типа.

Если данное прерывание связано со сменой выполняемого процесса, то вместо восстановления контекста управление передаётся диспетчеру процессов для выбора процесса из очереди готовых процессов для восстановления его контекста и передачи ему процессора.