Архитектура современных операционных систем
134 Процедура, работающая в рамках APC, выполняется в контексте своего по- тока, поэтому на APC не действует ограничение как на DPC. Использование других программных прерываний, кроме этих двух (DPC и APC), в системе запрещено. Они могут вырабатываться только ядром. Обработка исключений В отличие от прерываний исключения обычно вырабатываются синхронно (параллельно с программой). WindowsNT поддерживает обработку ядром следующих аппаратно- зависимых исключений: нарушение защиты памяти, целочисленное переполне- ние, деление на 0 с плавающей точкой, точка останова, недопустимая команда, пошаговое выполнение, отказ страницы, целочисленное деление на 0, перепол- нение числа с плавающей точкой, ненормализованный операнд, неверное вы- равнивание данных, привилегированная команда (она может выполняться толь- ко в режиме ядра), нарушение сторожевой страницы, превышение квот. При возникновении исключения управление передается обработчику ло- вушки, который сохраняет состояние системы и вызывает диспетчер исключе- ний. Если исключение произошло в режиме ядра, то обработчик исключения вызывает специальную процедуру поиска блочного обработчика, который дол- жен обработать это исключение. Если исключение произошло в пользовательском режиме, то обработка сложнее. Сначала диспетчер исключений проверяет, не задана ли для потока, в кото- ром произошло исключение, порта отладки (то есть поток работает под отлад- чиком). Если порт задан, то диспетчер исключения обращается по этому порту к отладчику, чтобы тот обработал это исключение. Если порт не задан или отладчик не смог обработать исключение, то дис- петчер вызывает процедуру поиска блочного обработчика исключений.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy