1.05M
Category: programmingprogramming

ОС_Лекция_Обработка прерываний_осень 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

35.

Спасибо за внимание!
English     Русский Rules