- •Котенок Андрей Владимирович
- •Содержание
- •Введение
- •Отказоустойчивые системы управления
- •Программная составляющая критичных по надежности систем управления
- •Надежностная характеристика программного модуля
- •Обеспечение надежности программ с помощью введения избыточности
- •Описание объекта исследования и его анализ
- •Методы повышения надежности программных систем
- •Моноверсионные модели
- •Обнаружение ошибок
- •Обработка исключительных ситуаций
- •Контрольная точка и перезапуск
- •Дублирование процессов
- •Разнообразие данных
- •Модели восстанавливающихся блоков
- •Простая модель восстанавливающихся блоков
- •Обобщенная модель восстанавливающихся блоков
- •Параллельная модель восстанавливающихся блоков
- •Мультиверсионное программирование
- •Мультиверсионное программирование с самопроверкой
- •Модель согласованных восстанавливающихся блоков
- •T/(n-1)-версионное программирование
- •Мультиверсионная среда исполнения оптимизационных алгоритмов: программная реализация
- •Анализ требований к среде мультиверсионного исполнения
- •Требования для обеспечения простоты
- •Требования для обеспечения производительности
- •Требования для обеспечения компактности
- •Требования для обеспечения надежности
- •Требования для обеспечения универсальности
- •Применение мультиверсионной методологии к системе управления
- •Выбор способа реализации программных модулей и их взаимодействия со средой исполнения
- •Конструирование программной модели
- •Реализация общих алгоритмов функционирования среды исполнения
- •Реализация алгоритма выявления отказов программных модулей
- •Реализация алгоритмов принятия решения о корректности или ошибочности состояний мультиверсий
- •Алгоритм голосования абсолютным большинством (габ)
- •Алгоритм голосования согласованным большинством (гсб)
- •Алгоритм нечеткого голосования согласованным большинством (нгсб)
- •Медианное голосование
- •Программный комплекс среды мультиверсионного исполнения
- •Теоретическое исследование предельной надежности мультиверсионных моделей проектирования отказоустойчивых систем
- •Модель восстанавливающихся блоков
- •Мультиверсионное программирование
- •Исследование результатов работы реализованной среды исполнения
- •Применение методологии мультиверсионного программирования к оптимизационным алгоритмам отказоустойчивых систем
- •Методология выбора наилучшего алгоритма оптимизации
- •Классы тестовых функций Класс одномерных унимодальных функций.
- •Класс многоэкстремальных функций нескольких переменных.
- •Анализ результатов
- •Заключение
- •Список использованных источников
Модель восстанавливающихся блоков
МВБ получает «корректный» результат, когда хотя бы одна мультиверсия возвращает «корректный» результат и проверочный модуль принимает правильное решение.
Пусть мы имеем nверсий, их надежности равныr1,r2,…,rnсоответственно. Надежность проверочного модуля естьb. Определим соотношение между корректностью выхода системы (Sn) и количеством мультиверсий (n).
При n=1 система возвращает «корректный» результат, если один модуль возвращает «корректный» результат (обозначим как:m1+) и проверочный модуль принимает правильное решение (обозначим как:b+):S1 =r1b.
При n=2 возможно две ситуации:
Первый модуль возвращает корректный результат (m1+) и проверочный модуль принимает правильное решение (b+). Вероятность этой ситуации естьr1b.
Вызывается второй модуль, т.к. первый модуль вернул ошибку (m1-) и проверочный модуль это обнаружил (b+), либо первый модуль отработал правильно (m1+), а в проверочном модуле произошла ошибка (b-). Вероятность этой ситуации есть: (r1∙ (1-b)+(1-r1) ∙b)∙r2b.
Тогда S2= r1b +(r1∙ (1-b)+(1-r1) ∙b)∙r2b = S1+(r1∙ (1-b)+(1-r1) ∙b)∙r2b
При n = 3 возможно несколько ситуаций:
Решение будет принято с помощью первых двух модулей. Вероятность этого есть S2.
Будет вызвана третья версия, т.к. произойдет одна из следующих ситуаций:
m1+,b-,m2+,b-: вероятность этого равнаr1(1-b)∙r2(1-b)
m1-,b+,m2+,b-: вероятность этого равна(1-r1)b∙r2(1-b)
m1+,b-,m2-,b+: вероятность этого равнаr1(1-b)∙(1-r2)b
m1-,b+,m2-,b+: вероятность этого равна(1-r1)b∙(1-r2)b
Отсюда:
S3=S2+[ r1(1-b)∙r2(1-b) + (1-r1)b∙r2(1-b) + r1(1-b)∙(1-r2)b + (1-r1)b∙(1-r2)b]∙r3b
или
S3=S2+[r1(1-b)+(1-r1)b]∙[r2(1-b)+(1-r2)b]∙r3b
Продолжив рассуждения, получим:
Sn=Sn-1+[r1(1-b)+(1-r1)b]∙ … ∙[rn-1(1-b)+(1-rn-1)b]∙rnb (3.1)
В случае если все модули обладают некоторой средней надежностью ¯;r:
Sn=Sn-1+[¯;r(1-b)+(1-¯;r)b]n-1∙¯;rb (3.2)
Данную формулу можно доказать методом математической индукции. Для этого избавимся от рекурсивности Sn:
Пусть q=[¯;r(1-b)+(1-¯;r)b], тогдаSn=Sn-1+qn-1∙¯;rb = ¯;rb+q¯;rb+q2¯;rb+…+ qn-1∙¯;rb.
Пусть q≠ 1 (в противном случаеSnравна 1), тогда можноSnумножить и разделить на (1-q):
Sn= ¯;rb\s\up 9([1+q+q2+…+ qn-1](1-q=¯;rbCombin
Sn= ¯;rb ∙ (1-[¯;r(1-b)+(1-¯;r)b]n) / (1-[¯;r(1-b)+(1-¯;r)b]) (3.3)
При n= 1, формула верна:S1= ¯;rb.
Пусть Sn=Sn-1+[¯;r(1-b)+(1-¯;r)b]n-1∙¯;rbверна, проверим ее дляn+1:
Sn+1=Sn+[¯;r(1-b)+(1-¯;r)b]n∙¯;rb
Sn+1= ¯;rb∙(1-[¯;r(1-b)+(1-¯;r)b]n)/(1-[¯;r(1-b)+(1-¯;r)b]) +[¯;r(1-b)+(1-¯;r)b]n∙¯;rb
Заменим [¯;r(1-b)+(1-¯;r)b] на q:
Sn+1= ¯;rbCombin +qn∙¯;rb
Sn+1= ¯;rbCombin
Sn+1= ¯;rbCombin
Sn+1= ¯;rb ∙ (1-[¯;r(1-b)+(1-¯;r)b]n+1) / (1-[¯;r(1-b)+(1-¯;r)b]) ■
Как видно из формул 3 .1 и 3 .2, чем выше n, тем меньше каждый новый модуль увеличиваетSn. Поэтому при разработке систем, использующих модель восстанавливающихся блоков, следует принимать во внимание стоимость разработки модулей.
Рассмотрим некоторые особые случаи.
1. Надежность проверяющего модуля равна единице (b= 1)
Sn = ¯;r+¯;r(1-¯;r)+r(1-¯;r)2+…+ ¯;r(1-¯;r)n-1
Sn = 1-(1-¯;r)+¯;r(1-¯;r)+r(1-¯;r)2+…+ ¯;r(1-¯;r)n-1
Пусть t=1-¯;r
Sn = 1-t+(1-t)t+(1-t)t2+…+ (1-t)tn-1
Sn = 1-t+t-t2+t2-t3+…+ tn-1-tn=1-tn
Sn = 1 - (1-¯;r)n
Легко заметить, что Sn→1, если n→∞. В этом случае мы получаем систему, в которой можно не беспокоиться о надежности отдельных модулей, главное чтобы их количество было достаточно велико.
2. Средняя надежность программного модуля равна единице (¯;r= 1)
Sn =1 - (1-b)n
Также как и в предыдущем случае, Sn→1 при n→∞. В этом случае, надежность проверочного модуля не имеет значения, главное чтобы количество мультиверсий было достаточно велико.