- •Котенок Андрей Владимирович
- •Содержание
- •Введение
- •Отказоустойчивые системы управления
- •Программная составляющая критичных по надежности систем управления
- •Надежностная характеристика программного модуля
- •Обеспечение надежности программ с помощью введения избыточности
- •Описание объекта исследования и его анализ
- •Методы повышения надежности программных систем
- •Моноверсионные модели
- •Обнаружение ошибок
- •Обработка исключительных ситуаций
- •Контрольная точка и перезапуск
- •Дублирование процессов
- •Разнообразие данных
- •Модели восстанавливающихся блоков
- •Простая модель восстанавливающихся блоков
- •Обобщенная модель восстанавливающихся блоков
- •Параллельная модель восстанавливающихся блоков
- •Мультиверсионное программирование
- •Мультиверсионное программирование с самопроверкой
- •Модель согласованных восстанавливающихся блоков
- •T/(n-1)-версионное программирование
- •Мультиверсионная среда исполнения оптимизационных алгоритмов: программная реализация
- •Анализ требований к среде мультиверсионного исполнения
- •Требования для обеспечения простоты
- •Требования для обеспечения производительности
- •Требования для обеспечения компактности
- •Требования для обеспечения надежности
- •Требования для обеспечения универсальности
- •Применение мультиверсионной методологии к системе управления
- •Выбор способа реализации программных модулей и их взаимодействия со средой исполнения
- •Конструирование программной модели
- •Реализация общих алгоритмов функционирования среды исполнения
- •Реализация алгоритма выявления отказов программных модулей
- •Реализация алгоритмов принятия решения о корректности или ошибочности состояний мультиверсий
- •Алгоритм голосования абсолютным большинством (габ)
- •Алгоритм голосования согласованным большинством (гсб)
- •Алгоритм нечеткого голосования согласованным большинством (нгсб)
- •Медианное голосование
- •Программный комплекс среды мультиверсионного исполнения
- •Теоретическое исследование предельной надежности мультиверсионных моделей проектирования отказоустойчивых систем
- •Модель восстанавливающихся блоков
- •Мультиверсионное программирование
- •Исследование результатов работы реализованной среды исполнения
- •Применение методологии мультиверсионного программирования к оптимизационным алгоритмам отказоустойчивых систем
- •Методология выбора наилучшего алгоритма оптимизации
- •Классы тестовых функций Класс одномерных унимодальных функций.
- •Класс многоэкстремальных функций нескольких переменных.
- •Анализ результатов
- •Заключение
- •Список использованных источников
Обнаружение ошибок
Эффективное применение методов отказоустойчивости моноверсионных систем предполагает наличие двух признаков: самозащита и самопроверка [50] Свойство самозащитыозначает, что модуль должен уметь защитить себя от некорректных данных, полученных от внешних взаимодействующих модулей (верификация данных) [13]. Самопроверка подразумевает что модуль должен уметь обнаруживать внутренние ошибки и принимать меры для предотвращения их распространения на другие модули. Степень, с которой механизм самозащиты используется в системе, ограничивается стоимостью дополнительной избыточностью. Заметим, что данная избыточность не повышает функциональность системы, а только лишь качество продукта, в то же время, снижая производительность системы. На практике использование методов повышения отказоустойчивости является компромиссом между функциональностью, производительностью, сложностью и надежностью.
Существует несколько видов проверок для обнаружения ошибок [39]:
Проверка репликациипредставляет собой механизм обнаружения ошибок путем сравнения выходов модулей;
Проверка сроковприменима к системам и модулям, в спецификации которых содержатся ограничения времени реакции системы. Исходя из этих ограничений, разрабатываются проверки для выявления отклонений от приемлемого поведения модуля;
Обратныепроверки используют выход модуля для вычисления, основываясь на функции модуля, возможных входов. Если вычисленные входы не соответствуют действительному входу, то происходит ошибка.
Проверки кодаиспользуют избыточность для представления информации с четкой связью между рабочими и избыточными данными. Обнаружение ошибок проверяет эту связь до и после операций. Примером таких проверок является контрольная сумма (также коды Хэмминга, циклические коды и т.д.) [80]. Данный вид проверок особенно эффективен, когда данные перекомпоновываются либо передаются из одной точки в другую без изменений. Многие арифметические операции также обладают свойствами между рабочими и избыточными данными, и поэтому могут быть проверены на ошибки своего выполнения.
Проверка допустимостиданных использует семантические свойства данных (диапазон, скорость изменения, последовательность) для обнаружения ошибок.
Структурнаяпроверка использует известные свойства структуры данных. Например, в списках, очередях и деревьях можно проверить правильность ссылок на элементы. Структурные проверки можно сделать более эффективными расширив структуру данных дополнительной (избыточной) информацией. Например, для деревьев можно хранить счетчик с количеством дочерних элементов, для списков – с общим количеством элементов, а также индивидуальные идентификаторы для всех элементов [47] [48].
Другим средством предупреждение отказов, являются проверки во время выполнения, такие как проверка деления на ноль, переполнение, нехватка памяти и т.д.. Несмотря на то, что такие проверки не связанны непосредственно с логикой задачи, тем не менее, они представляют собой эффективное средство обнаружения ошибок спецификации.
Несмотря на множество методов обнаружения ошибок, практика показывает, что невозможно предвидеть все отказы и сгенерировавшие их ошибки. Это связано в первую очередь с природой ошибок программного обеспечения [50].