Лекция № 12
Это комплексное свойство из двух составляющих:
· безошибочность (correctness) – соответствие спецификации
· устойчивость (robustness), или отказоустойчивость (fault-tolerance) – способность продолжать нормальное функционирование после отказов программ или аппаратуры
Улучшение первого качества достигается хорошей технологией, предупреждающей ошибки (fault-avoidance). Однако 100% отсутствие ошибок недостижимо. Устойчивость должна быть относительно любых видов отказов (см. классификацию отказов ниже). Для ее поддержания создаются специальные программно-аппаратные средства.
Понятие отказа в технике
Отказ (failure) – по ГОСТу - нарушение работоспособности изделия и его соответствия требованиям технической документации. Применительно к программам (стандарт IEEE /ANSI): отказ – это неспособность функциональной единицы системы, зависящей от программы, выполнять требуемую функцию в заданных пределах.
Классификация причин отказов вообще и в HW / SW в частности:
A. Физические дефекты
|
|
A1. Внутренние (старение, износ)
A2. Внешние воздействия (радиация, высокая температура, …)
B. Ошибки людей
B1. Ошибки эксплуатации или взаимодействия
B2. Проектные ошибки
(Вопрос 1).
Состоянию отказа обычно предшествует промежуточное – неисправное – состояние (см. рис 12-1). Время нахождения системы в неисправном, но работоспособном состоянии называется латентным (скрытым) периодом отказа.
Рис. 12-1. Диаграмма состояний и переходов при отказе
Повреждение (fault) - неисправность уже появилась, но еще не проявилась вовне. Например, из-за отказа ячейки памяти исказилось ее содержимое, но оно еще не прочитано и не повлияло на вычислительный процесс. Отказ компонента - это повреждение системы. Поскольку системы имеют иерархическую структуру, каскад переключений повреждение – отказ обычно содержит несколько ступеней. Например, повреждение транзистора приведет к отказу логического элемента, только когда тот будет срабатывать, и это будет означать повреждение, например, процессора, которое приведет к его отказу в момент записи результата в память, что будет означать повреждение вычислительного устройства, которое проявится в виде отказа только когда этот результат будет выведен на внешнее устройство. Такой же каскадный процесс - при проявлении ошибки в иерархически организованной программе.
Восстановление (recovery) - этовозврат в исправное состояние путем:
а) ручного ремонта, замены, исправления
б) автоматически - задействованием резервов
в) самопроизвольно (обычно быстро)
В случае в) отказ называется сбоем. Т.е., сбой - это кратковременный самовосстанав-ливающийся отказ. Остальные отказы называются устойчивыми (по умолчанию просто отказ – это устойчивый отказ). В электронной аппаратуре сбои происходят на порядок чаще устойчивых. Их причины - флюктуации питания, ситуации "гонок" сигналов, альфа-частицы и др. В программах аналогично сбоям ведут себя время-зависимые ошибки - их называют "мерцающими" (blinking bugs). (Вопрос 2).
|
|
Типичный пример восстановления - с помощью резервной (backup) копии данных. Если выполнить восстановление в латентном периоде отказа, то он никогда не проявится вовне - в этом состоит идеальная отказоустойчивость. (Вопрос 3).