Прерывание 8 - Исключение двойной ошибки ( #DF - Double Fault Exception )

Тип исключения - Abort (авария).
Описание
        Означает, что процессор обнаружил второе исключение, когда вызывал обработчик первого. Если процессор не может обработать эти исключения последовательно, он генерирует исключение двойной ошибки. Чтобы определить, когда процессор генерирует это исключение, исключения делятся на три класса: лёгкие (benign), способствующие (contributory) и страничные нарушения:

Таблица 1. Классы исключений и прерываний
Класс Номер вектора Описание
Лёгкие исключения и прерывания 1 Отладка
2 Прерывание NMI
3 Контрольная точка
4 Переполнение
5 Превышение границ BOUND
6 Недопустимая команда
7 Устройство не доступно
9 Превышение сегмента сопроцессора
10h Ошибка плавающей точки
11h Контроль выравнивания
12h Проверка аппаратуры
13h Ошибка плавающей точки SIMD
Все INT n
Все INTR
Способствующие исключения 0 Ошибка деления
0ah Недопустимый TSS
0bh Сегмент не присутствует
0ch Ошибка стека
0dh Общая защита
Страничные нарушения 0eh Страничное нарушение

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

Таблица 2. Условия генерации исключения двойной ошибки
Первое исключение Второе исключение
Лёгкое Способствующее Страничное нарушение
Лёгкое Последовательная обработка Последовательная обработка Последовательная обработка
Способствующее Последовательная обработка Двойная ошибка Последовательная обработка
Страничное нарушение Последовательная обработка Двойная ошибка Двойная ошибка


        Если при попытке вызова обработчика исключения двойной ошибки возникает ещё одно исключение, то процессор переходит в режим зависания, похожий на режим, вызванный командой HLT, в котором прекращается выполнение команд, пока не будет получен сигнал прерывания NMI, прерывания SMI, аппаратного сброса или INIT.
        Если исключение двойной ошибки возникает при обработке прерывания NMI, то только аппаратный сброс позволит процессору начать выполнение команд.
Код ошибки: всегда 0.
Указатель кода: сохранённые значения CS:EIP не определены.
Изменение состояния программы: не определено. Программа или задача не может быть возобновлена.

Вопросы? Замечания? Пишите: sasm@narod.ru

  Copyright © Александр Семенко.
TopList

Hosted by uCoz