Объектные распределённые системы
Вызов удаленных процедур
Суть вызова удалённых процедур (Remote Procedure Call- RPC) заключается в применении механизма вызова процедур (подпрограмм, функций) для построения распределённых систем. Данный механизм является реализацией принципа модульного программирования и изначально широко использовался только для вызова локальных процедур, т.е. процедур, выполняемых на том же компьютере, что и вызывающая программа. Однако, при вызове удалённых процедур возникает целый ряд сложностей, связанных с передачей данных между компьютерами, необходимостью прозрачного использования сетей, возможной неоднородностью, связанной с языками программирования и ОС.
Для решения указанных проблем и была предложена технология RPC.
Основы технологии RPC
Прежде чем начать рассмотрение технологии вызова удалённых процедур, остановимся на технологии вызова процедур локальных. Данная технология предполагает выполнение следующих действий:
- • вызывающая программа сохраняет состояние процессора (содержимое основных регистров, в том числе содержимое счётчика команд) в стеке;
- • вызывающая программа передаёт параметры для вызываемой процедуры;
- • осуществляется выполнение вызываемой процедуры путём перехода на её адрес в памяти и запуска;
- • вызываемая процедура осуществляет возврат управления на вызывающую процедуру (путём извлечения из стека ранее сохранённого содержимого счетчика команд) и возвращает результат;
- • вызывающая процедура восстанавливает исходное состояние процессора путём выборки параметров из стека.
Технология RPC обеспечивает возможность вызова удалённой процедуры по возможности точно так же, как и процедуры локальной. При этом если вызываемая процедура является удалённой, то вместо локальной процедуры в библиотеку помещается специальная версия процедуры, называемая стабом клиента (англ, stub - заглушка). Стаб запускается аналогично локальной процедуре, но его выполнение сводится только к формированию сообщения для отправки ядру удалённого компьютера.