Виклик віддалених процедур (rpc - remote procedure call)

Концепція віддаленого виклику процедур

Ідея виклику віддалених процедур (Remote Procedure Call - RPC) полягає в розширенні добре відомого і зрозумілого механізму передачі управління і даних усередині програми, що виконується на одній машині, на передачу управління і даних через мережу. Засоби віддаленого виклику процедур призначені для полегшення організації розподілених обчислень.

Найбільша ефективність використання RPC досягається в тих додатках, в яких існує інтерактивний зв'язок між віддаленими компонентами з невеликим часом відповідей іотносітельно малою кількістю переданих данних.Такіе додатки називаються RPC-орієнтованими.

Характерними рисами виклику локальних процедур є:

Асиметричність, тобто одна з взаємодіючих сторін є ініціатором;

Синхронність, тобто виконання викликає процедури припиняється з моменту видачі запиту і відновлюється тільки після повернення з викликається процедури.

Реалізація віддалених викликів істотно складніше реалізації викликів локальних процедур.

Так як RPC не може розраховувати на пам'ять, що розділяється, то це означає, що параметри RPC не повинні містити покажчиків на осередки нестековой пам'яті і чтозначенія параметрів повинні копіюватися з одного комп'ютера на інший.

2. Наступною відмінністю RPC від локального виклику є те, що він обов'язково використовує нижележащую систему зв'язку. однак цене має бути явно видно ні у визначенні процедур, ні в самих процедурах.

Відстань вносить додаткові проблеми. Виконання викликає програми і викликається локальної процедури в одній машині реалізується в рамкахедіногопроцесса. Нов реалізації RPC участвуюткак мінімум два процесу-по одному в кожній машині. У разі, якщо один з них аварійно завершиться, можуть виникнути такі ситуації:

при аварії викликає процедури віддалено викликані процедури стануть "осиротілими", а

при аварійному завершенні віддалених процедур стануть "знедоленими батьками" викликають процедури, які будуть безрезультатно чекати відповіді від віддалених процедур.

Крім того, існує ряд проблем, пов'язаних з неоднорідністю мов програмування і операційних середовищ. структури даних і структури виклику процедур, підтримувані в якомусь одному мовою програмування, не підтримуються точно так же у всіх інших мовах.

Ці та деякі інші проблеми вирішує широко поширена технологія RPC, що лежить в основі багатьох розподілених операційних систем.

Ідея, покладена в основу RPC, полягає в тому, щоб зробити виклик віддаленої процедури виглядають по можливості також, як і виклик локальної процедури. Іншими словами - зробити RPC прозорим: викликає процедурі не потрібно знати, що викликається процедура знаходиться на іншій машині, і навпаки.

RPC досягає прозорості таким шляхом. Коли викликається процедура дійсно є віддаленою, в бібліотеку поміщається замість локальної процедури інша версія процедури, звана клієнтським стаб (stub - заглушка). Подібно оригінальної процедурі, стаб викликається з використанням викликає послідовності (як на малюнку 3.1), так само відбувається переривання при зверненні до ядру.Только на відміну від оригінальної процедури він не поміщає параметри в регістри і не запрошувати у ядра дані, замість цього він формує повідомлення для відправки ядру віддаленої машини.

Виклик віддалених процедур (rpc - remote procedure call)

Мал. 3.2. Remote Procedure Call