Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




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

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

Методи розподілюваної пам'яті

Методи розподілюваної пам'яті (shared memory) дають змогу двом процесам об­мінюватися даними через загальний буфер пам'яті. Перед обміном даними кож­ний із тих процесів має приєднати цей буфер до свого адресного простору з ви­користанням спеціальних системних викликів (перед цим перевіряють права). Буфер доступний у системі за допомогою процедури іменування, термін його іс­нування звичайно обмежений часом роботи всієї системи. Дані в ньому фактично є спільно використовуваними, як і для потоків. Жодних засобів синхронізації доступу до цих даних розподілювана пам'ять не забезпечує, програміст, так само, як і при розробці багатопотокових застосувань, має організовувати її сам.

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

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

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

Файли, відображувані у пам'ять, будуть докладно розглянуті в розділі 11.

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

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

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

 

 

3.

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

§ по-перше, організувати спільну пам'ять між процесами (це може бути розпо­ділювана пам'ять або файл, відображений у пам'ять);

§ по-друге, розмістити в цій пам'яті стандартні синхронізаційні об'єкти (семафо­ри, м'ютекси, умовні змінні);

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

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

 

Лекція №2.

 

Тема: механізм передачі повідомлень.

 

План:

 

 

1.Основи передавання повідомлень (Л1. ст. 151-152).

2.Примітиви передавання повідомлень (Л1. ст. 152).

3.Синхронне й асинхронне предавання повідомлень (Л1. ст. 152-153).

1.

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

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

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

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

 

2.

Основна особливість передавання повідомлень полягає в тому, що процеси спіль­но використовують тільки канали. Немає необхідності забезпечувати взаємне ви­ключення процесів під час доступу до спільно використовуваних даних, замість цього досить визначити примітиви передавання повідомлень — спеціальні опера­ції обміну даними через канал, які забезпечують не лише обмін даними, але й син­хронізацію.

Є два примітиви передавання повідомлень: send (для відсилання повідомлен­ня каналом) і гесеі ve (для отримання повідомлення з каналу).

Розглянемо, як особливості реалізації send і гесеі ve дають змогу виділити різ­ні класи методів передавання повідомлень.

Зазначені примітиви передавання повідомлень можуть задавати прямий і не­прямий обмін даними. При прямому обміні даними необхідно явно вказувати процес, з яким необхідно обмінюватись інформацією. Непрямий обмін здійснюють через спеціальний об'єкт (поштову скриньку, порт); процеси можуть поміщати повідомлення в поштову скриньку і отримувати їх звідти. Зазвичай кілька процесів мають доступ до однієї поштової скриньки, застосовуючи під час її пошуку мето­ди іменування. Більшість сучасних технологій обміну повідомленнями використо­вує непрямий обмін даними. Прикладом прямого обміну є традиційні сигнали.

 

3.

Зупинимося на основних питаннях синхронізації під час передавання повідомлень. Можна виокремити різні групи методів передавання повідомлень залежно від то­го, як вони дають можливість відповісти на два запитання.

1. Чи може потік бути призупинений під час виконання операції send, якщо пові­домлення не було отримане?

2.Чи може потік бути призупинений під час виконання операції receive, якщо повідомлення не було відіслане?

У реальних системах відповідь на друге запитання практично завжди буде по­зитивною неблокувальне приймання повідомлень спричиняється до того, що вони губляться. Варіанти відповідей на перше запитання визначають два класи передавання повідомлень - синхронне і асинхронне.

Під час синхронного передавання повідомлень операція send призупиняє про­цес до отримання повідомлення, а під час асинхронного передавання повідомлень вона не призупиняє процес (тобто є неблоісувальною); після відсилання повідомлення процес продовжує своє виконання, не чекаючи отримання результату. Найзручні­ше в цьому випадку використати непряму адресацію через поштові скриньки.

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

§ Якщо пропускна здатність дорівнює нулю (повідомлення не можуть очікува­ти в системі), відправник завжди має очікувати, поки одержувачу не надійде повідомлення, а одержувач має очікувати, поки повідомлення йому не буде ві­діслано. Два процеси мають явно домовлятися про майбутній обмін.

§ Якщо пропускна здатність обмежена (у системі можуть перебувати максимум п повідомлень для цього каналу), відправник має очікувати тільки тоді, коли черга повідомлень для цього каналу переповнена (у ній перебуває рівно n по­відомлень), одержувач має очікувати, якщо ця черга порожня.

§ Якщо пропускна здатність необмежена, очікування можливе тільки для одер­жувача за порожньої черги.

Під час обміну повідомленнями необхідне підтвердження їх отримання. Деякі методи обміну повідомленнями не вимагають підтвердження зовсім, в інших ви­падках можлива ситуація, коли відправника після виконання операції send блоку­ють доти, поки одержувач не надішле йому інше повідомлення із підтвердженням отримання; таку технологію називають обміном повідомленнями із підтверджен­ням отримання.

Лекція №3.

 

Тема: технології передавання повідомлень.

 

План:

 

 

1.Методи передавання повідомлень за допомогою каналів і черг (Л1 ст.154-155).

2.Методи обміну повідомленнями за допомогою сокетів (Л1. ст. 155-157).

3.Віддалений виклик процедур (Л1 ст. 157).

 

1.




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


Дата добавления: 2014-10-23; Просмотров: 1068; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.02 сек.