69758

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

Лекция

Информатика, кибернетика и программирование

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

Украинкский

2014-10-09

38 KB

1 чел.

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

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

Канали

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

Розрізняють безіменні та поіменовані канали.

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

До поіменованих каналів (named pipes) є доступ за іменем. Такому каналу може відповідати, наприклад, файл у файловій системі, при цьому будь-який процес, який має доступ до цього файла, може обмінюватися даними через відповідний канал. Поіменовані канали реалізують непрямий обмін даними.

Обмін даними через канал може бути однобічним і двобічним.

Приклади використання поіменованих каналів будуть наведені в розділі 11, безіменних — у розділі 17.

Черги повідомлень

Іншою технологією асинхронного непрямого обміну даними є застосування черг повідомлень (message queues) [37, 52]. Для таких черг виділяють спеціальне місце в системній ділянці пам'яті ОС, доступне для застосувань користувача. Процеси можуть створювати нові черги, відсилати повідомлення в конкретну чергу й отримувати їх звідти. Із чергою одночасно може працювати кілька процесів. Повідомлення - це структури даних змінної довжини. Для того щоб процеси могли розрізняти адресовані їм повідомлення, кожному з них присвоюють тип. Відіслане повідомлення залишається в черзі доти, поки не буде зчитане. Синхронізація під час роботи з чергами схожа на синхронізацію для каналів.

Сокети

Найрозповсюдженішим методом обміну повідомленнями є використання сокетів (sockets). Ця технологія насамперед призначена для організації мережного обміну даними, але може бути використана й для взаємодії між процесами на одному комп'ютері (власне, мережну взаємодію можна розуміти як узагальнення IPC).

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

Особливості протоколу передавання даних і формування адреси сокету визначає комунікаційний домен; його потрібно зазначати під час створення кожного сокету. Прикладами доменів можуть бути домен Інтернету (який задає протокол зв'язку на базі TCP/IP) і локальний домен або домен UNIX, що реалізує зв'язок із використанням імені файла (подібно до поіменованого каналу). Сокет можна використовувати у поєднанні тільки з одним комунікаційним доменом. Адреса сокету залежить від домену (наприклад, для сокетів домену UNIX такою адресою буде ім'я файла).

Способи передавання даних через сокет визначаються його типом. У конкретному домені можуть підтримуватися або не підтримуватися різні типи сокетів.

Наприклад, і для домену Інтернет, і для домену UNIX підтримуються сокети таких типів:

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

дейтаграмні (datagram sockets) — задають ненадійний двобічний обмін повідомленнями із виділенням меж (операція читання даних повертає розмір того повідомлення, яке було відіслано).

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

Перед тим як почати працювати з сокетами, будь-який процес (і клієнт, і сервер) має створити сокет за допомогою системного виклику socket (). Параметрами цього виклику задають комунікаційний домен і тип сокету. Цей виклик повертає дескриптор сокету — унікальне значення, за яким можна буде звертатися до цього сокету.

Подальші дії відрізняються для сервера і клієнта. Спочатку розглянемо послідовність кроків, яку потрібно виконати для сервера.

Сокет пов'язують з адресою за допомогою системного виклику bind(). Для сокетів домену UNIX як адресу задають ім'я файла, для сокетів домену Інтерне-ту - необхідні характеристики мережного з'єднання. Далі клієнт для встановлення з'єднання й обміну повідомленнями має буде вказати цю адресу.

Сервер дає змогу клієнтам встановлювати з'єднання, виконавши системний виклик listen() для дескриптора сокету, створеного раніше.

Після виходу із системного виклику 1іsten() сервер готовий приймати від клієнтів запити на з'єднання. Ці запити вишиковуються в чергу. Для отримання запиту із цієї черги і створення з'єднання використовують системний виклик accept(). Внаслідок його виконання в застосування повертають новий сокет для обміну даними із клієнтом. Старий сокет можна використовувати далі для приймання нових запитів на з'єднання. Якщо під час виклику accept () запити на з'єднання в черзі відсутні, сервер переходить у стан очікування.

Для клієнта послідовність дій після створення сокету зовсім інша. Замість трьох кроків досить виконати один — встановити з'єднання із використанням системного виклику connect(). Параметрами цього виклику задають дескриптор створеного раніше сокету, а також адресу, подібну до вказаної на сервері для виклику bind ().

Після встановлення з'єднання (і на клієнті, і на сервері) з'явиться можливість передавати і приймати дані з використанням цього з'єднання. Для передавання даних застосовують системний виклик send(), а для приймання — recv().

Зазначену послідовність кроків використовують для встановлення надійного з'єднання. Якщо все, що нам потрібно, - це відіслати і прийняти конкретне повідомлення фіксованої довжини, то з'єднання можна й не створювати зовсім. Для цього як відправник, так і одержувач повідомлення мають попередньо зв'язати сокети з адресами через виклик bind(). Потім можна скористатися викликами прямого передавання даних: sendto() - для відправника і recvfromO - для одержувача. Параметрами цих викликів задають адреси одержувача і відправника, а також адреси буферів для даних.

Докладніше використання сокетів буде описано в розділі 16.

Віддалений виклик процедур

Технологія віддаленого виклику процедур (Remote Procedure Call, RPC) [37, 50, 52, 57] є прикладом синхронного обміну повідомленнями із підтвердженням отримання. Розглянемо послідовність кроків, необхідних для обміну даними в цьому разі.

Операцію send оформляють як виклик процедури із параметрами.

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

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

Обчислений результат повертають відправникові як окреме повідомлення.

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

Приклади використання віддаленого виклику процедур будуть нами розглянуті в розділі 20.

Контрольні питання:

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

2. Канали.

3. Черги повідомлень.

4. Сокети.

5. Типи сокетів.

6. Віддалений виклик процедур.


 

А также другие работы, которые могут Вас заинтересовать

33073. Класична німецька філософія 14.81 KB
  Німецька класична філософія охоплює порівняно короткий період який обмежений 80ми роками XVIII століття з одного боку і 1831 роком роком смерті Гегеля з іншою або пізнішою антропологічною матеріалістичною філософією Фейєрбаха який проте увійшов до протиріччя з основним характером німецької філософії цього періоду її ідеалізмом. Основними представниками цієї філософії були основоположник її Иммануил Кант його послідовник Фихте Шеллинг супротивник кантіанської філософії Георг Вільгельм Фрідріх Гегель. Що стосується загальної...
33074. Родоначальником німецької класичної філософії є Іммануїл Кант 13.37 KB
  До Канта вважали що пізнання є результатом дій на людину зовнішніх чинників. Кант перевернув це співвідношення: він проголосив що пізнання і знання є результатом людської насамперед розумової активності. Аналогія з коперниканським переворотом тут цілком очевидна: Коперник зрушив Землю яку до того розглядали нерухомим центром Всесвіту а Кант зрушив людину поклавши край її пасивності.
33075. Система і метод філософії Гегеля 13.77 KB
  Вихідним пунктом філософської концепції Гегеля є тотожність буття та мислення. Мислення з точки зору Гегеля є не лише суб'єктною людською діяльністю а й незалежною від людини об'єктивною сутністю першоосновою всього сущого. Мислення стверджує Гегель відчужує своє буття у формі матерії природи яка є інобуттям цього об'єктивно існуючого мислення або абсолютної ідеї. При цьому Гегель розглядає мислення абсолютну ідею не як нерухому незмінну першосутність а як процес неперервного розвитку пізнання як процес сходження від нижчого до...
33076. Глибоким критиком ідеалістичної системи Гегеля став Л. Фейєрбах, його сучасник, учень, який, однак, не став послідовником свого вчителя 13.54 KB
  Великі зміни в історії суспільства вважав філософ пояснюються змінами форм релігії. Будучи глибоким критиком релігії що існувала на той час Фейєрбах намагався створити свою нову релігію в якій замість культу Бога буде панувати культ людини і любові. Фейєрбах запропонував відмінне від традиційного розуміння філософії її минулого та сучасності ролі в суспільстві і ставлення до релігії. Водночас і сама філософія повинна змінитися: вона не має стати простим чи негативним в гегелівському розумінні запереченням релігії.
33077. Загальна характеристика сучасної світової парадигми 14.29 KB
  Характерна ознака цієї філософії безмежна віра в розум. Особливістю класичної філософії також те що розглядаючи людину та історію вона сконцентрувала свою увагу навколо проблеми свободи та інших гуманістичних цінностей і стверджувала необхідність раціонального пізнання загальнолюдських моральних принципів та ідеалів. Для сучасної філософії характерні такі суттєві риси. цей стиль філософствування починає домінувати в західній філософії; філософію мислення замінює філософія життя .
33078. Прагматизм 12.09 KB
  Дьюі 18591952 вважають що філософія повинна займатись не проблемами філософів а “людськими проблемами†тобто цілями та засобами їх вирішення і таким чином повинна бути перетворена в інтересах того що є вигідним для життя людини. Людина повинна діяти у ірраціональному світі та спроби досягнути обєктивної істини є безглуздими.
33079. Філософія життя 13.85 KB
  Найбільшого поширення філософія життя набула в першій чверті XX ст. Представниками філософії життя є Фрідріх Ніцше 18441900 Анрі Бергсон 18591941 Вільгельм Дільтей 18331911 Георг Зіммель 18581918 Освальд Шпенглер 18801936 та ін. Філософія життя розглядає все що існує як форму прояву життя .
33080. Зіґмунд Фройд 15.06 KB
  Як лікарпсихіатр Зіґмунд Фройд 18561939 досліджував причини і методи лікування неврозів психічних розладів для чого й розробив метод психоаналізу. Фройд першим в історії західної філософії обґрунтував учення про те що людська свідомість яка доти вважалася цілісною єдністю що панує над усіма іншими людськими якостями насправді є складним багаторівневим явищем де власне свідомості відводиться далеко не перше місце.Згідно з фройдівською концепцією у структурі особистості виділяються три елементи: Воно неусвідомлена...
33081. Екзистенціалізм 14.48 KB
  exstenti існування. який визначив три рівні на шляху до справжнього існування: етичний акцентування обов'язку естетичний настанова на насолоду релігійний страждання прилучення до долі Христа як принцип життєвої діяльності. Екзистенціалісти акцентують увагу на індивідуальному самовираженні людини твердять що людина XX століття переживає абсурдність існування відчуженість тому невдоволена перебуває у відчаї. Онишкевич для повного осягнення справжнього сенсу свого існування людина повинна пройти такі етапи: етап відчуття...