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