Тройной отказ

редактировать

На x86 архитектура компьютера, тройной сбой - это особый вид исключения, генерируемый ЦП, когда исключение возникает, когда ЦП пытается вызвать обработчик исключений double fault, который сам обрабатывает исключения, возникающие при попытке вызвать обычный обработчик исключений. Процессоры

x86, начинающиеся с 80286, вызовут цикл выключения при обнаружении тройной ошибки. Обычно это приводит к тому, что оборудование материнской платы инициирует сброс ЦП, который, в свою очередь, вызывает перезагрузку всего компьютера.

Содержание

  • 1 Возможные причины тройных сбоев
  • 2 Виртуальные машины
  • 3 Другое применение
  • 4 Ссылки

Возможные причины тройных сбоев

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

Виртуальные машины

В QEMU тройная ошибка создает дамп виртуальной машины в консоли с указателем инструкции, установленным на инструкцию, которая вызвала первое исключение.

При использовании Intel VT-x тройная ошибка вызывает выход виртуальной машины с причиной выхода 2. Причина выхода сохраняется в VMCS и может обрабатываться программным обеспечением VMM.

Другое применение

Процессор Intel 80286 был первым процессором x86, который представил теперь повсеместный защищенный режим. Однако 286 не может вернуться к базовому 8086-совместимому «реальному режиму » без перезагрузки процессора, что может быть выполнено только с использованием оборудования, внешнего по отношению к ЦП. Для IBM AT и совместимых с ним задокументированный метод выполнения этого заключался в использовании специальной функции на контроллере клавиатуры Intel 8042, которая будет подтверждать вывод RESET процессора. Однако было обнаружено, что намеренный тройной сбой в работе ЦП приводит к тому, что переход происходит намного быстрее и чище, что позволяет многозадачным операционным системам переключаться вперед и назад с высокой скоростью.

Некоторые ядра операционных систем, например Linux, по-прежнему используют тройные ошибки в качестве последней попытки в процессе перезагрузки, если перезагрузка ACPI не удалась. Это делается установкой регистра IDT в 0 и последующей выдачей прерывания. Поскольку теперь длина таблицы равна 0, все попытки доступа к ней заканчиваются неудачей, и процессор генерирует тройную ошибку.

Ссылки

Последняя правка сделана 2021-06-11 11:50:28
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте