Есть машины: A и B. A вызывает процедуру, которая выполняется на B.
count = read(fd, buf, bytes);
Таблица 2.1. Стек при вызове процедуры
bytes
buf
fd
адрес возварата
локальные переменные процедуры
Передавать параметры по значению просто, а вот по ссылке – проблема. Вызов через клонирование восстановлением.
Удаленный вызов выглядит как локальный, то есть RPC обеспечивает прозрачность для клиента. Сервер тоже не подозревает, что он выполняет удаленный вызов. И вообще, никто ничего не подозревает.
Упаковка параметров в заглушке.
Рис. 2.3.
Последовательность передачи управления при RPC.
Рис. 2.4.
На сервере есть аналогичная заглушка, ??? параметры; сервер выполняет запрос, возвращает результат. Проблема: передача по адресу: можно предавать копию буфера.
Лекция 2.11.04