Это процедура определения клиентом местоположения сервера, на каждый сервер, создается формальное определение (спецификация), содержащая имя сервера, номер версии и список процедур-услуг, предоставляемых клиентом. Для каждой процедуры дается описание её параметров с указанием, являются ли они входными или выходными, относительно сервера. Спецификация сервера используется как исходное данное для программы генератора стабов, создающих и клиентские и серверные стабы и помещающие их в библиотеки.
При запуске сервера его интерфейс (спецификация) передается программе binder. При первом вызове клиентом сервера, клиент запрашивает у bindera интерфейс нужной версии.
Семантика вызова удаленных процедур в случае отказа
1. Клиент не может определить местонахождение сервера
2. Потеря запроса от клиента к серверу
3. Потеря ответного сообщения от сервера к клиенту. Все процедуры в зависимости от того, можно ли их повторно выполнить без изменения результата делятся на 2 класса:
a. Идепотентные – можно выполнить несколько раз без изменения результата
|
|
b. Не идепотентные – нельзя -/-
Для не идеопотентных процедур используется последовательная нумерация всех запросов клиентским ядром. Ядро сервера запоминает номер последнего успешно выполненного запроса от каждого клиента и при получении следующего запроса, определяет является ли он первичным или вторичным
4. Сервер потерпел аварию после получения запроса. В зависимости от типа процедуры либо выполняется повторный запрос, либо сообщается об ошибке.
5. Клиент потерпел аварию после отсылки запроса. Удаленные вычисления, результата которых никто не ожидает – сироты. С ними можно делать:
a. Уничтожать. До отсылки запросов клиентский стаб делает отметку в журнале, по которой при сбое ликвидируются удаленные вычисления.
b. Перевоплощение –время в системе делится на последовательно пронумерованные периоды. При сбое клиента он генерирует широковещательное сообщение в начале нового периода, по которому все или только его удаленные вычисления ликвидируются
c. Истечение срока. Каждому запросу отводится стандартный отрезок времени и если по его истечению клиент не отвечает, его вычисления уничтожаются.