Передача сообщений в распределенных системах
Типы сообщений:
1. Блокирующие/не блокирующие
2. Буферизируемые/не буферизируемые
3. Надежные/не надежные
Способы адресации:
1. Использование адресов сетевых адаптеров
2. Использование имен назначения, состоящих из номера машины и номера процесса
3. Назначение каждому процессу уникального адреса, не связанного с адресом машины
3.1. Использование централизованного механизма распределения адресов
3.2. Разрешение каждому процессу выбора идентификатора из большого адресного пространства
4. Использование специальной аппаратуры. Процессы выбирают адреса случайно, а конструкция сетевых адаптеров позволяет их хранить и использовать в передаче кадров.
Удаленный доступ процедур (RPC-Remote Procedure Call)
Особенности вызова в распределенных системах:
1. Вызывающие и вызываемые процедуры имеют разное адресное пространство
2. Параметры вызова не должны содержать указатели
3. Использование нижележащей системы связей
4. Сложности при аварийном завершении одного из участников
|
|
5. Неоднородность языков программирования и операционных сред
Этапы выполнения вызова удаленных процедур
Клиент | Сервер | ||
Клиент | Вызов стаб-процедуры (заглушка) | Выполнить работу | Сервер |
Стаб клиента | Подготовить буфер упорядочить параметры Добавить поля заголовка Выполнить прерывание | Вызвать сервер Поместить параметры в стек Распаковать параметры | Серверный стаб |
Ядро | Переключение на контекст ядра Копирование сообщения в ядро Определить адрес назначения Установка интерфейса Включить таймер | Переключиться на контекст стаба Копировать сообщение в стаб Определить ожидается ли пакет Определить стаб (кому) Проверить пакет Прервать процесс | Ядро |
Стаб-процедура заменяет локальный вызов, не помещая параметры в регистры, а вызывает нижележащую систему связи, формирует сообщение удаленному процессу. Выделяется серверный и клиентский стаб.