Я хочу знать, какие потоки обрабатывают прерывания устройства. Что происходит, когда во время работы потока пользовательского режима происходит прерывание? Также получают ли другие пользовательские потоки возможность запускаться, когда система обрабатывает прерывание?
Пожалуйста, предложите мне несколько справочных материалов, описывающих, как прерывания обрабатываются окнами.
3 ответа
Сами прерывания устройства (обычно) обрабатываются любым потоком, имеющим процессор, который принял прерывание, но в кольце 0 и на другом уровне защиты. Это ограничивает некоторые действия, которые может предпринять обработчик прерывания, поскольку большую часть времени текущий поток не будет связан с потоком, ожидающим наступления события, на которое указывает прерывание.
Само ядро имеет закрытый исходный код и документируется только через его внутренний API. Этот API предоставляется авторам драйверов устройств и описывается в наборах для разработки драйверов.
Некоторые ресурсы для начала:
Любая версия Внутренние компоненты Microsoft Windows от Соломона и Руссинович. Текущая вроде 4-я редакция, но поможет даже старая редакция.
Windows DDK теперь переименован в WDK. Его документация также доступна в Интернете. Обязательно прочтите Руководство по созданию режима ядра...
Sysinternals содержит инструменты и статьи для изучения и объяснения поведения ядра. Раньше это был независимый сайт, пока Microsoft не устала от Марка Руссиновича, который, казалось, знал больше о том, как работает ядро, чем они. ;-)
Обратите внимание, что исходный код многих распространенных драйверов устройств включен в DDK в примерах. Хотя производственные версии почти наверняка различаются, чтение примеров драйверов может ответить на некоторые вопросы, даже если вы не хотите создавать драйвер самостоятельно.
Как и любая другая операционная система, Windows обрабатывает прерывания в режиме ядра с повышенным уровнем приоритета прерывания (я думаю, они называют их IRPL, но я не знаю, что означает «R»). Любой пользовательский поток или поток ядра нижнего уровня, работающий на том же компьютере, будет прерван на время обработки запроса прерывания и возобновится после завершения обработки прерывания.
Чтобы узнать больше о прерываниях устройств в Windows, вам необходимо изучить разработку драйверов устройств. Это нишевая тема, я не думаю, что вы можете найти много полезных ресурсов в Интернете, и вам, возможно, придется искать книгу или учебный курс.
В любом случае Windows обрабатывает прерывания с помощью уровней запроса прерывания (IRQL) и отложенных вызовов процедур. Прерывание обрабатывается в режиме ядра, который работает с более высоким приоритетом, чем пользовательский режим. Правильный обработчик прерывания должен реагировать очень быстро. Он выполняет только абсолютно необходимые операции и регистрирует отложенный вызов процедуры для запуска в будущем. Это произойдет, когда система находится на уровне запроса прерывания.
Похожие вопросы
Связанные вопросы
Новые вопросы
windows
Написание программного обеспечения, специфичного для операционной системы Microsoft Windows: API-интерфейсы, поведение и т. Д. ОБЩАЯ ПОДДЕРЖКА WINDOWS НЕВОЗМОЖНА. Вопросы поддержки можно задать на https://superuser.com