Вопросы реализации

Несмотря на концептуальную элегантность RPC, в этой технологии кроется ряд подвохов. Самый большой из них заключается в использовании указателей в качестве параметров. Обычно передача процедуре указателя не создает никакой проблемы.
Вызываемая процедура может воспользоваться указателем точно так же, как и вызывающая процедура, поскольку эти две процедуры находятся в едином виртуальном адресном пространстве. При использовании технологии RPC передача указателей становится невозможной, потому что клиент и сервер находятся в разных адресных пространствах.

В некоторых случаях, чтобы сделать возможной передачу указателей, можно воспользоваться ухищрениями. Предположим, что первый параметр является указателем на целочисленную переменную k. Клиентская заглушка может маршализовать переменную k и отправить ее на сервер. Затем серверная заглушка может создать указатель на k и передать его серверной процедуре обычным порядком. Когда серверная процедура вернет управление серверной заглушке, та отправит k обратно клиенту, где новое значение k будет скопировано поверх старого, на тот случай, если сервер изменил значение этой переменной. В результате стандартная последовательность вызова с вызовом по ссылке заменяется копированием с последующим восстановлением. К сожалению, этот трюк срабатывает не всегда: к примеру, он не работает, если указатель имеет отношение к графу или другой сложной структуре данных. Поэтому на параметры вызова удаленной процедуры должны накладываться определенные ограничения.

Вторая проблема заключается в том, что в слаботипизированных языках, подобных C, вполне допустимо написать процедуру, вычисляющую скалярное произведение двух векторов (массивов) без указания длины каждого из них.

Каждый из них может заканчиваться специальным значением, известным только вызывающей и вызываемой
процедурам. При таких обстоятельствах клиентская заглушка принципиально не в состоянии маршализовать параметры: она не может определить их длину.

Третья проблема заключается в том, что не всегда удается точно установить типы параметров даже из формального описания или кода программы как такового. Примером может послужить процедура printf, у которой может быть любое количество параметров (по крайней мере один), среди которых в произвольном порядке могут быть перемешаны целые и вещественные числа, символы, строки, числа с плавающей запятой различной длины и данные других типов. Попытка вызова printf в качестве удаленной процедуры из-за подобной необязательности языка C практически обречена на провал. Ну а правило, гласящее о том, что RPC может использоваться лишь при условии, что вы не программируете на C (или на C++), вряд ли стало бы популярным.

Четвертая проблема связана с использованием глобальных переменных. В обычных условиях вызывающая и вызываемая процедуры могут вдобавок к обмену данными через параметры обмениваться ими и с использованием глобальных переменных. Теперь, если вызываемая процедура перемещена на удаленную машину, код даст сбой, поскольку глобальные переменные уже не являются общими.

Эти проблемы не предполагают безнадежности технологии RPC. Она нашла широкое применение, но практический успех ее использования требует некоторых ограничительных и предупредительных мер.

8.2.5.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Вопросы реализации:

  1. Глава 6. Реализация права
  2. 4. Реализация прав по ипотеке
  3. 4.2. Реализация
  4. 3.3. Дальнейшая реализация проекта
  5. РЕАЛИЗАЦИЯ МЫСЛЕННОГО ПРЕДСТАВЛЕНИЯ
  6. 10. Реализация заложенного имущества
  7. Механизм реализации личности
  8. Статья 591. Реализация предмета залога
  9. Практическая реализация.
  10. Практическая реализация.
  11. Практическая реализация.
  12. Основные психологические функции и инструментарий их реализации.
  13. 6.1. Понятие и формы реализации права
  14. 6.3. Примеры практической реализации метода анализа утверждений
  15. 6.3. Примеры практической реализации метода анализа утверждений
  16. 3. Реализация прав, вытекающих из залога
  17. 14.2. Реализация моделей клеточных автоматов на ЭВМ
  18. Статья 227. Выпуск или реализация недоброкачественной продукции
  19. Э. ТАНЕНБАУМ, А. ВУДХАЛЛ. ОПЕРАЦИОННЫЕ СИСТЕМЫ Разработка и реализация 3-е издание, 2007
  20. Этапы реализации программы сопровождения одаренного ребенка