Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы ОС.docx
Скачиваний:
45
Добавлен:
22.09.2019
Размер:
3.18 Mб
Скачать

4. Аппаратные прерывания. Выполнение операций ввода/вывода. (Лекция 1)

Прерывание (interrupt) – сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.

Асинхронные или внешние (аппаратные) прерывания – события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание (Interrupt request, IRQ);

Термин «ловушка» (trap) используется как синоним термина «прерывание». Ловушка – механизм передачи управления определенной части ОС - обработчику ловушек (trap handler).

Прерывания – асинхронные события (независимые от текущих команд). Могут быть включены и выключены. Программные прерывания генерируются ядром. Исключения (exceptions) – синхронное событие. Могут быть воспроизведены.

Фрейм ловушки (trap frame) – состояние прерываемого потока, сохраняемого в его стеке ядра. Обычно подмножество его полного контекста.

Программируемый контроллер прерываний (PICProgrammable Interrupt Controller). Стандартный PIC – 15 прерываний, однопроцессорные системы. APIC (Advanced PIC) – 256 прерываний, многопроцессорные системы.

Запрос прерывания – поиск процессором адреса ISR. Таблица диспетчеризации прерываний (IDTInterrupt Dispatch Table) – хранит адреса ISR, заполняется ОС при запуске.

Выполнение операций ввода/вывода

Шаг 1 – Системный вызов и переключение в режим ядра. Обмен с контроллером выполняет драйвер.

Шаг 2 – CPU передает управление обработчику прерывания, сохраняя PSW+PC. Другие регистры сохраняются обработчиком.

Шаг 3 – Восстановление регистров обработчиком. Восстановление PSW+PC.

Прерывание (interrupt) – сигнал устройства процессору об окончании работы устройства, сигнализирующий о завершении операции. Прерывает нормальный поток команд.

Обработчик прерывания (ISRinterrupt service routine) – программа, принимающая решение о порядке обработки результатов операции Input/Out.

5. Обработка прерываний в Windows. (Лекция 1)

Прерывание (interrupt) – сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.

Аппаратные прерывания – события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание (Interrupt request, IRQ);

Обработчик прерываний – специальная процедура, вызываемая по прерыванию для выполнения его обработки. Обработчики прерываний могут выполнять множество функций, которые зависят от причины, которая вызвала прерывание. Обработчик прерывания (ISRinterrupt service routine) – программа, принимающая решение о порядке обработки результатов операции I/O.

Уровни запросов прерывания (IRQLIRQ Levels) – внутренняя система управления приоритетом выполнения ISR. Связывание номеров прерываний с IRQL производится в HAL (модуле уровня абстрагирования от оборудования hardware abstraction layer). В многопроцессорной системе связывание IRQL и номера прерывания – динамическое.

При обработке прерывания c IRQL28 уровень IRQL CPU повышается до этой величины, все меньшие прерывания не обрабатываются (маскируются – прерывания, которые можно запрещать установкой соответствующих битов в регистре маскирования прерываний (в x86-процессорах – сбросом флага IF в регистре флагов)).

Ядро всегда стремится к IRQL CPU = 0.

В режиме пользователя IRQL CPU = 0.

High – остановка ядра. Inter-processor interrupt – запрос операции от другого процессора. Clock – системные часы, для распределения времени между потоками. Profile – используется при измерении производительности. Device – обработка прерываний от устройств ввода-вывода Passive – обычная работа, допустимы любые прерывания. DPC/APC – программные прерывания, генерируются ядром и драйверами. Начиная c DPC/dispatch для ISR недоступна подкачиваемая память.

Для регистрации драйверами ISR применяется объект «прерывание», хранящий ISR, IRQL, запись в IDT. Драйвер способен как подключать, так и отключать ISR (connect/disconnect an interrupt object). Объекты позволяют привязать к одному прерыванию несколько устройств (при правильном проектировании драйвера).

Например прерывание с номером 9 — прерывание от клавиатуры, которое генерируется при нажатии и при отжатии клавиши. Используется для чтения данных с клавиатуры. Обозначается в ОС как IRQ1, где IRQ – обозначение прерывания, а 1 – приоритет прерывания. Данные о запросах на прерывание можно проанализировать в диспетчере устройств.