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

Типы прерываний

Существует 6 классов прерываний.  1. Программы-прерывания по системной директиве. Инициатор – активный процесс, выполнивший обращение к супервизору, то есть запрос на предоставление ОС системной вычислительной услуги.  2. Прерывания ввода-вывода. Инициируются устройством ввода/вывода (УВВ) и сигнализируют ЦП о том, что произошло изменение состояния канала ввода-вывода (КВВ) или УВВ (например: завершение операции, ошибка, переход устройства в состояние готовности).  3. Внешние прерывания. Нажатие операторами клавиш на панели ЭВМ или прием сигнала прерывания от другого ЦП в мультипроцессорной системе, сигнала от модема.  4. Прерывание по рестарту. Нажатие оператором кнопки рестарта или Reset.  5. Логические прерывания по контролю программы вызываются программными ошибками, обнаруженными при выполнении программы (деление на 0, попытка выполнить привилегированную команду в пользовательском режиме, неверный код операции, защита памяти и т.д.).  6.Прерывания по контролю машины из-за аппаратных ошибок прерываний упорядочены по приоритетам. Определенный тип прерываний запрещает свой тип и младшие и разрешает старшие. ЦП реагирует только на разрешенные прерывания, обработка запрещенных прерываний либо задерживается, либо, в некоторых случаях, игнорируется. 

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

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

  • Со всеми прерываниями связан один указатель и одна программа обработки прерываний. Возможные причины прерываний различаются благодаря дополнительной информации, содержащейся в выделенной области памяти. Первой задачей ОП является проверка кода прерывания и вызова соответствующей процедуры обработки. Таким способом обрабатывались прерывания на компьютерах с архитектурой DEC (Digital Equipment Corporation – корпорация цифрового оборудования).

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

Например, в архитектуре IBM-совместимых компьютеров механизм прерывания работает следующим образом: каждому из основных типов прерываний присвоен свой номер. Например, прерывание таймера имеет номер 8, гибкие диски используют номер 14. В самом начале оперативной памяти IBM/PC хранится таблица с адресами программ, которые должны вызываться при возникновении различных прерываний. Эти адреса должны быть полными сегментированными адресами, так что они занимают по два слова или по четыре байта каждый. Эти адреса иногда называются векторами прерываний. Прерывание с номером 0 имеет вектор, хранящийся в ячейке с нулевым адресом, прерывание 4 имеет свой вектор в ячейке 4 и так далее. Когда происходит прерывание номер "X", вектор, хранящийся по адресу 4X, загружается в регистры адреса программы и компьютер начинает выполнять программу обслуживания прерывания, которая размещается по этому адресу. Когда обработка прерывания заканчивается, программа обработки возвращает управление программе, которая выполнялась в момент возникновения прерывания, с помощью специальной команды "возврат из прерывания". Чтобы такой возврат мог быть выполнен, необходимо сохранить в стеке текущие адреса программы до загрузки в регистры CS и IP вектора прерывания.

Для передачи управления на программу обработки прерывания могут использоваться два метода: метод замены контекста  и метод векторной обработки. Первый метод применяется преимущественно в ОС больших ЭВМ и основан на использовании слова состояния программы (ССП). При возникновении прерывания содержимое регистра ССП после сохранения в специальном участке ОЗУ подменяется на специальный шаблон, в котором содержится адрес программы – обработчика данного вида прерывания.

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