Слайд 2Прерывание
Это ситуация, приводящая к временному или окончательному прекращению выполнения последовательности команд
одной и переходу к выполнению команд другой программы.
Или
Реакция процессора на какое-либо событие.
Или
Специфические сигналы, посылаемые процессору устройством или программой, когда требуется немедленное вмешательство.
Слайд 3Классификация прерываний
В зависимости от источника прерывания делятся на три класса:
Внешние;
Внутренние;
Программные;
Слайд 4Внешние прерывания
Внешние прерывания могут возникать в результате действий пользователя или же в
результате поступления сигналов от аппаратных устройств.
Для внешних прерываний характерны следующие особенности:
Внешнее прерывание обнаруживается процессором между выполнением команд (или между итерациями в случае выполнения цепочечных команд).
Процессор при переходе на обработку прерывания сохраняет часть своего состояния перед выполнением следующей команды.
Прерывания происходят асинхронно с работой процессора и непредсказуемо, программист ни коим образом не может предугадать, в каком именно месте работы программы произойдет прерывание.
Слайд 5Внутренние прерывания
Внутренние прерывания (исключениями происходят синхронно выполнению программы при появлении аварийной ситуации
в ходе исполнения некоторой инструкции программы.
Примерами исключений являются деление на нуль, ошибки защиты памяти, обращения по несуществующему адресу, попытка выполнить привилегированную инструкцию в пользовательском режиме и т. п.
Исключительные ситуации обнаруживаются процессором во время выполнения команд.
Процессор при переходе на выполнение исключительной ситуации сохраняет часть своего состояния перед выполнением текущей команды.
Исключительные ситуации возникают синхронно с работой процессора, но непредсказуемо для программиста, если только тот специально не заставил процессор делить некоторое число на ноль.
Слайд 6Внутренние прерывания
Бывают исправимые и неисправимые.
К исправимым относятся такие исключительные ситуации, как
отсутствие нужной информации в оперативной памяти.
Неисправимые исключительные ситуации обычно возникают в результате ошибок в программах. Обычно операционная система реагирует на такие ситуации завершением программы, вызвавшей исключительную ситуацию.
Слайд 7Программные прерывания
Программное прерывание возникает при выполнении особой команды процессора, выполнение которой имитирует
прерывание, то есть переход на новую последовательность инструкций. Программные прерывания – это удобный способ вызова процедур ОС.
Программные прерывания имеют следующие свойства:
Программное прерывание происходит в результате выполнения специальной команды.
Процессор при выполнении программного прерывания сохраняет свое состояние перед выполнением следующей команды.
Программные прерывания, естественно, возникают синхронно с работой процессора и абсолютно предсказуемы программистом.
Слайд 8Прерывания
Аппаратные прерывания обрабатываются драйверами соответствующих внешних устройств;
Внутренние прерывания обрабатываются специальными модулями
ядра;
Программные прерывания обрабатываются процедурами ОС, обслуживающими системные вызовы.
Слайд 9Способы выполнения прерываний
Векторный – в процессор передается номер вызываемой процедуры обработки прерывания;
Опрашиваемый
– процессор вынужден последовательно опрашивать потенциальные источники запроса прерывания.
Слайд 10Обработка прерываний.
Применяемый в ОС механизм обработки внутренних и внешних прерываний зависит от
того, какая аппаратная поддержка обработки прерываний обеспечивается конкретной аппаратной платформой.
Суть принятого на сегодня механизма состоит в том, что каждому возможному прерыванию процессора (будь то внутреннее или внешнее прерывание) соответствует некоторый фиксированный адрес физической оперативной памяти.
Слайд 11Обработка прерываний.
Каждое прерывание имеет свой номер (IRQ) и с ним связана определенная
подпрограмма.
Когда вызывается прерывание, процессор приостанавливает свою работу и происходит передача управления на ячейку оперативной памяти с соответствующим адресом (вектор прерывания) и происходит обработка прерывания.
Вектор прерываний – это адрес ячейки памяти, где находится программа по обработке данного прерывания.
Слайд 12Обработка прерываний
Аппаратные прерывания относятся к прерываниям низшего уровня и им присваиваются младшие
номера, обслуживает их базовая система в/в. Внутренние и программные прерывания относятся к верхнему уровню, имеют большие номера и обслуживает базовый модуль.
Слайд 13Если произошло прерывание, то
Управление передается ОС;
ОС запоминает состояние прерванного процесса (контекст);
ОС анализирует
тип прерывания и передает управление соответствующей программе обработки этого прерывания;
После обработки прерывания процессор возвращается к выполнению прерванного процесса либо начинает обслуживать процесс с наивысшим приоритетом
Слайд 14Приоритезация
Механизм прерываний поддерживает приоритезацию прерываний.
Приоритезация означает, что все источники делятся на классы
и каждому классу назначается свой уровень приоритета на прерывание.
При одновременном поступлении запросов прерываний из разных классов выбирается запрос, имеющий наивысший приоритет.
Например, заявки, поступающие от процессора, удовлетворяются немедленно.