Архитектура современных операционных систем

163 Для реализации RPC при создании приложения к нему вместо библиотек прикомпоновываются специальные клиентские заглушки, которые имеют такой же интерфейс вызова, что и соответствующий модуль библиотеки. Основная задача клиентской заглушки принять параметры от приложения, и передать их по сети модулю, расположенному в другом узле сети, а после вы- полнения модуля принять по сети результат и вернуть их приложению. На основании переданных параметров заглушка формирует специальный блок параметров. При этом в случае необходимости она копирует параметры из адресного пространства приложения. Сформировав блок, заглушка вызывает модули библиотеки RPC времени выполнения для передачи его в узел, где расположена соответствующая биб- лиотека. В этом узле для каждого модуля используется своя серверная заглушка, она распаковывает параметры из принятого блока, выполняет необходимые преобразования и вызывает соответствующий модуль. Модуль выполняется, возвращая серверной заглушке результат. Серверная заглушка упаковывает их обратно в блок параметров и передает клиентской заглушке. Клиентская заглушка распаковывает и передает результат приложению. Существует язык MIDL (Microsoft Interface Definition Language) для авто- матизации разработки распределенных приложений. Работа с ним осуществляется следующим образом: сначала программист стандартным образом описывает прототипы вызываемых им процедур, затем в них определяет, какие параметры являются входными, а какие - выходными. Сформированный прототип передается компилятору MIDL. Компилятор по прототипам строит клиентские и серверные заглушки и со- здает соответствующие ссылочные библиотеки. Используя заглушки и ссылоч- ные библиотеки, программист может скомпоновать само приложение и библио- теки, вызываемые в удаленных узлах.

RkJQdWJsaXNoZXIy MTY0OTYy