Обеспечение отказоустойчивости ПО АС
Невозможность обеспечить в процессе создания АС ее абсолютную защищенность от угрозы отказа функционирования даже при отсутствии злоумышленных воздействий заставляет искать дополнительные методы и средства повышения безопасности функционирования ПО на этапе эксплуатации. Для этого разрабатываются и применяются методы оперативного обнаружения дефектов при исполнении программ и искажений данных введением в них временной, информационной и программной избыточности. Эти же виды избыточности используются для оперативного восстановления искаженных программ и предотвращения возможности развития угроз до уровня, нарушающего безопасность АС.
Для обеспечения высокой надежности и безопасности функционирования АС необходимы вычислительные ресурсы для максимально быстрого обнаружения проявления дефектов, возможно точной классификации типа уже имеющихся и вероятных последствий искажений, а также для автоматизированных мероприятий, обеспечивающих быстрое восстановление нормального функционирования АС. Неизбежность ошибок в сложных АС, искажений исходных данных и других аномалий приводит к необходимости регулярной проверки состояния и процесса исполнения программ, а также сохранности данных. В процессе проектирования требуется разрабатывать надежные и безопасные программы и базы данных, устойчивые к различным возмущениям и способные сохранять достаточное качество результатов во всех реальных условиях функционирования. В любых ситуациях прежде всего должны исключаться катастрофические последствия дефектов и длительные отказы или в максимальной степени смягчаться их влияние на результаты, выдаваемые пользователю.
Временная избыточность состоит в использовании некоторой части производительности компьютера для контроля исполнения программ и восстановления (рестарта) вычислительного процесса. Для этого при проектировании АС должен предусматриваться запас производительности, который затем будет использоваться системами контроля и для повышения надежности и безопасности функционирования. Значение временной избыточности зависит от требований к безопасности функционирования или обработки информации и находится в пределах от 5...10% производительности до трех - четырехкратного дублирования в мажоритарных вычислительных комплексах.
Информационная избыточность состоит в дублировании накопленных исходных и промежуточных данных, обрабатываемых программами. Избыточность используется для сохранения достоверности данных, которые в наибольшей степени влияют на нормальное функционирование АС и требуют значительного времени на восстановление. Такие данные обычно характеризуют некоторые интегральные сведения о внешнем управляющем процессе; в случае их разрушения может прерваться процесс управления внешними объектами или обработки их информации, отражающийся на безопасности АС.
Программная избыточность используется для контроля и обеспечения достоверности наиболее важных решений по управлению и обработке информации. Она заключается в сопоставлении результатов обработки одинаковых исходных данных разными программами и исключении искажения результатов, обусловленных различными аномалиями. Программная избыточность необходима также для реализации средств автоматического контроля и восстановления данных с использованием информационной избыточности и для функционирования всех средств защиты, имеющих временную избыточность.
Последовательный характер исполнения программ центральным процессором приводит к тому, что средства оперативного программного контроля включаются после выполнения прикладных и сервисных программ. Поэтому средства программного контроля обычно не могут обнаруживать возникновение искажения вычислительного процесса или данных (первичную ошибку) и фиксируют, как правило, только последствия первичного искажения (вторичную ошибку). Результаты первичного искажения в ряде случаев могут развиваться во времени и принимать катастрофический характер отказа при увеличении времени запаздывания в обнаружении последствий первичной ошибки.
Обеспечение отказоустойчивости ПО АС применимо в основном к прикладному программному обеспечению, так как в этом случае реализация задачи контроля возлагается на операционную систему. Что же касается самой операционной системы, то данный подход здесь практически не работает, так как для нее потребуется своя контролирующая операционная "сверхсистема", которую также надо контролировать, и т.д. Поэтому для операционных систем применяют методы предотвращения неисправностей в ПО.