Обработка сбоев аппаратуры
Улучшая общую надежность системы, следует заботиться не только об ошибках в программном обеспечении (хотя надежность программного обеспечения требует наибольшего внимания). Другая сторона, о которой необходимо подумать, – это ошибки во входных данных системы (ошибки пользователя). Обсуждавшиеся выше средства обнаружения ошибок могут быть применены и к ошибкам пользователей.
Наконец, еще один интересующий нас класс ошибок – сбои аппаратуры. В большинстве случаев они обрабатываются самой аппаратурой, либо за счет резервирования, как показано в подразд. 2.2.2, либо с помощью встроенных систем функционального контроля, как показано в подразд. 4.3. Некоторые сбои, однако, нельзя обработать только аппаратными средствами, они требуют помощи со стороны программного обеспечения. Ниже приводится список возможностей, которые часто бывают необходимы в программных системах для борьбы со сбоями аппаратуры.
1. Повторное выполнение операций. Многие сбои аппаратуры не постоянны (например, скачки напряжения, шум в телекоммуникационных линиях, колебания при механическом движении). Всегда имеет смысл попытаться выполнить операцию, искаженную сбоем (например, команду машины или операцию ввода-вывода), несколько раз, прежде чем принимать другие меры.
2. Восстановление памяти. Если обнаруженный случайный сбой аппаратуры вызывает искажение области основной памяти и эта область содержит статические данные (например, команды объектной программы), то последствия сбоя можно ликвидировать, повторно загрузив эту область памяти.
3. Динамическое изменение конфигурации. Если аппаратная подсистема, такая как центральный процессор, канал ввода-вывода, блок основной памяти или устройство ввода-вывода, выходит из строя, работоспособность системы можно сохранить, динамически исключая неисправное устройство из набора ресурсов системы.
4. Восстановление файлов. Системы управления базами данных обычно обеспечивают избыточность данных, сохраняя копию текущего состояния базы данных на выделенных устройствах ввода-вывода, регистрируя все изменения базы данных или периодически автономно копируя всю базу данных. Поэтому программы восстановления могут воссоздать базу данных в случае катастрофического сбоя ввода-вывода.
5. Контрольная точка/рестарт. Контрольная точка – это периодически обновляемая копия состояния прикладной программы или всей системы. Если происходит отказ аппаратуры, такой как ошибка ввода-вывода, сбой памяти или питания, программа может быть запущена повторно с последней контрольной точки.
6. Предупреждение отказов питания. Некоторые вычислительные системы, в особенности те, в которых используется энергозависимая память, предусматривают прерывание, предупреждающее программу о предстоящем отказе питания. Это дает возможность организовать контрольную точку или перенести жизненно важные данные во вторичную память.
7. Регистрация ошибок. Все сбои аппаратуры, с которыми удалось справиться, должны регистрироваться во внешнем файле, чтобы обслуживающий персонал мог получать сведения о постепенном износе устройств.