Головна |
Ідея виклику видалених процедур (Remote Procedure Call - RPC) полягає в розширенні добре відомого і зрозумілого механізму передачі управління і даних усередині програми, що виконується на одній машині, на передачу управління і даних через мережу.
У реалізації RPC беруть участь як мінімум два процеси - по одному на кожній машині. Технологія RPC лежить в основі багатьох розподілених операційних систем.
Ідея, покладена в основу RPC, полягає в тому, щоб зробити виклик віддаленої процедури виглядають по можливості так само, як і виклик локальної процедури. Іншими словами, зробити RPC прозорим: викликає процедурі не потрібно знати, що викликається процедура знаходиться на іншій машині, і навпаки.
Коли викликається процедура дійсно є віддаленою, в бібліотеку поміщається замість локальної процедури інша версія процедури, звана клієнтський стаб (stub - заглушка). Подібно оригінальної процедурі, стаб викликається з використанням викликає послідовності, так само відбувається переривання при зверненні до ядра. Тільки на відміну від оригінальної процедури він не поміщає параметри в регістри і не запрошувати у ядра дані, замість цього він формує повідомлення для відправки ядру віддаленої машини.
Після того, як клієнтський стаб був викликаний програмою-клієнтом, його першим завданням є заповнення буфера відправляється повідомленням. Параметри повинні бути перетворені у відповідний формат і вставлені в буфер повідомлення. Потім виконується переривання за викликом ядра.
Коли ядро ??отримує управління, воно перемикає контексти, зберігає регістри процесора і карту пам'яті, встановлює нову карту пам'яті, яка буде використовуватися для роботи в режимі ядра. Оскільки контексти ядра і користувача розрізняються, ядро ??має точно скопіювати повідомлення в свій власний адресний простір, так, щоб мати до нього доступ, запам'ятати адресу призначення, а також воно має передати його мережевого інтерфейсу. На цьому завершується робота на клієнтській стороні. Чи включається таймер передачі, і ядро ??може або виконувати циклічний опитування наявності відповіді, або передати управління планувальником, який вибере будь-якої іншої процес на виконання. У першому випадку прискорюється виконання запиту, але відсутній мультипрограмування.
На стороні сервера надходять біти поміщаються приймаючої апаратурою або у вбудований буфер, або в оперативну пам'ять. Коли вся інформація буде отримана, генерується переривання. Оброблювач переривання перевіряє правильність даних пакета і визначає, яким стаб слід їх передати. Якщо жоден з стаб не очікує цей пакет, обробник повинен або помістити його в буфер, або взагалі відмовитися від нього. Якщо є очікує стаб, то повідомлення копіюється йому. Нарешті, виконується перемикання контекстів, в результаті чого відновлюються регістри і карта пам'яті.
Тепер починає роботу серверний стаб. Він розпаковує параметри і поміщає їх відповідним чином в стек. Коли все готово, виконується виклик сервера. Після виконання процедури сервер передає результати клієнту. Для цього виконуються всі описані вище етапи, тільки в зворотному порядку.
Блокуючі і неблокірующіх примітиви. Буферизованих і небуферізуемие примітиви | Синхронізація в розподілених системах. Алгоритм синхронізації логічних годин. Алгоритми взаємного виключення
Сегментний розподіл пам'яті | Сторінково-сегментний розподіл пам'яті. свопінг | Ієрархія запам'ятовуючих пристроїв. Принцип кешування даних | драйвери пристроїв | Імена файлів. типи файлів | Логічна організація файлу. Фізична організація і адреса файлу | | Загальна модель файлової системи. Сучасні архітектури файлових систем | Файлові системи FAT, FAT32 і HPFS | Управління розподіленими ресурсами |