Системные механизмы Windows

Содержание

Слайд 2

Системные механизмы

диспетчеризация ловушек, в т.ч. прерываний, DPC (deferred procedure call), APC (asynchronous

Системные механизмы диспетчеризация ловушек, в т.ч. прерываний, DPC (deferred procedure call), APC
procedure call), исключений и системных сервисов
диспетчер объектов исполнительной системы
системные рабочие потоки
LPC (local procedure call)
Kernel Event Tracing
Wow64

Слайд 3

1. Диспетчеризация ловушек

1. Диспетчеризация ловушек

Слайд 4

Ловушки (trap)

Прерывания (interrupt) – асинхронные события, которые могут произойти в любой момент,

Ловушки (trap) Прерывания (interrupt) – асинхронные события, которые могут произойти в любой
генерируемые, в основном, устройствами ввода-вывода и таймерами. Могут генерироваться программно.
Исключения (exception) – синхронные события, возникновение которых связано с выполнением определенных инструкций.
Механизм ловушек позволяет процессору перехватить управление над выполняемым потоком и передать управление специальной части ОС – обработчику ловушек (trap handler)

Слайд 5

Типовые ситуации активизации обработчика ловушек

Прерывания
Вызов системного сервиса
Аппаратные исключения
Программные исключения
Исключения, связанные с виртуальными

Типовые ситуации активизации обработчика ловушек Прерывания Вызов системного сервиса Аппаратные исключения Программные
адресами

Слайд 6

Общие принципы обработки ловушек

Возникновение прерывания или исключения
Переключение на стек режима ядра (если

Общие принципы обработки ловушек Возникновение прерывания или исключения Переключение на стек режима
прерванный процесс выполняется в режиме пользователя)
Запись статусной информации (контекста) процесса на стек ядра для последующего восстановления процесса
Создание фрейма ловушки (trap frame) на стеке ядра
Вызов соответствующего обработчика ловушки
Выполнение обработчика
Восстановление контекста прерванного процесса
Возобновление прерванного процесса

Слайд 7

Аппаратные прерывания

Генерируется устройствами ввода-вывода с целью получить от процессора время на их

Аппаратные прерывания Генерируется устройствами ввода-вывода с целью получить от процессора время на
обслуживание
Могут генерироваться системным программным обеспечением
Ядро может запретить прерывания
Для обработки прерываний устанавливаются специальные обработчики ловушек прерываний, которые передают управления ISR (interrupt service routing, процедуре обслуживания прерывания) или внутренней процедуре ядра

Слайд 8

Обработка аппаратных прерываний

Контроллер
прерываний

Устройство

Процессор

IRQ


IDT
(interrupt dispatch table)

IRQ транслируется в индекс
в таблице IDT, куда до

Обработка аппаратных прерываний Контроллер прерываний Устройство Процессор IRQ … IDT (interrupt dispatch
этого Windows
занесла указатели на обработчики
прерываний

Обработчик
прерывания

запрос на
прерывание

ISR

Процедура
ядра

Слайд 9

Уровень запросов прерываний (IRQL)

IRQL – interrupt request level – показывает, какие прерывания

Уровень запросов прерываний (IRQL) IRQL – interrupt request level – показывает, какие
могут быть получены указанным PIC (Programmable Interrupt Controller, программируемый контроллер прерываний)
Процессы могут изменять IRQL на платформах с программируемыми контроллерами прерываний, используя специальные системные вызовы – KeRaiseIrql и KaLowerIrql
Прерывания обрабатываются в соответствии с их уровнем – прерывания с более высоким IRQL могут прервать обработку прерываний с более низким IRQL

Слайд 10

Уровни запросов прерываний (на платформе x86)

Уровни запросов прерываний (на платформе x86)

Слайд 11

Уровни запросов прерываний (на платформе х64 и IA64)

Уровни запросов прерываний (на платформе х64 и IA64)

Слайд 12

Маскировка прерываний

Прерывания могут быть замаскированы, т.е. их получение PIC не может быть

Маскировка прерываний Прерывания могут быть замаскированы, т.е. их получение PIC не может
выполнено, если для него установлен соответствующий IRQL
Процессы могут изменять IRQL на платформах с программируемыми контроллерами прерываний, используя специальные системные вызовы – KeRaiseIrql и KaLowerIrql
При изменении IRQL необрабатываемые прерывания могут «материализоваться»

Слайд 13

Маскировка прерываний

Маскировка прерываний

Слайд 14

Маскировка прерываний на уровне HAL

Обращение к PIC – медленная операция, поэтому реально

Маскировка прерываний на уровне HAL Обращение к PIC – медленная операция, поэтому
она фактически не выполняется
На уровне HAL реализуется механизм отложенный IRQL (lazy IRQL)
Маска прерывания при этом не меняется – HAL фиксирует новый уровень прерывания
При возникновении прерывания с более низким IRQL HAL откладывает его выполнение до момента понижения уровня запроса прерывания

Слайд 15

Связь прерываний и IRQL

Механизм IRQL, реализованный в Windows, не поддерживается аппаратно
Конкретные устройства

Связь прерываний и IRQL Механизм IRQL, реализованный в Windows, не поддерживается аппаратно
определяются в системе драйвером шины, который в т.ч. выполняет назначение номеров прерываний (IRQ)
Драйвер шины обращается к уровню HAL, который и увязывает IRQ с уровнями IRQL
Трансляция IRQ-IRQL на разных платформах выполняется по-разному
Однопроцессорная х86: IRQL = 27-IRQ
Многопроцессорная x86: прямым перебором
x64 и IA64: путем деления вектора прерываний на 16

Слайд 16

Уровень ядра: объект прерывания

Уровень ядра: объект прерывания

Слайд 17

Программные прерывания

Диспетчеризация или DPC
Обработка прерываний, не критичных во времени
Обработка событий таймеров
APC
Асинхронный ввод-вывод

Программные прерывания Диспетчеризация или DPC Обработка прерываний, не критичных во времени Обработка

Слайд 18

Прерывания DPC или диспетчеризация

Для выполнения отложенных операций диспетчеризации процессов, например, при перераспределении

Прерывания DPC или диспетчеризация Для выполнения отложенных операций диспетчеризации процессов, например, при
процессорного времени на глубоко вложенных частях программного кода
Процессор откладывает выполнение прерываний диспетчеризации в том случае, когда IRQL находится на уровне DPC/dispatch или выше
После того, как уровень IRQL понижается прерывания DPC могут быть выполнены
Имя файла: Системные-механизмы-Windows.pptx
Количество просмотров: 148
Количество скачиваний: 1