Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
практична робота 6.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
121.86 Кб
Скачать

Поняття мультиплексування. Мультиплексування повідомлень. Модель взаємодії процесів клієнт-сервер. Нерівноправність клієнта і серверу

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

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

  • Сервер чекає запиту від клієнтів, ініціатором же взаємодії є клієнт.

  • Як правило, клієнт звертається до одного серверу за раз, тоді як до серверу можуть одночасно поступати запити від декількох клієнтів.

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

Розглянемо наступну схему мультиплексування повідомлень через одну чергу повідомлень для моделі клієнт-сервер. Хай сервер одержує з черги повідомлень тільки повідомлення з типом 1. До складу повідомлень з типом 1, посиланих серверу, процеси-клієнти включають значення своїх ідентифікаторів процесу. Прийнявши повідомлення з типом 1, сервер аналізує його зміст, виявляє ідентифікатор процесу, що послав запит, і відповідає клієнту, посилаючи повідомлення з типом, рівним ідентифікатору запрошуючого процесу. Процес-клієнт після відправлення запиту чекає відповіді у вигляді повідомлення з типом, рівним своєму ідентифікатору. Оскільки ідентифікатори процесів в системі різні, і жоден призначений для користувача процес не може мати PID рівний 1, всі повідомлення можуть бути прочитані тільки тими процесами, яким вони адресовані. Якщо обробка запиту займає тривалий час, сервер може організовувати паралельну обробку запитів, породжувати для кожного запиту новий процес-дитина або нову нитку виконання.

Використовування черг повідомлень для синхронізації роботи процесів

В лекції 6 була доведена еквівалентність черг повідомлень і семафорів в системах, де процеси можуть використовувати пам'ять, що розділяється. Зокрема, було показано, як реалізувати семафори за допомогою черг повідомлень. Для цього вводився спеціальний синхронізуючий процес-сервер, обслуговуючий змінні-лічильники для кожного семафора. Процеси-клієнти для виконання операції над семафором посилали процесу-серверу запити на виконання операції і чекали відповіді для продовження роботи. Тепер ми знаємо, як це можна зробити в операційній системі UNIX і як, отже, можна використовувати черги повідомлень для організації взаємовиключає і взаємної синхронізації процесів.