'

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

Понравилась презентация – покажи это...





Слайд 0

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


Слайд 1

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


Слайд 2

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


Слайд 3

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


Слайд 4

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


Слайд 5

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


Слайд 6

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


Слайд 7

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


Слайд 8

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


Слайд 9

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


Слайд 10

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


Слайд 11

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


Слайд 12

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


Слайд 13

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


Слайд 14

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


Слайд 15

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


Слайд 16

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


Слайд 17

Прерывания DPC или диспетчеризация Для выполнения отложенных операций диспетчеризации процессов, например, при перераспределении процессорного времени на глубоко вложенных частях программного кода Процессор откладывает выполнение прерываний диспетчеризации в том случае, когда IRQL находится на уровне DPC/dispatch или выше После того, как уровень IRQL понижается прерывания DPC могут быть выполнены


Слайд 18

Обработка DPC


×

HTML:





Ссылка: