Построение отказоустойчивых вычислительных систем распределенной обработки информации и алгоритмы реконфигурации, страница 7

Для модулей, использующих горячий резерв, вводятся два специальных языковых примитива. Работа памяти обеспечивается примитивом “ СОХРАНИТЬ ”. Этот примитив используется для записи информации о состоянии  в память в соответствующие моменты при выполнении задачи. Второй примитив вводит важное понятие «надежный порт». Этот примитив используется для описания связи, осуществляемой посредством обмена сообщениями «запрос - ответ».

          Примитив СОХРАНИТЬ. Модули программного обеспечения являются самосохраняющимися объектами, которые взаимодействуют посредством обмена сообщениями. Для каждого критического Н – модуля имеется дополнительный экземпляр, находящийся в горячем резереве. Между ними поддерживается постоянная связь. Так как модули самосохраняющиеся, то постоянство состояния можно обеспечить простым механизмом хранения ,т.е. в особых точках при выполнении активного Н – модуля он передает информацию о состоянии в память, выделенную каждому экземпляру. Чтобы выполнить этот активный модуль, вызывают процедуру СОХРАНИТЬ. Когда активный модуль выходит из строя, начинается выполняться избыточный модуль из состояния,  заполненного последним.

          Передача активного состояния осуществляется нижележащим механизмом, который принимает копию текущего состояния      и передает ее пассивному экземпляру посредством сообщения. Положительный  ответ означает успешное завершение процедуры сохранения. Тот факт, что сообщения принимается правильным, либо не принимается совсем (предположение 3), означает то, что обновление состояния происходит автоматически: либо вся информация о состоянии передается пассивному экземпляру, либо происходит так , как если бы действие процедуры СОХРАНИТЬ не начиналось.  Таким образом. Отказ в середине выполнения  процедуры СОХРАНИТЬ не начиналось. Таким образом, отказ в середине выполнения процедуры СОХРАНИТЬ не оставляет пассивный экземпляр в нестабильном состоянии. Если не оказалось пассивного экземпляра, то управление возвращается на модуль, выполняющий процедуру СОХРАНИТЬ.

                    В дальнейшем, рассматриваются правила идентификации точек, в которых выполняется процедура  СОХРАНИТЬ для обеспечения восстановления отметим, что используя эти правила, процедуру СОХРАНИТЬ  можно вызвать автоматически.

          Надежные порты. Может возникнуть необходимость маскировать отказ и дальнейшее восстановление Н – модуля от других Н – модулей. Например, рассмотрим  Н – модуль, который сохраняет свое состояние и отказывает во  время или после обмена сообщениями с другими Н – модулями. Если н – модуль был источником сообщения , то передачу сообщения можно повторить резервным экземпляром. Если же он был адресатом, то входное сообщение можно потерять. Маскирование  такого повторение сообщения или его потеря опирается на специальные, надежные действия типа вопрос – ответ, которое можно  использовать для связи между Н – модулями используя горячий резерв. Такое обслуживание достигается использованием надежных портов. Имена этих портов необходимо надежно и ясно выделить в файле, связанном со спецификацией конфигурации системы.  Эти надежные действия типа вопрос – ответ описаны ниже.

          Заметим , что механизмы , которые обеспечивают поддержку надежных действий и восстановление после отказа можно вводить после обычного программирования    т.е. посредством трансформации модуля для включения процедуры СОХРАНИТЬ и выбором надежных портов на стадии создания конфигурации системы.

Надежные действия типа запрос - ответ.