Удаленный вызов процедур

Есть машины: A и B. A вызывает процедуру, которая выполняется на B.

count = read(fd, buf, bytes);

Таблица 2.1. Стек при вызове процедуры

bytes
buf
fd
адрес возварата
локальные переменные процедуры

Передавать параметры по значению просто, а вот по ссылке – проблема. Вызов через клонирование восстановлением.

Удаленный вызов выглядит как локальный, то есть RPC обеспечивает прозрачность для клиента. Сервер тоже не подозревает, что он выполняет удаленный вызов. И вообще, никто ничего не подозревает.

Упаковка параметров в заглушке.

Рис. 2.3.

 

Последовательность передачи управления при RPC.

Рис. 2.4.

На сервере есть аналогичная заглушка, ??? параметры; сервер выполняет запрос, возвращает результат. Проблема: передача по адресу: можно предавать копию буфера.

Лекция 2.11.04