- •Лекція №3
- •Розподілені сервісні системи
- •Тема 3. Процеси в розподілених сервісних системах.
- •6. Сервери.
- •7. Перенесення коду.
- •9. Програмні агенти.
- •1. Поняття процесу. Визначення і структура.
- •2. Потоки виконання. Визначення і структура.
- •3. Стан процесів та потоків виконання
- •4. Реалізація потоків виконання
- •4.1. Потоки виконання в нерозподілених системах
- •4.2. Потоки виконання в розподілених системах
- •4.3. Багатопотокові клієнти
- •4.4. Багатопотокові сервери
- •5.1. Інтерфейси користувача
- •5.2. Клієнтське програмне забезпечення і прозорість розподілу
- •6. Сервери
- •6.1. Підходи до побудови серверів прикладного програмного забезпечення
- •6.2. Сервери об’єктів
- •7. Перенесення коду
- •7.1. Підходи до перенесення коду
- •7.2. Моделі перенесення коду
- •8. Перенесення коду в гетерогенних системах
- •9. Програмні агенти
- •10.1. Програмні агенти в розподілених системах
- •10.3. Мови взаємодії агентів
- •Запитання для самоконтролю
10.3. Мови взаємодії агентів
У платформі агентів є своя специфіка. Відмінність агентного підходу від інших підходів до побудови розподілених систем стає зрозумілою під час розгляду характеру інформації, якою обмінюються агенти. Зв’язок між агентами відбувається за допомогою комунікаційного протоколу прикладного рівня, відомого під назвою мови взаємодії агентів ACL (Agent Communication Language). B ACL властиво чітке розділення між метою повідомлення і його змістом. Повідомлення може мати лише обмежений набір цілей.
Приклад. Метою повідомлення може бути запит на надання отримувачем певної служби, відповідь на раніше надіслане повідомлення із запитом, а також повідомлення сторони, яка його приймає, про подію, що сталася, або про певну пропозицію в ході узгодження.
В ACL агент-відправник і агент-одержувач однаково розуміють мету повідомлення, від якої зазвичай залежить реакція одержувача.
ВИСНОВКИ
Процеси відіграють фундаментальну роль у розподілених системах, оскільки вони формують базис для зв'язку між різними машинами.
Важливою є внутрішня організація процесів, зокрема чи здатні вони підтримувати декілька керуючих потоків виконання, які в розподілених системах використовуються для продовження роботи з процесором під час блокуючих операцій введення-виведення. Ефективною є побудова серверів, в яких декілька потоків виконання працюють одночасно, причому деякі з них можуть бути блоковані в очікуванні виконання дискових операцій введення-виведення або операцій мережної взаємодії.
Організацію розподілених програмних комплексів виконують у вигляді клієнтів і серверів. Клієнтський процес зазвичай реалізує призначений для користувача інтерфейс, який може варіюватися від простого виведення інформації до розширених інтерфейсів, здатних підтримувати документи складної структури. Клієнтське програмне забезпечення здатне підтримувати прозорість розподілу, приховуючи деталі, що стосуються зв’язку із серверами, поточного місця розташування серверів і реплікації серверів, а також частково приховати збої і процеси відновлення після збоїв.
У процесі побудови серверів застосовують різні архітектурні моделі. Сервери можуть бути інтерактивними або паралельними, реалізовувати одну або декілька служб, зберігати інформацію про стан або не зберігати. Архітектурні особливості впливають на адресацію служб і механізмів переривання серверів після надходження запиту на обслуговування і в ході його виконання.
Сервери об’єктів виокремлено в особливий клас. Сервер об’єктів – це процес, який містить об’єкти, розміщені в його власному адресному просторі, і готовий приймати направлені до них звернення. В окрему категорію сервери об’єктів виділяють завдяки різноманітності способів звернення до об’єктів. Сервер може запустити окремий потік виконання для кожного запиту до об’єкта, але й може надати кожному об’єкту власний потік виконання або залишити єдиний потік виконання для всіх своїх об’єктів. За допомогою адаптера об’єктів у різних серверах може бути реалізована різна політика звернення до об’єкта. На сервері може бути декілька адаптерів об’єктів.
Важливою для розподілених систем функціональною властивістю є перенесення коду з машини на машину, для застосування якого є дві вагомі причини – підвищення продуктивності й мобільність. Інколи є потреба зменшити рівень взаємодії за рахунок перенесення обчислень з сервера на клієнта. Гнучкість зростає, коли клієнт має можливість динамічно завантажувати програмне забезпечення, необхідне для роботи з конкретним сервером. Завантажене програмне забезпечення може бути вже налаштованим на взаємодію із цим сервером, позбавляючи клієнта необхідності повторно встановлювати його до початку роботи.
Під час перенесення коду виникає проблема, пов’язана з використанням локальних ресурсів, тому, що ці ресурси також необхідно переносити на інші машини, організовувати нові прив’язки коду до локальних ресурсів цільової машини або застосовувати глобальні посилання. Друга проблема полягає в тому, що під час перенесення коду слід ураховувати гетерогенність системи. Практика показує, що найкраще будувати систему у гетерогенному середовищі, використовуючи віртуальні машини, які ефективно приховують гетерогенність за допомогою коду, що інтерпретується.
Програмні агенти – спеціальний вид процесів, що працюють як автономні модулі, здатні кооперуватися з іншими агентами. З точки зору розподілених систем, відмінність агентів від звичайних програмних засобів полягає у тому, що агенти взаємодіють один з одним за допомогою комунікаційного протоколу прикладного рівня, який називають мовою взаємодії агентів (ACL) та у якому передбачено чітке відокремлення мети повідомлення і його змісту.
Завідувач кафедри КСКСТ Г.М. Власенко
