Удаленный вызов процедур (RPC) в операционной системе
Удаленный вызов процедур (RPC) - это мощный метод создания распределенных приложений на основе клиент-сервер . Он основан на расширении обычного вызова локальной процедуры, так что вызываемая процедура не должна существовать в том же адресном пространстве, что и вызывающая процедура . Эти два процесса могут находиться в одной системе или в разных системах с сетью, соединяющей их.
При выполнении удаленного вызова процедуры:
1. Вызывающая среда приостанавливается, параметры процедуры передаются по сети в среду, в которой процедура должна выполняться, и процедура выполняется там.
2. Когда процедура завершается и дает свои результаты, ее результаты передаются обратно в вызывающую среду, где выполнение возобновляется, как если бы оно возвращалось из обычного вызова процедуры.
ПРИМЕЧАНИЕ. RPC особенно хорошо подходит для взаимодействия клиент-сервер (например, запрос-ответ), при котором поток управления чередуется между вызывающим и вызываемым . По идее, клиент и сервер не работают одновременно. Вместо этого поток выполнения переходит от вызывающего к вызываемому, а затем обратно.
Работа RPC
Во время RPC выполняются следующие шаги:
1. Клиент вызывает процедуру-заглушку клиента , передавая параметры обычным образом. Заглушка клиента находится в собственном адресном пространстве клиента.
2. Клиентская заглушка упорядочивает (упаковывает) параметры в сообщение. Маршаллинг включает преобразование представления параметров в стандартный формат и копирование каждого параметра в сообщение.
3. Клиентская заглушка передает сообщение на транспортный уровень, который отправляет его на удаленный сервер.
4. На сервере транспортный уровень передает сообщение на серверную заглушку, которая демаршалирует (распаковывает) параметры и вызывает желаемую серверную процедуру, используя обычный механизм вызова процедур.
5. Когда серверная процедура завершается, она возвращается к серверной заглушке (например, посредством обычного возврата вызова процедуры) , которая упорядочивает возвращаемые значения в сообщение. Затем заглушка сервера передает сообщение на транспортный уровень.
6. Транспортный уровень отправляет сообщение с результатом обратно на клиентский транспортный уровень, который передает сообщение обратно клиентской заглушке.
7. Клиентская заглушка демаршаллирует возвращаемые параметры, и выполнение возвращается вызывающей стороне.
ВОПРОСЫ RPC
- Вопросы, которые необходимо решить:
1. Среда выполнения RPC: система времени выполнения RPC представляет собой библиотеку подпрограмм и набор служб, которые обрабатывают сетевые коммуникации, лежащие в основе механизма RPC. В ходе вызова RPC клиентская и серверная исполняющие системы обрабатывают привязку кода, устанавливают связь по соответствующему протоколу, передают данные вызова между клиентом и сервером и обрабатывают ошибки связи.
2. Заглушка: функция заглушки заключается в обеспечении прозрачности кода приложения, написанного программистом .
На стороне клиента заглушка обрабатывает интерфейс между вызовом локальной процедуры клиента и системой времени выполнения, маршалинг и демаршалинг данных, вызов протокола времени выполнения RPC и, если требуется, выполнение некоторых шагов привязки.
На стороне сервера заглушка обеспечивает аналогичный интерфейс между системой времени выполнения и процедурами локального менеджера, которые выполняются сервером.
3. Связывание: как клиент узнает, кому звонить и где находится служба?
Наиболее гибкое решение - использовать динамическую привязку и найти сервер во время выполнения, когда RPC выполняется впервые. При первом вызове клиентской заглушки она связывается с сервером имен, чтобы определить транспортный адрес, по которому находится сервер.
Переплет состоит из двух частей:
- Именование:
Удаленные процедуры именуются через интерфейсы. Интерфейс однозначно идентифицирует конкретную службу, описывая типы и количество ее аргументов . Это похоже на определение типа в языках программирования.
- Расположение:
Нахождение транспортного адреса, по которому фактически находится сервер. Получив транспортный адрес службы, мы можем отправлять сообщения прямо на сервер.
Сервер , у которого есть услуга, экспортирует для нее интерфейс. Экспорт интерфейса регистрирует его в системе, чтобы клиенты могли его использовать.
Клиент должен импортировать (экспортированный) интерфейс, прежде чем может начаться обмен данными.
ПРЕИМУЩЕСТВА
1. RPC обеспечивает АБСТРАКЦИЮ, то есть передача сообщений в сети скрыта от пользователя.
2. RPC часто пропускает многие уровни протокола для повышения производительности. Даже небольшое улучшение производительности важно, потому что программа может часто вызывать RPC.
3. RPC позволяет использовать приложения в распределенной среде, а не только в локальной среде.
4. С помощью RPC-кода усилия по переписыванию / повторной разработке сводятся к минимуму.
5. Процессно-ориентированные и поточно-ориентированные модели, поддерживаемые RPC.
Использованная литература:
- https://web.cs.wpi.edu/~cs4514/b98/week8-rpc/week8-rpc.html
- https://users.cs.cf.ac.uk/Dave.Marshall/C/node33.html
Эта статья предоставлена Яшем Сингла . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.