Вопрос

Я хочу знать, какие потоки обрабатывают прерывания устройства.Что происходит при прерывании выполнения потока пользовательского режима?Также получают ли другие пользовательские потоки возможность запускаться, когда система обрабатывает прерывание?

Пожалуйста, предложите мне какой-нибудь справочный материал, описывающий, как прерывания обрабатываются Windows.

Это было полезно?

Решение

Сами прерывания устройства (обычно) обрабатываются любым потоком, в котором был процессор, принявший прерывание, но в кольце 0 и на другом уровне защиты.Это ограничивает некоторые действия, которые может выполнять обработчик прерываний, поскольку большую часть времени текущий поток не будет связан с потоком, ожидающим наступления события, на которое указывает прерывание.

Само ядро имеет закрытый исходный код и документируется только через его внутренний API.Этот API предоставляется авторам драйверов устройств и описан в наборах для разработки драйверов.

Некоторые ресурсы, которые помогут вам начать:

Обратите внимание, что исходный код для многих распространенных драйверов устройств включен в DDK в примерах.Хотя производственные версии почти наверняка отличаются, ознакомление с примерами драйверов может ответить на некоторые вопросы, даже если вы не хотите внедрять драйвер самостоятельно.

Другие советы

Как и любая другая операционная система, Windows обрабатывает прерывания в режиме ядра с повышенным уровнем приоритета прерывания (я думаю, они называют их IRPL, но я не знаю, что означает буква "R").Любой пользовательский поток или поток ядра более низкого уровня, запущенный на том же компьютере, будет прерван во время обработки запроса на прерывание и будет возобновлен после завершения обработки ineterrupt.

Чтобы узнать больше о прерываниях устройства в Windows, вам необходимо изучить разработку драйвера устройства.Это узкоспециализированная тема, я не думаю, что вы сможете найти много полезных ресурсов в Интернете, и вам, возможно, придется поискать книгу или учебный курс.

В любом случае, Windows обрабатывает прерывания с помощью уровней запросов на прерывание (IRQLs) и Отложенные вызовы процедур.Прерывание обрабатывается в режиме ядра, который выполняется с более высоким приоритетом, чем пользовательский режим.Правильный обработчик прерываний должен реагировать очень быстро.Он выполняет только абсолютно необходимые операции и регистрирует Отложенный вызов процедуры для запуска в будущем.Это произойдет, когда система находится на уровне запроса прерывания.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top