Изменения внутреннего устройства ядра Windows Server 2008 - Инфраструктура WHEA

ОГЛАВЛЕНИЕ

Инфраструктура WHEA

Инфраструктура WHEA, входящая в Windows Server 2008, обещает упростить управление сбоями оборудования и обеспечить упреждающий отклик на ошибки, не являющиеся неустранимыми. Зачастую серверы должны обеспечивать строгие гарантии бесперебойной работы, поэтому в таких системах жизненно важной является своевременная идентификация ошибок и отклик на их возникновение.

Анализ сбоев, предоставленный корпорации Майкрософт посредством OCA (Online Crash Analysis), показывает, что приблизительно 10 процентов сбоев операционных систем является реакцией на сбой оборудования, но определение глубинной причины этих сбоев оказывается сложным или невозможным из-за того, что оборудование предоставляет недостаточно информации для фиксации сбоя. Кроме этого, до появления Windows Server 2008, в системе Windows отсутствовали встроенная поддержка для текущего контроля за работоспособностью устройств и средства исправления или уведомления о грозящем сбое. Причина этого заключается в том, что не существует общего формата ошибок устройств и не поддерживается программное обеспечение, управляющее обработкой ошибок.

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


Рис. 2 Инфраструктура WHEA для создания отчетов об ошибках

Подсистема ETW появилась в Windows 2000, и использование ETW в архитектуре WHEA облегчает производителям оборудования и поставщикам программного обеспечения разработку управляющих диагностикой устройств приложений, которые работают с событиями WHEA. При возникновении события, грозящего сбоем системы, WHEA гарантирует сохранение записи о неустранимой ошибке в файле аварийной копии памяти, чтобы администраторы могли определить основную причину сбоя.

Другой важной частью архитектуры WHEA является драйвер аппаратных ошибок, специфичных для платформы (PSHED), находящийся в библиотеке %Systemroot%\System32\Pshed.dll. Ядро скомпоновано с PSHED, и драйвер взаимодействует с оборудованием платформы и оборудованием с микропрограммным обеспечением, выполняя, по существу, роль транслирующего слоя между интерфейсом уведомлений об ошибках и интерфейсом API архитектуры WHEA, обеспечивающим отчеты об ошибках. Майкрософт поставляет PSHED для всех архитектур платформы (x86, x64, Itanium), а драйвер PSHED разработан по модели подключаемого модуля, чтобы производители и поставщики оборудования могли переопределять поведения по умолчанию на поведения, характерные для их платформ.

Наконец, в компоненты системы, взаимодействующие с другими источниками ошибок (включая драйверы устройств, слой абстрагирования оборудования (HAL) и ядро), можно внедрить обработчики ошибок оборудования низкого уровня (LLHEL), обрабатывающие состояние ошибки на начальном этапе. Задача обработчика LLHEL заключается в извлечении из устройства информации об ошибке, уведомлении драйвера PSHED, чтобы он мог собрать дополнительную информацию об ошибке, характерную для платформы, и затем обратиться к интерфейсу API архитектуры WHEA, обеспечивающему отчеты об ошибках.