Головна

Програмний інтерфейс високого рівня. | передача параметрів | семантика виклику | подання даних | Як це працює? | client.c |

Механізм виклику віддалених процедур - RPC

  1. II. МЕТОДИ, ПІДХОДИ І ПРОЦЕДУРИ ДІАГНОСТИКИ І ЛІКУВАННЯ
  2. II. Загальні механізми розладів екскреторної функції нирок.
  3. III. Процедура оцінки курсової роботи
  4. IV етап (з середини XX ст. По теперішній час) психологія як наука, що вивчає факти, закономірності та механізми психіки.

Програми, які спілкуються через мережу, потребують механізмі зв'язку. На нижньому рівні по надходженні пакетів подається сигнал, що обробляється мережевий програмою обробки сигналів. На верхньому рівні працює механізм rendezvous (рандеву), прийнятий в мові Ада. В NFS використовується механізм виклику віддалених процедур (RPC), в якому клієнт взаємодіє з сервером (див. Малюнок 1). Відповідно до цим процесом клієнт спочатку звертається до процедури, яка посилає запит на сервер. Після прибуття пакета із запитом сервер викликає процедуру його розтину, виконує запитувану послугу, посилає відповідь, і управління повертається клієнтові.

Інтерфейс RPC можна уявити що складається з трьох рівнів:

- Верхній рівень повністю "прозорий". Програма цього рівня може, наприклад, містити звернення до процедури rnusers (), що повертає число користувачів на віддаленій машині. Вам не потрібно знати про використання механізму RPC, оскільки ви робите звернення в програмі.

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

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

Як правило, вам слід користуватися верхнім рівнем і уникати використання нижніх рівнів без особливої ??необхідності.

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

RPC (Remote Procedure Call, Сервіс виклику віддалених процедур) являє собою інтерфейс між віддаленими користувачами і певними програмами хоста, які запускаються за запитами цих користувачів. Сервіс RPC будь-якого хоста, як правило, надає клієнтам комплекс програм. Кожна з таких програм полягає, в свою чергу, з однієї або декількох віддалених процедур. Наприклад, сервіс віддаленої файлової системи NFS, який побудований на виклики RPC, може складатися тільки з двох програм: наприклад, одна програма взаємодіє з високорівневими інтерфейсами, а інша - з низькорівневими функціями введення-виведення.

У кожному виклику віддаленої процедури беруть участь дві сторони: активний клієнт, який відправляє запит виклику процедури на сервер, і сервер, який відправляє клієнту відповідь.

Примітка.Слід мати на увазі, що терміни "клієнт" і "сервер" в даному випадку відносяться до певної транзакції Конкретний хост або програмне забезпечення (процес або програма) можуть працювати як в ролі клієнта, так і в ролі сервера. Наприклад, програма, яка забезпечує роботу сервісу віддалених процедур, в той же час може бути клієнтом в роботі з мережевої файлової системою.

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

У разі роботи з віддаленій процедурою, основна відмінність полягає в тому, що виклик віддаленої функції обслуговують два процеси: клієнтський процес і серверний процес.

Процес клієнта відправляє серверу повідомлення, в яке включені параметри викликається процедури і чекає відповідного повідомлення з результатами її роботи. При отриманні відповіді результат зчитується, і процес продовжує роботу. З боку сервера процес-обробник викликів знаходиться в стані очікування, і, при надходженні повідомлення, зчитує параметри процедури, виконує її, відправляє відповідь і стає в стан очікування наступного виклику.

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

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

1. Обробка помилок. Клієнт в будь-якому випадку повинен отримувати повідомлення про помилки, що виникають при викликах віддалених процедур на сервері або в мережі.

2. Глобальні змінні. Оскільки сервер не має доступу до адресного простору клієнта, при викликах віддалених процедур можна використовувати приховані параметри у вигляді глобальних змінних.

3. Продуктивність. Швидкість виконання віддалених процедур, як правило на один або два порядки нижче швидкості виконання аналогічних локальних процедур.

4. Аутентифікація. Оскільки виклики віддалених процедур відбуваються по мережі, необхідно використовувати механізми аутентифікації клієнта.



обгрунтування проекту | Принципи побудови протоколу.
© um.co.ua - учбові матеріали та реферати