Обработка прерываний в Windows - PullRequest
7 голосов
/ 03 апреля 2009

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

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

Ответы [ 3 ]

3 голосов
/ 03 апреля 2009

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

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

Некоторые ресурсы, с которых можно начать:

  • Любое издание Соломона и Руссиновича Microsoft Windows Internals . Нынешнее, похоже, четвертое издание, но даже старое издание поможет.

  • Windows DDK, теперь переименованный в WDK . Документация доступна онлайн тоже. Обязательно прочитайте Руководство по проектированию режима ядра ...

  • Sysinternals содержит инструменты и статьи для изучения и объяснения поведения ядра. Раньше это был независимый сайт, пока Microsoft не устала от того, что Марк Руссинович, похоже, знает больше о том, как работает ядро, чем они. ; -)

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

1 голос
/ 03 апреля 2009

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

0 голосов
/ 03 апреля 2009

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

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

...