Архитектура современных операционных систем

132 Большинство программ обработки прерываний (ISR) расположены в ядре системы. Исключение составляют обработчики аппаратных прерываний, рас- положенные в драйверах соответствующих устройств. Поэтому драйвер должен иметь возможность при своем подключении ука- зать ядру адрес своего обработчика прерывания. Эта возможность реализована с помощью соответствующего объекта ядра «прерывание». Его основными атрибутами являются: - адрес обработчика прерывания; - IRQL; - элемент IDT. Когда драйвер загружается в систему, он с помощью специальной функции инициализации может создать объект «прерывание», задав тем самым ядру ад- рес своего ISR и уровень IRQL устройства. Windows NT позволяет подключать на один уровень прерывания несколько обработчиков. Тогда при возникновении прерывания диспетчер прерываний последовательно вызовет все обработчики, связанные с данным уровнем IRQL. При выгрузке драйвера соответствующий ему объект «прерывание» уни- чтожается, и соответствующий шлюз удаляется из IDT. На время своей работы ядро увеличивает текущий приоритет процессора до уровня «диспетчерский (DPC)». Поскольку именно на этом уровне работает планировщик, его диспетчерские прерывания не могут прервать работу ядра. На этом же уровне ведется обработка процедур отложенного вызова. Отложенный вызов процедур – это механизм, позволяющий запустить на выполнение какую-либо системную функцию, являющаяся менее важной, чем текущая работа. Для осуществления этого механизма ядро поддерживает специальный объ- ект ядра – DPC. Основным атрибутом этого объекта является адрес запускаемо- го системной функции. Объект DPC не виден в пользовательском режиме, по- скольку это специальный объект ядра.

RkJQdWJsaXNoZXIy MTY0OTYy