Similar presentations:
ОС_Лекция_Обработка прерываний_осень 2024
1.
Операционные системы2.
ЛекцияВвод/вывод. Обработка прерываний
3.
Ввод/вывод. Обработка прерыванийВсе современные операционные системы управляются
прерываниями.
После завершения загрузки они запускаются только в
результате прерываний.
3
4.
ПримерПусть работающая программа выдает запрос на чтение
данных с жесткого диска. Запрос программы на чтение
вызывает запуск драйвера устройства.
1. Драйвер устройства загружает соответствующие
регистры в контроллер устройства, чтобы начать
операцию чтения. Когда это сделано, для выполнения
на CPU выбирается какая-то другая программа.
4
5.
Пример2. Контроллер устройства отвечает, проверяя содержимое
этих регистров, и определяет (1) что это операция чтения и (2)
какие данные должны быть прочитаны.
3. Контроллер начинает передачу данных с устройства в его
локальный буфер.
4. Когда передача данных завершена, контроллер устройства
информирует драйвер устройства о завершении своей
операции.
5. Драйвер устройства запускается снова. Он отвечает за
оставшуюся часть работы, которая включает уведомление
операционной системы о завершении ввода-вывода и
передачу данных в соответствующее место в памяти.
5
6.
Обработка прерыванийПрерывание
—
это
временный
перерыв
в
непрерывности процесса, работающего на процессоре,
чтобы отреагировать на какое-то условие, требующее
внимания.
6
7.
Обработка прерыванийПрерывания - механизм, позволяющий координировать
параллельное функционирование отдельных устройств
вычислительной системы, реагировать на особые
состояния, возникающие при работе процессора.
Прерывание — это принудительная передача
управления от выполняемой программы системе (а
через нее — к соответствующей программе обработки
прерывания),
происходящая
при
возникновении
определенного события.
7
8.
Обработка прерыванийКогда происходит прерывание, состояние процессора
сохраняется, и запускается специальный код, который
обрабатывает
конкретное
состояние,
требующее
внимания. Этот код называется подпрограммой
обслуживания прерывания (ISR) или обработчиком
прерывания.
Устройство, требующее внимания, может запросить
прерывание, отправив сигнал процессору. Этот сигнал
называется запросом на прерывание.
8
9.
Виды прерыванийАсинхронные (внешние/аппаратные) – это события,
которые исходят от внешних аппаратных устройств и
могут произойти в любой произвольный момент.
Пример:
перезагрузка (от кнопки перезагрузки или от таймера);
прерывание от «железа»;
нажатие клавиш клавиатуры и т.д.
9
10.
Виды прерыванийСинхронные (внутренние) – это события в самом
процессоре как результат нарушения каких-то условий
при исполнении машинного кода.
Пример:
деление на ноль;
переполнение стека;
недопустимый код операции;
обращение к недопустимым адресам памяти;
прерывание от конвейера инструкций;
прерывание от конвейера данных.
10
11.
Виды прерыванийПрограммные
(частный
случай
внутреннего
прерывания) – инициируются исполнением специальной
инструкции в коде программы.
Примере:
выполнение специальной инструкции процессора.
11
12.
Прерывания12
13.
Механизм обработки прерываний1. Установление факта прерывания.
2. Запоминание состояния прерванного процесса
вычислений.
3. Управление аппаратно передается на подпрограмму
обработки прерывания.
4. Сохранение информации о прерванной программе.
5. Собственно выполнение программы, связанной с
обработкой прерывания.
6. Восстановление информации, относящейся к
прерванному процессу.
7. Возврат на прерванную программу.
13
14.
Обработка прерываний14
15.
Обработка прерываний1. Устройство выдает запрос на прерывание, посылая
сигнал на системную шину.
2. Сигнал принимает CPU.
3. CPU сохраняет значение программного счетчика (ПК).
4. Он загружает в ПК начальный адрес процедуры
обслуживания прерывания для этого устройства.
5. Содержимое остальных регистров сохраняется в
соответствующем месте.
6. Выполняется процедура обслуживания прерывания
(ISR).
7. Когда ISR завершается, сохраненные регистры
восстанавливаются, и ПК загружается с сохраненным
значением; прерванное вычисление возобновляется.
15
16.
Обработка прерываний16
17.
Обработка прерыванийМетод 1: Опрос устройств
1. Процессор получает IRQ, но не указывает, какое
устройство вызвало прерывание.
2. Есть один ISR, который запускается при
возникновении прерывания. Он отправляет каждому
устройству сигнал с вопросом типа:
«Вы только что отправили IRQ?».
Первый, ответивший «да», будет обслуживаться.
17
18.
Обработка прерыванийМетод 2: Векторные прерывания
1. Линии прерывания на шине являются векторными:
каждое устройство может отправить свое удостоверение
вместе с IRQ. Когда CPU получает IRQ, он может
извлечь идентификатор устройства, которое нуждается
в обслуживании.
Идентификатор
значение.
представляет
собой
целочисленное
18
19.
Обработка прерываний2. Система поддерживает таблицу обычно в малом
объеме памяти, которая сопоставляет идентификатор
каждого целочисленного устройства с начальным
адресом его ISR. Эта таблица называется вектором
прерываний или таблицей векторов прерываний.
19
20.
Обработка прерываний20
21.
Виды прерыванийВ зависимости от источника, прерывания подразделяются на:
➢ аппаратные;
➢ программные;
➢ исключения.
21
22.
Классификация прерываний➢ внешние;
➢ внутренние.
22
23.
Внешние прерывания1. Внешние прерывания возникают по сигналу какогонибудь внешнего устройства.
2. Внешние прерывания подразделяются на немаскируемые
и маскируемые.
23
24.
Маскировка прерыванийМаскируемые прерывания генерируются контроллером
прерываний по заявке определенных периферийных
устройств.
Немаскируемые прерывания инициируют источники,
требующие безотлагательного вмешательства со стороны
микропроцессора.
24
25.
Система прерыванийСистема прерываний - это совокупность программных
и аппаратных средств, реализующих механизм
прерываний.
25
26.
Система прерываний. Аппаратныепрерывания
➢ выводы микропроцессора;
➢ INTR - вывод для входного сигнала запроса на прерывание;
➢ NMI - вывод для входного сигнала немаскируемого
прерывания;
➢ INTA - вывод для выходного сигнала подтверждения
получения сигнала прерывания микропроцессором;
➢ программируемый контроллер прерываний;
➢ внешние устройства.
26
27.
Система прерываний.Программные прерывания
➢ таблица векторов прерываний;
➢ два флага в регистре флагов flags/eflags;
➢ машинные команды микропроцессора.
27
28.
Вектора прерыванийВектор прерывания для определенного номера прерывания
— адрес обработчика этого прерывания.
Таблица векторов прерываний содержит адреса
обработчиков прерываний для всех номеров прерываний.
Расположение таблицы векторов прерывания определяется
конфигурацией железа (в том числе переключателей).
28
29.
Вектора прерыванийВектор прерывания для определенного номера прерывания
— адрес обработчика этого прерывания.
Таблица векторов прерываний содержит адреса
обработчиков прерываний для всех номеров прерываний.
Расположение таблицы векторов прерывания определяется
конфигурацией железа (в том числе переключателей).
29
30.
Вектора прерываний30
31.
Пример таблицы векторов прерыванийпроцессора ARM
➢ Reset – включение питания/нажатие RESET
➢ Undefined instruction – считана несуществующая
инструкция
➢ Software interrupt – выполнение инструкции SWI
➢ Prefetch abort – инструкция не считалась
➢ Data abort – данные не считались
➢ Reserved – не используется
➢ IRQ – прерывание от «железа»
➢ FIQ - «срочное» прерывание от «железа»
31
32.
Характеристики системы прерываний➢ Общее число запросов прерывания(входов в систему
прерывания).
➢ Время реакции — время между появлением запроса
прерывания и моментом прерывания текущей программы.
➢ Затраты времени на переключение программ (издержки
прерывания) равны суммарному расходу времени на
запоминание и восстановление состояния программы.
➢ Глубина прерывания – максимальное число программ,
которые могут прерывать друг друга.
➢ Число классов (уровней) прерывания.
32
33.
Временная диаграмма процессапрерывания
33
34.
Процессы прерывания с различнойглубиной
34