Распределенные вычисления: технология Microsoft RPC. Часть1. Фертиков В.В. - 5 стр.

UptoLike

Составители: 

5
сия процедуры , называемая клиентским стабом . Задача заглушки принять ар -
гументы , предназначаемые удаленной процедуре, преобразовать их в некий
стандартный формат и сформировать сетевой запрос. Упаковка аргументов и
создание сетевого запроса называется сборкой (marshalling).
После того , как сообщение готово к передаче, выполняется прерывание по
вызову ядра операционной системы. Когда ядро получает управление, оно пе-
реключает контексты , сохраняет регистры процессора и карту памяти (дескрип-
торы страниц), устанавливает новую карту памяти, которая будет использо-
ваться для работы в режиме ядра. Поскольку контексты ядра и пользователя
различаются , ядро должно точно скопировать сообщение в свое собственное
адресное пространство , так , чтобы иметь к нему доступ, запомнить адрес на-
значения (а, возможно, и другие поля заголовка), а также оно должно передать
его сетевому интерфейсу . На этом завершается работа на клиентской стороне.
Включается таймер передачи, и ядро может либо выполнять циклический опрос
наличия ответа, либо передать управление планировщику, который выберет ка-
кой -либо другой процесс на выполнение. В первом случае ускоряется выполне-
ние запроса, но отсутствует мультипрограммирование.
На стороне сервера поступающие биты помещаются принимающей аппа-
ратурой либо во встроенный буфер , либо в оперативную память. Когда вся ин-
формация будет получена, генерируется прерывание. Обработчик прерывания
проверяет правильность данных пакета и определяет, какому стабу следует их
передать. Если ни один из стабов не ожидает этот пакет, обработчик должен
либо поместить его в буфер , либо вообще отказаться от него . Если имеется
ожидающий стаб, то сообщение копируется ему. Наконец, выполняется пере-
ключение контекстов, в результате чего восстанавливаются регистры и карта
памяти, принимая те значения, которые они имели в момент, когда стаб сделал
системный вызов receive для перехода в режим ожидания приема сообщения.
Рис. 1. Взаимодействие программных компонентов
Клиент- машина
Сервер - машина
Стаб
клиента
Процесс-
клиент
Ядро клиента
Стаб
сервера
Процедура
Ядро сервера
сообщение- вызов
сообщение- результат
вызов
результат
вызов
результат
                                           5
сия процедуры, называемая клиентским стабом. Задача заглушки – принять ар-
гументы, предназначаемые удаленной процедуре, преобразовать их в некий
стандартный формат и сформировать сетевой запрос. Упаковка аргументов и
создание сетевого запроса называется сборкой (marshalling).
     После того, как сообщение готово к передаче, выполняется прерывание по
вызову ядра операционной системы. Когда ядро получает управление, оно пе-
реключает контексты, сохраняет регистры процессора и карту памяти (дескрип-
торы страниц), устанавливает новую карту памяти, которая будет использо-
ваться для работы в режиме ядра. Поскольку контексты ядра и пользователя
различаются, ядро должно точно скопировать сообщение в свое собственное
адресное пространство, так, чтобы иметь к нему доступ, запомнить адрес на-
значения (а, возможно, и другие поля заголовка), а также оно должно передать
его сетевому интерфейсу. На этом завершается работа на клиентской стороне.
Включается таймер передачи, и ядро может либо выполнять циклический опрос
наличия ответа, либо передать управление планировщику, который выберет ка-
кой-либо другой процесс на выполнение. В первом случае ускоряется выполне-
ние запроса, но отсутствует мультипрограммирование.

             Клиент-машина                             Сервер-машина
                            вызов                     вызов

         Процесс-            Стаб                Стаб
          клиент                                              Процедура
                            клиента             сервера

                                                               результат
                результат
       Ядро клиента                                           Ядро сервера

                                    сообщение-вызов

                                сообщение-результат

             Рис. 1. Взаимодействие программных компонентов

    На стороне сервера поступающие биты помещаются принимающей аппа-
ратурой либо во встроенный буфер, либо в оперативную память. Когда вся ин-
формация будет получена, генерируется прерывание. Обработчик прерывания
проверяет правильность данных пакета и определяет, какому стабу следует их
передать. Если ни один из стабов не ожидает этот пакет, обработчик должен
либо поместить его в буфер, либо вообще отказаться от него. Если имеется
ожидающий стаб, то сообщение копируется ему. Наконец, выполняется пере-
ключение контекстов, в результате чего восстанавливаются регистры и карта
памяти, принимая те значения, которые они имели в момент, когда стаб сделал
системный вызов receive для перехода в режим ожидания приема сообщения.