- •Розподілені системи
- •Історична довідка
- •Базові терміни та визначення
- •Телекомунікаційні мережі як елемент розподілених систем
- •Модель клієнт–сервер
- •1.3. Особливості розподілених систем
- •Переваги розподілених систем
- •Недоліки розподілених систем
- •Класифікація розподілених систем
- •Характеристики розподілених систем
- •Висновки
- •Запитання для самоконтролю
- •Розподілене середовище
- •Концепції апаратних рішень
- •Архітектура багатопроцесорних систем
- •Системи зі спільною пам’яттю
- •Системи з роздільною пам’яттю
- •Топології багатопроцесорних систем
- •Концепції програмних рішень
- •Та засобів проміжного рівня
- •Операційні системи й розподіленість
- •Проміжне середовище
- •2.5. Поняття розподіленого середовища
- •Розподіл прикладних програм за рівнями
- •Варіанти архітектури клієнт–сервер
- •Програмні компоненти розподілених систем
- •Основи мережної взаємодії
- •2.6. Взаємодія компонент розподіленої системи
- •Концепції взаємодії компонент розподіленої системи
- •Обмін повідомленнями
- •Віддалений виклик процедур
- •Використання віддалених об’єктів
- •Розподілені події
- •Розподілені транзакції
- •Безпека в розподілених системах
- •Опис інтерфейсу програмної компоненти
- •Мова і схеми Extensible Markup Language
- •Soap: мова повідомлень розподіленої системи
- •Wsdl: опис інтерфейсу програмної компоненти
- •Базові технології подання інформації в розподілених системах
- •Вимоги до прикладних програм серверної сторони
- •Висновки
- •Запитання для самоконтролю
- •Рівні протоколів
- •Низькорівневі протоколи
- •Транспортні протоколи
- •Протоколи верхнього рівня
- •Віддалений виклик процедур
- •Виклик локальної процедури та повернення результату
- •Звертання до віддалених об’єктів
- •Розподілені об’єкти
- •Прив’язка клієнта до об’єкта
- •Статичне й динамічне віддалене звертання до методів
- •Передача параметрів
- •1.4 Зв’язок на основі потоків даних
- •Підтримка безперервних середовищ
- •Потік даних
- •Синхронізація потоків даних
- •1.5 Протоколи проміжного рівня
- •Протокол soap
- •Сімейство протоколів xmpp
- •Протокол umsp
- •Висновки
- •Запитання для самоконтролю
- •2. Процеси
- •Потоки виконання. Визначення і структура
- •Стан процесів та потоків виконання
- •Реалізація потоків виконання
- •Потоки виконання в нерозподілених системах
- •Потоки виконання в розподілених системах
- •Багатопотокові клієнти
- •Багатопотокові сервери
- •Інтерфейси користувача
- •Клієнтське програмне забезпечення і прозорість розподілу
- •4.6 Сервери
- •Підходи до побудови серверів прикладного програмного забезпечення
- •Сервери об’єктів
- •Частина 2
- •Представлення додатка розподіленної системи
- •Рівнева організація додатку
- •Рівнева організація, застосування, виділення рівнів
- •Використання рівня Сервісів(Services Layer)
- •Дизайн рівневої структури
- •Вибір стратегії розбиття на рівні
- •Визначення наскрізної функціональності
- •Визначення інтерфейсу між рівнями
- •Вибір стратегії реалізації і впровадження
- •Вибір протоколів взаємодії
- •3. Дизайн Рівню Представлення
- •Дизайн рівня представлення включає наступні кроки:
- •Специфічні проблеми дизайну рівня представлення
- •Кешування
- •Комунікації
- •Композиція
- •Управління виключеннями
- •User Experience(Зручність Використання)
- •Інтерфейс користувача
- •Перевірка даних вводу користувача (Validation)
- •Batching(Пакетування)
- •З'єднання
- •Формат даних
- •Управління виключеннями
- •Реляційне відображення об'єктів(Object Relational Mapping)
- •Процедури, що зберігаються
- •Транзакції
- •Перевірка вводу
- •Типи бізнес-процесів
- •Загальні правила складання сміття:
- •Вибір стратегії визначення виключень
- •Стратегія протоколювання виключень
- •Стратегія повідомлення про виключення
- •Ухвалення рішення про необхідність обробки необроблених виключень
- •Спеціальні питання проектування
- •Аутентифікація
- •Авторизація
- •Кешування
- •Мережева взаємодія
- •Управління конфігурацією
- •Управління виключеннями
- •Протоколювання
- •Управління станом
- •Проблеми, які виникають при проектуванні взаємодії
- •Загальні завдання проектування стратегії зв'язку
- •Обмін файлами
- •Розподілена база даних
- •Виклик видалених процедур
- •Обмін повідомленнями
- •Процедура передачі повідомлення включає 5 основних етапів:
- •Комерційні системи обміну повідомленнями
-
Потоки виконання. Визначення і структура
Незважаючи на те, що процеси є будівельними блоками розподілених систем, практика показує, що надмірний поділ на процеси негативно впливає на продуктивність системи. Натомість поділ у вигляді декількох потоків виконання (threads) в одному процесі суттєво спрощує побудову розподілених програмних систем і дозволяє досягти кращої продуктивності. Розглянемо роль потоків виконання в розподілених системах.
Будь-який потік складається з двох компонентів: об’єкта ядра, через який операційна система керує потоком і в якому зберігається статистична інформація про потік (додаткові потоки створюються також ядром); стека потоку, який містить параметри всіх функцій і локальні змінні, необхідні по- току для виконання коду.
Процес 1 Процес 1 Процес 1
Потік
Потік
Ядро
Ядро
Рис. 4.2. Структура потоку виконання
Основна відмінність процесів від потоків полягає в тому, що процеси, ізольовані один від одного, функціонують у різних адресних просторах, а потоки можуть використовувати один і той самий простір (усередині процесу), виконуючи дії та не заважаючи один одному.
Потік виконання є подібним процесу, зокрема тим, що його можна розглядати як програму, яка виконується на віртуальному процесорі, але, на відміну від процесу, не можна досягти високої міри прозорості паралельно- го виконання потоків, оскільки це призводить до спадання продуктивності. Система потоків виконання зазвичай забезпечує лише той мінімум інфор- мації, який дозволяє спільно використовувати процесор для різних потоків виконання, зокрема контекст потоку виконання (thread context) іноді міс- тить контекст процесора і деяку іншу інформацію, необхідну для керування потоком виконання.
Приклад. Система потоків може відстежувати факт блокування потоку змінною
алгоритму, наприклад «Mutual execution», і зумовлену цим неможливість пе- ремикання на виконання такого потоку.
Інформація, що не є абсолютно необхідною для керування численними потоками, зазвичай ігнорується. З цієї причини завдання захисту даних від несанкціонованого доступу у потоках виконання одного процесу покладено на розробників прикладного програмного забезпечення.
У такому підході є два аспекти: по-перше, високої продуктивності бага- топотокових програмних засобів можна досягти з набагато меншими зусил- лями, ніж у разі їх однопотокового аналога, тобто багатопотокові системи зазвичай дають виграш у продуктивності; по-друге, оскільки потоки вико- нання одного процесу не захищаються автоматично один від одного, розробка багатопотокових програмних засобів потребує додаткових зусиль.
-
Стан процесів та потоків виконання
У багатозадачній (багатопроцесорній) системі процес може перебувати в одному з трьох основних станів:
-
виконання – активний стан процесу, в якому процес має всі необхідні ресурси і безпосередньо виконується процесором;
-
очікування – пасивний стан процесу, в якому процес заблокований, не може виконуватися через внутрішні причини, тому він чекає здійснення певної події, наприклад завершення операції введення-виведення, отримання повідомлення від другого процесу, звільнення якого-небудь необхідного йому ресурсу;
-
готовність – також пасивний стан процесу, але в цьому разі процес заблокований у зв’язку із зовнішніми відносно нього обставинами: процес має всі необхідні для нього ресурси, він готовий виконуватися, однак проце- сор здійснює виконання другого процесу.
Протягом життєвого циклу кожен процес переходить з одного стану в другий відповідно до алгоритму планування процесів, реалізованого в опера- ційній системі. Типовий граф станів процесу показано на рис. 4.3.
Рис. 4.3. Типовий граф станів процесів
У стані виконання в однопроцесорній системі може перебувати лише один процес, а в кожному зі станів очікування і готовності – кілька процесів, які утворюють відповідні черги процесів у стані готовності й очікування.
Життєвий цикл процесу починається зі стану готовності, коли процес готовий до виконання і чекає своєї черги. У разі активізації процес переходить у стан виконання й перебуває в ньому доти, поки він сам звільнить процесор, перейшовши у стан очікування якої-небудь події, або його буде насильно
«витиснено» із процесора, наприклад унаслідок вичерпання відведеного цьо- му процесу кванта процесорного часу, в цьому разі процес повертається у стан готовності. У цей же стан процес переходить зі стану очікування після того, як очікувана подія відбудеться.