Динамическое связывание

Это процедура определения клиентом местоположения сервера, на каждый сервер, создается формальное определение (спецификация), содержащая имя сервера, номер версии и список процедур-услуг, предоставляемых клиентом. Для каждой процедуры дается описание её параметров с указанием, являются ли они входными или выходными, относительно сервера. Спецификация сервера используется как исходное данное для программы генератора стабов, создающих и клиентские и серверные стабы и помещающие их в библиотеки.

При запуске сервера его интерфейс (спецификация) передается программе binder. При первом вызове клиентом сервера, клиент запрашивает у bindera интерфейс нужной версии.

Семантика вызова удаленных процедур в случае отказа

1. Клиент не может определить местонахождение сервера

2. Потеря запроса от клиента к серверу

3. Потеря ответного сообщения от сервера к клиенту. Все процедуры в зависимости от того, можно ли их повторно выполнить без изменения результата делятся на 2 класса:

a. Идепотентные – можно выполнить несколько раз без изменения результата

b. Не идепотентные – нельзя -/-

Для не идеопотентных процедур используется последовательная нумерация всех запросов клиентским ядром. Ядро сервера запоминает номер последнего успешно выполненного запроса от каждого клиента и при получении следующего запроса, определяет является ли он первичным или вторичным

4. Сервер потерпел аварию после получения запроса. В зависимости от типа процедуры либо выполняется повторный запрос, либо сообщается об ошибке.

5. Клиент потерпел аварию после отсылки запроса. Удаленные вычисления, результата которых никто не ожидает – сироты. С ними можно делать:

a. Уничтожать. До отсылки запросов клиентский стаб делает отметку в журнале, по которой при сбое ликвидируются удаленные вычисления.

b. Перевоплощение –время в системе делится на последовательно пронумерованные периоды. При сбое клиента он генерирует широковещательное сообщение в начале нового периода, по которому все или только его удаленные вычисления ликвидируются

c. Истечение срока. Каждому запросу отводится стандартный отрезок времени и если по его истечению клиент не отвечает, его вычисления уничтожаются.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: