и управляемой реконфигурации ИУС [33]. Поскольку повышение его живучести за
счет резервирования аппаратных средств широко известно, то далее более подробно
остановимся на повышении живучести программного обеспечения (ПО).
Под живучестью ПО понимается его свойство правильно выполнять функ-
ции в полном объеме или частично в условиях появления входных данных, непре-
дусмотренных технической документацией, а также при разрушении элементов
аппаратурной части вычислительной системы [59]. Следует отметить, что исполь-
зование избыточных ресурсов ПО при отказах аппаратуры позволяет восстановить
заданную работоспособность, допуская некоторую деградацию системы относи- |
тельно менее существенных функций при условии сохранения ее основного целе-
вого назначения.
Необходимо подчеркнуть, что природа отказов аппаратуры и ПО различна.
Если причиной отказов и сбоев аппаратуры являются производственные дефекты,
ухудшение параметров комплектующих элементов из-за износа или старения, то
причины отказов ПО - трудно прогнозируемые и необнаруживаемые ошибки,
внесенные на этапе проектирования.
Проблема живучести ПО чрезвычайно важна, поскольку оно намного
сложнее аппаратуры, а его стоимость часто превышает стоимость аппаратуры.
Для обеспечения требуемого уровня живучести ПО следует:
1) свести к минимуму возможные ошибки на этапе разработки;
2) обеспечить программно-техническую реализацию методов и средств
повышения устойчивости к ошибкам при эксплуатации [57];
3) обеспечить коррекцию цели функционирования ПО при утрате возмож-
ности выполнения первоначально заданного объема функций.
Устойчивость к ошибкам ПО, под которой понимается его способность
продолжать функционирование при наличии ошибок, обеспечивается реали-
зацией динамической избыточности и изоляцией ошибок. Для обеспечения ди-
намической избыточности применяют метод многовариантного программиро-
вания, суть которого состоит в независимой генерации нескольких функцио-
нально эквивалентных программ (версий) для одних и тех же условий.
Изоляция ошибок заключается в сведении к минимуму последствий рас-
пространения ошибок и защите каждой из программ в системе от ошибок дру-
гих программ. Решение этой задачи связано с необходимостью обнаружения и
исправления ошибок. Известным приемом решения этой задачи является ис-
пользование избыточных кодов с обнаружением ошибок и их обнаружением и
исправлением. Следует, однако, отметить, что этот прием требует значительно-
го усложнения программ вычислений.
В свою очередь, при наличии сбоев и отказов (разрушения) аппаратуры
могут возникать искажения [57]: 1) кодов операций; 2) адресной информации;
3) констант в структуре программ; 4) констант, используемых при вычислени-
ях; 5) вычисляемых значений величин в процессоре; 6) засылаемых и храни-