Методи передавання повідомлень



В основі методів передавання повідомлень (message passing) лежать різні технології, що дають змогу потокам різних процесів (які, можливо, виконуються на різних комп’ютерах) обмінюватися інформацією у вигляді фрагментів даних фіксованої довжини, котрі називають повідомленнями (messages). Процеси можуть приймати і відсилати повідомлення, при цьому автоматично забезпечується їхнє пересилання між адресними просторами процесів одного комп’ютера або через мережу. Важливою особливістю технологій передавання повідомлень є те, що вони не спираються на спільно використовувані дані – процеси можуть обмінюватися повідомленнями, навіть не знаючи один про одного.

Технологія відображуваної пам’яті

Ще однією категорією засобів міжпроцесової взаємодії є відображувана пам’ять (mapped memory). У ряді ОС відображувана пам’ять є базовим системним механізмом, на якому ґрунтуються інші види міжпроцесової взаємодії та системні вирішення. Звичайно ввідображувану пам’ять використовують у поєднанні з інтерфейсами файлової системи, в такому разі говорять про файли, відображувані у пам’ять (memory-mapped files).

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

Особливості міжпроцесової взаємодії

Тепер можна порівняти характеристики міжпроцесової взаємодії із характеристиками взаємодії потоків одного процесу.

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

· Проблема синхронізації доступу до спільно використовуваних даних є актуальною для взаємодії потоків і для міжпроцесової взаємодії із використанням розподілюваної пам’яті. Використання механізму передавання повідомлень не ґрунтується на спільно використовуваних даних.

Базові механізми міжпроцесової взаємодії

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

Міжпроцесова взаємодія на базі спільної пам’яті

Для вирішення проблеми міжпроцесової синхронізації необхідно:

1. організувати спільну пам’ять між процесами (це може бути розподілювана пам’ять або файл, відображений у пам’ять);

2. розмістити в цій пам’яті стандартні синхронізаційні об’єкти (семафори, м’ютекси, умовні змінні);

3. використовуючи ці об’єкти, працювати зі спільно використовуваними даними, як це робилося у разі використання потоків.

Такий підхід широко застосовують на практиці. На жаль, досить складно запропонувати спосіб його реалізації для міжпроцесової синхронізації у більшості систем, оскільки різні системи пропонують різний набір засобів організації спільної пам’яті та засобів сигналізації, які можуть працювати в такій пам’яті. Універсальним рішенням у даному разі є застосування семафорів.

Основи передавання повідомлень

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

Як було вже згадано, засоби передавання повідомлень ґрунтуються на обміні повідомленнями – фрагментами даних змінної довжини. Основою такого обміну є не спільна пам’ять, а канал зв’язку (communication channel). Він забезпечує взаємодію між процесами (для того, щоб спілкуватися, вони повинні створити канал зв’язку) і є абстрактним відображенням мережі зв’язку. Абстрактність каналу дає змогу реалізувати його не тільки на основі мережної взаємодії, але й спільної пам’яті (коли процеси перебувають на одному комп’ютері). При цьому такі зміни в реалізації будуть сховані від процесів, що взаємодіють.

Виокремлюють такі характеристики каналів зв’язку: спосіб задання; кількість процесів, які можуть бути з’єднані одним каналом; кількість каналів, які можуть бути створені між двома процесами; пропускна здатність каналу (кількість повідомлень, які можуть одночасно перебуватив системі й бути асоційованими з цим каналом); максимальний розмір повідомлення; спрямованість зв’язку через канал (двобічний або однобічний зв’язок).

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


Дата добавления: 2018-04-05; просмотров: 536; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!