Архитектура современных операционных систем
144 Рис. 4.24. Обработка прерывания от устройства (рис. 4.24.) происходит в 2 этапа. ISR драйвера получает управление на высоком уровне IRQL (2), поэтому он только сохраняет информацию из регистров устройства и ставит в очередь процедуру отложенного вызова DPC, которая эту информацию обрабатывает(3). После этого обработчик завершается. Управление снова получит диспетчер прерываний и понизит приоритет до уровня, который был на момент прерыва- ния. Как только текущий уровень IRQL станет ниже DPC, возникнет прерыва- ние DPC (4) и управление получит отложенная процедура драйвера, которая выполнит следующие действия: 1. сохранит результаты операции в IRP; 2. просмотрит очередь к драйверу. Если обнаружит там запросы, то за- пустит очередную операцию ввода/вывода на устройстве; 3. вернет заполненный IRP диспетчеру ввода/вывода; Процедуры рас- пределения Запуск ввода-вывода ISR DPC-процедуры IRQL устройства DPC APC IRQL DPC DPC 1.Устройство генерирует прерывание 2. Диспетчер пре- рываний передает управление ISR драйвера 3. ISR ставит в очередь DPC Драйвер 4. Прерывание DPC вызывает процедуру DPC драйвера
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy